insim.rs is a suite of crates to help you work with LFS in Rust.
The intention is to provide an ergonomic, strongly typed, native rust implementation of insim and various file formats, rather than a thin layer over a series of bytes and primitive types.
Both blocking (sync) and Tokio-based async are supported (through feature flags), depending on your needs.
This was very much built for me and has become a passion project with no goal, or reason. But I hope that it can be useful for someone else.
The Future
I've got plans and ideas for the suite of crates, you can find them all here: https://github.com/theangryangel/insim.rs/issues. I do want to add Outsim, Outguage, MPR and SPR support.
However, my focus was to reach a stable API (v1.0.0) before the arrival of my 2 adopted daughters. I've just managed this, so I'll be giving them my complete focus for the next few months, at least.
Bugs and Pull Requests
Back in Feb 2021, I started work on this as an excuse to tinker with Rust after a Twitter conversation with Dygear. The original plan was just to bang out something quick and then build something fun with it.
Turns out that I enjoy a bit of yak shaving and didn't really get to the "build something" part.
There were a lot of long breaks, because of family life, and I spent an insane amount of time thinking about how to make it easy to use for people familiar with Rust and the original insim spec.
It turned out my original ideas weren't very sensible, and everything looks very different than what I had in mind originally.
Addressing that "Rewrite it in Rust" meme
I often use Insim as my "hello world" to a new language because it touches quite a number of areas.
I entered this saga thinking that I'd just bang out a library, as I've done before, and then move on. Mark Rust off the list of languages. I wouldn't publish it. I wouldn't do all the boring things like tests and documentation. I never set out to write the fastest, safest thing, in the new cool language.
I absolutely did not plan on spending a vast amount of time on this. It's completely insane. But somewhere along the way what I did find was a language which re-ignited my passion for programming, after spending years writing boring business software, for boring business people.
And I cannot explain it at all.
The intention is to provide an ergonomic, strongly typed, native rust implementation of insim and various file formats, rather than a thin layer over a series of bytes and primitive types.
Both blocking (sync) and Tokio-based async are supported (through feature flags), depending on your needs.
- The libraries are all published to crates.io.
- All libraries are documented on docs.rs (this could be massively improved, but I needed to get this out the door).
- You'll find examples in the git repo and simpler ones in the documentation.
This was very much built for me and has become a passion project with no goal, or reason. But I hope that it can be useful for someone else.
The Future
I've got plans and ideas for the suite of crates, you can find them all here: https://github.com/theangryangel/insim.rs/issues. I do want to add Outsim, Outguage, MPR and SPR support.
However, my focus was to reach a stable API (v1.0.0) before the arrival of my 2 adopted daughters. I've just managed this, so I'll be giving them my complete focus for the next few months, at least.
Bugs and Pull Requests
- If you have a bug, please log it against https://github.com/theangryangel/insim.rs/issues and I'll get to it when I can.
- Pull requests are very welcome, but if it's not aligned with the goals of the project then be prepared for rejection. If you want to do something significant/radical maybe reach out first.
Back in Feb 2021, I started work on this as an excuse to tinker with Rust after a Twitter conversation with Dygear. The original plan was just to bang out something quick and then build something fun with it.
Turns out that I enjoy a bit of yak shaving and didn't really get to the "build something" part.
There were a lot of long breaks, because of family life, and I spent an insane amount of time thinking about how to make it easy to use for people familiar with Rust and the original insim spec.
It turned out my original ideas weren't very sensible, and everything looks very different than what I had in mind originally.
Addressing that "Rewrite it in Rust" meme
I often use Insim as my "hello world" to a new language because it touches quite a number of areas.
I entered this saga thinking that I'd just bang out a library, as I've done before, and then move on. Mark Rust off the list of languages. I wouldn't publish it. I wouldn't do all the boring things like tests and documentation. I never set out to write the fastest, safest thing, in the new cool language.
I absolutely did not plan on spending a vast amount of time on this. It's completely insane. But somewhere along the way what I did find was a language which re-ignited my passion for programming, after spending years writing boring business software, for boring business people.
And I cannot explain it at all.