For those that thought the process of speeding up CRC was interesting, I strongly recommend reading [1]. It describes a step by step process on how a naive CRC implementation might be improved, until finally arriving at an implementation in assembly with a staggering throughput of 62 processed bits (almost 8 bytes) per CPU cycle. Yes, you read that right.
Yup, it's a fantastic read. I based most of my post off it (I clearly mention so) and it's worth it to read at least the first part of it before reading my post.
For what it's worth, it appears the paper "Everything we know about CRC but afraid to forget" was originally published as part of the release of crcutil on Google Code[1]. This is a hg repository with one commit that includes the paper, the source of the paper, and an implementation.
It's coming along.
I don't think anyone is using it for anything serious yet, but it is starting to feel like a real language.
My guess is that it will start being used as a library language (i.e. have libraries written in Mojo being called from Python) before it really gets going as its own thing.
For those that thought the process of speeding up CRC was interesting, I strongly recommend reading [1]. It describes a step by step process on how a naive CRC implementation might be improved, until finally arriving at an implementation in assembly with a staggering throughput of 62 processed bits (almost 8 bytes) per CPU cycle. Yes, you read that right.
[1]: https://github.com/komrad36/CRC
Yup, it's a fantastic read. I based most of my post off it (I clearly mention so) and it's worth it to read at least the first part of it before reading my post.
For what it's worth, it appears the paper "Everything we know about CRC but afraid to forget" was originally published as part of the release of crcutil on Google Code[1]. This is a hg repository with one commit that includes the paper, the source of the paper, and an implementation.
[1]: https://code.google.com/archive/p/crcutil/
Thanks! I'll add it to the post.
https://github.com/py2many/py2many/pull/653
Transpiling the python version in the blog to mojo gives me a 4x speedup.
Had to hand edit a couple of things:
With a bit more work, the manual edits won't be necessary.Generated code: https://gist.github.com/adsharma/22ec18664ce4a59750b78fddc58...
Edited code: https://gist.github.com/adsharma/72516d8333a25fd8e350472568d...
Oh! Cool project!
You mean 4x speedup over Python?
Yes. Details in the pull request linked above
How is mojo doing ? Has it made its way as a niche language in some places ?
It's coming along. I don't think anyone is using it for anything serious yet, but it is starting to feel like a real language.
My guess is that it will start being used as a library language (i.e. have libraries written in Mojo being called from Python) before it really gets going as its own thing.
and is it still closed source?
Yup, language is still closed, stdlib is open.