Hello from David Semakula - the creator of ink! analyzer.
I’m here with a few updates on adoption, short term development plans and future funding plans.
Adoption
The ink! analyzer VS Code extension recently hit an adoption milestone by reaching 300+ unique installs from the VS Code Marketplace .
I’d like to extend a big thank you to both the Web3 Foundation and the ink! lang team for sharing the project through their respective X/Twitter accounts.
And an extra thank you to the Web3 Foundation for funding all of ink! analyzer’s previous development with 2 generous grants, as well as other non-development related support.
What’s ink! analyzer?
ink! analyzer is a collection of modular and reusable libraries and tools for semantic analysis of ink! smart contracts.
In short, ink! analyzer is to ink!, what rust-analyzer is to Rust.
More technically, rust-analyzer is a Rust compiler frontend/semantic analyzer for IDEs that’s built on a lossless and resilient parser (this part is very important for IDE tooling because the program is essentially perpetually incorrect as you type in an IDE/editor).
So rust-analyzer “understands” core Rust language concepts (e.g. that a trait implementation like impl MyTrait for MyStruct {}
must define all the required associated items of the trait), and provides intelligent editing features to help you with those kinds of core Rust language features.
However, when it comes to Rust syntax extensions/DSLs like ink!'s attribute macros, when you annotate a mod
item with #[ink::contract]
, all rust-analyzer “knows” is that this is a custom attribute, it doesn’t “know” that an ink! contract mod
must have exactly one struct
item annotated with #[ink(storage)]
or any of the other semantic rules for ink! contracts, so this is where ink! analyzer comes in .
For a deeper dive on the problems ink! analyzer solves and technical details about it’s architecture, check out this detailed introductory blog post.
You can also check out this awesome X/Twitter thread from the ink! lang team for a quick walkthrough of ink! analyzer features.
Funding
As mentioned before, ink! analyzer has been previously funded by two Web3 Foundation grants.
However, with the project now relatively mature and having some significant adoption, I’m looking to move to a retroactive treasury funding model for future updates.
Short term plans
The first features that I’ll try to fund with this new model will be updates related to supporting new ink! v5 syntax and features that should be shipping (from the ink! lang side) in early March. These updates are already underway (from the ink! analyzer side), and should start showing up in all components (including the VS Code extension) some time next week.
What about FRAME?
Like ink!, FRAME is also a Rust DSL (Domain Specific Language), so from a technical perspective, it makes sense to bring similar features and tools to FRAME/Substrate developers as well.
The plan is to do just that with a retroative treasury funding model as well for that development.
However, since treasury funding is a not just a technical but also a political forum IMO, I’d like to use this opportunity to also informally “check the pulse” on interest from FRAME/Substrate developers.
I already know that there’s some interest from this reply from @kianenigma, but it’d be great to gauge interest from others as well .
Lastly, as always, issues, bug reports, PRs and feature requests are welcome at the respective GitHub repositories .