Our great sponsors
-
bitloops-language
Open-source transpiled programming language that helps you write clean code, well-designed systems, and build high-quality software that is testable, auditable and maintainable. Like what you see? Don't forget to star! :star: ^^^
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Totally agreed about FFI. I wanted to make it easy to interop with C code and write expressive bindings.
Check for example the language bindings to LLVM's C API (fairly low level) and Tree-Sitter which is used internally (a bit higher level bindings)
https://github.com/tibordp/alumina/tree/master/libraries/llv...
https://github.com/tibordp/alumina/blob/master/libraries/tre...
We are building a new language that is not for fun and we have thought of this important issue. We solve it with a Package Ports and Package Adaptors. The Bitloops Language (BL) is a transpiled language with support for only TypeScript at the moment. Nonetheless, if it picks up we will be adding support for Java, C#, and C++ so that people can leverage their investments in their existing packages.
https://github.com/bitloops/bitloops-language
Honestly, Tree Sitter is fantastic, I can highly recommend it. By far the most user friendly and powerful parser generator I've worked with. The C API is very nice.
The only two pain point I had is that the `node-types.json` that's generated only contains the names of the nodes, not the numerical IDs. This means that if you have some codegen generating Rust enums is difficult if you want to avoid matching nodes by string.
I wrote https://github.com/tibordp/tree-sitter-visitor for generating visitor traits in Rust for a given grammar. I actually did it a bit differently in the end for Alumina, but it might come useful.
Related posts
- Next generation software development platform with its own programming language. Write code and get visual overview of how your app is structured!
- Bitloops Language is now available on GitHub! Bitloops Language is a free, open source programming language that helps you build better quality software. Follow industry best practices and learn about Hexagonal Architecture, DDD, CQRS and more!
- A new DDD-focused programming language to make good software design and testing easier. What are your thoughts?
- Should we add Rust as a target language?
- Do you think Go transpilation should be something that we should prioritize?