7 ms·
Show HN: Lady Deirdre 2 – Rust Framework for Compilers and LSP Servers
Greetings!
I would like to share with you my project, Lady Deirdre.
Lady Deirdre is a framework that helps you create new programming languages in Rust. It is specifically designed to develop compilers and interpreters with support for code editor extensions (LSP servers) from day one.
The framework includes essential components to design parsers and semantic analyzers capable of incrementally reparsing dynamically evolving source code.
Lady Deirdre can be seen as a replacement for preexisting projects with similar goals, such as Tree-Sitter, Rowan, or Salsa. However, Lady Deirdre aims to offer a unified framework API that guides you through the steps of programming language development, providing even more components necessary to develop a full-featured language ecosystem. For example, components to develop a source code formatter.
I will be happy to answer any questions.
Ilya
- solarpunk 2y agoI like the Alpha Centauri reference here lol.
- WJW 2y agoI was just thinking about that haha. I'd think she's kinda the opposite of a rust lover though. (did you know the game + expansion are available for 4.99 on Steam and it runs out of the box on linux? Just saying)
- mdaniel 2y agoThe way the headline was written it seemed like this was the second iteration of Lady and not just a 2.0 release announcement It would have also gone a long way if you had mentioned the licensing, which I am always interested in: https://github.com/Eliah-Lakhin/lady-deirdre#copyright https://github.com/Eliah-Lakhin/lady-deirdre#copyright As for a question: why the seemingly needless location of everything down in a "work" folder? Is there something else that you envision one day living at the top-level which you just planned for by putting everything someone would care about one further click away?
- Eliah_Lakhin 2y agoYou are right, this is indeed the second iteration of the project. Since the first iteration (released about a year ago), many things have changed and been reworked. The most notable change is the introduction of the semantic-analysis framework. Lady Deirdre 1 was merely an incremental parser library. > why the seemingly needless location of everything down in a "work" folder? It's just easier for me to organize the filesystem this way on my local machine. Everything that is unrelated to the development is outside of the work directory. Also, the license agreement refers to the "work". Perhaps it would be clearer for users if the work directory is clearly dedicated. > Is there something else that you envision one day living at the top-level which you just planned for by putting everything someone would care about one further click away? Everything that I planned to publish that is related to Lady Deirdre is already in the repository. I use this project for my other programming language project that I plan to release soon, but it will be in a separate GitHub repo. Actually, Lady Deirdre initially was separated from the language project codebase as I thought it may be useful for other programming language authors.
- deleted 2y ago[deleted]
- samatman 2y ago[flagged]
- itishappy 2y agoThe readme does not claim to be open source. > This work is proprietary software with source-available code. > To copy, use, distribute, and contribute to this work, you must agree to the terms and conditions of the General License Agreement. It's pretty clear on the rights granted: > Please be aware that my work is proprietary software, intended for solo development. For this reason, the agreement requires you to automatically assign me the changes you make to my project's source code. > However, if you want to create an extension for my crate, you can develop a separate crate that uses my crate's public APIs through Cargo. In this case, you don't have to assign me your work, and you can distribute your project under any permissive license, such as the MIT license. These quotes are all pulled from the readme, and the last edit was 5 hours before your comment. Where's the lie?
- samatman 2y agoWhat I quoted is also from the README. You cannot use proprietary code in an open source project, and the README says you can. That is fundamentally dishonest. The sum of MIT licensed code which requires linking to proprietary code to function is not an open source project. It is a proprietary project with an open-source part. You cannot use this in an open source project. Period. Making that section of the FAQ honest would look like this: > Can I use Lady Diedre in an Open Source project? > No. Lady Diedre is not available via an open source license. > Can I use it in a noncommercial publicly-available project? > For now. The EULA clearly reserves my right to change the terms at any time, so if that risk is acceptable to you, you have my temporary permission to do so, subject to revocation at any time and without notice.
- itishappy 2y ago> The sum of MIT licensed code which requires linking to proprietary code to function is not an open source project. I don't think that's true or nothing compiled using MSVC could ever be open source. For example: Rust. > For now. The EULA clearly reserves my right to change the terms at any time, so if that risk is acceptable to you, you have my temporary permission to do so, subject to revocation at any time and without notice. Terms can be changed at any time, but you do not have to accept them. From the EULA: > You are not obligated to accept any new terms or amendments. In such a case, this Agreement will continue to govern your use of the Work you have already accessed under the original terms. However, if you do not accept the new terms or amendments, you will not be permitted to use any new versions, updates, upgrades, or modifications to the Work.
- armchairhacker 2y agoFirst, I really like language frameworks like this. I think it could become very useful and popular. That being said, I really doubt anyone will buy a commercial license. People don't sell compilers and IDEs, and the ones who do are large corporations who make everything themselves. Look at state of language tooling today: nearly every compiler is open-source, every language server is free, every IDE is free except JetBrains (a well-known company with a large reputation) and Sublime Text (being heavily replaced by VS Code), and anything not open-source has an active open-source alternative. Nobody's going to buy a license from you to sell their compiler, because nobody's planning to sell their compiler. For this reason I'd recommend changing the license. I don't think it's overly-restrictive or dishonest, I think it's fair to expect being paid if someone makes >$200,000 off your work. But nonetheless it hurts adoption, a lot of people will see "proprietary" and not even read the license text. You're more likely to make money distributing it as MIT / Apache, letting it get popular, and setting up donations/sponsorships to fund development. But honestly, if you're looking to make money this isn't the space to do so: you could be hired by someone to work on PL, or you could sell something like a game, but you're not going to sell your own PL.
- deleted 2y ago[deleted]
- Eliah_Lakhin 2y agoThank you for your feedback! I agree with your point about the licensing. I would also add that tools for the development of compiler front-ends are quite a niche market. So, honestly speaking, I don't plan to earn much from my project regardless of the license terms. This work is part of a higher-level in-progress toolset, which is closer to the end users. I have dedicated it as a separate project primarily for public preview, with some restrictions on distribution and use, as I haven't decided on the overall toolset distribution model yet. But it is possible that I will change the licensing terms of Lady Deirdre in the future to something less restrictive (maybe even MIT) to make it more popular, this is just not my current goal. I apologize for any inconvenience my current licensing terms may cause.
- 2y ago
- weinzierl 2y ago"replacement for preexisting projects with similar goals, such as Tree-Sitter, Rowan, or Salsa." To be a true replacement, there is at least one crucial feature missing: A LICENSE file that starts with "The MIT License (MIT)". Nothing against "source available" but thinking to have a chance to stand in for more permissively licensed projects is very much unrealistic.
- deleted 2y ago[deleted]
- vlovich123 2y agoIt’s amusing to me that we as a community both complain that OSS maintainers aren’t paid and then expect someone who’s making the source available to pick OSS. Let people try alternate funding models and honestly as a hacker community we should be a bit more supportive of the work required to bootstrap something.
- vendiddy 2y agoYeah I would like to see more ideas like this. I really hope there's a model out there for OSS at least where folks can get paid. I always wondered what if engineers had a $100/month budget to donate to OSS founders. It wouldn't cost an employer much and would be a good way to give back.
- hzakr 2y agoYeah I would like to see more ideas like this. I really hope there's a model out there for OSS at least where folks can get paid. I always wondered what if engineers had a $100/month budget to donate to OSS founders. It wouldn't cost an employer much and would be a good way to give back.
- eqvinox 2y ago> there is at least one crucial feature missing: A LICENSE file that starts with "The MIT License (MIT)". How much, monetarily, would you be willing to contribute to implement that feature?
- mtndew4brkfst 2y agoThank you to the commenters who highlighted the licensing. I would ordinarily be very interested in this premise but I don't want to risk unconsciously adapting ideas from what I read that could put me in tension with the terms or the author, and I can't use it directly.
- deleted 2y ago[deleted]
- williamcotton 2y agoAre you worried about copyright infringement?
- mtndew4brkfst 2y agoI'm basically trying to avoid situations where I might be legally obligated to prove a negative, that I did not take ideas or code from a proprietary yet source-available project that is topically very adjacent to some projects I work on. I write with Rust, use Rowan and tree-sitter crates, create LSP implementation, and so on. I don't have a retained lawyer or legal budget, so it's just risk aversion on my part to treat this project as radioactive and never once look inside. Same reason a lot of folks don't look at GPL'd things.
- deleted 2y ago[deleted]
- williamcotton 2y agoThe burden of proof is on the accuser so you never need to worry about proving a negative. Unless there are patents involved, and we’re just talking about possible copyright infringement, then you’re free to borrow the ideas just not the expressions. Which in practice means if you’re not blatantly copying then the proof of Structure, Similarity and Organization is prohibitively expense for the plaintiff.
- gsuuon 2y agoThis is cool, I think an integrated compiler and LSP is a great standard for new languages. I'd go one further though and say that syntax highlighting should also be part of that language core. This way you have a single source of truth wrt to that language: how it should look, what it means and how it runs. Tree-sitter is widely supported (both in editors and on web) for syntax highlighting as well as making semantic nodes available for external tools to interact with. Is there any chance you'd add a tree-sitter integration to this project? Or conversely, build out a compatible API that can be used with editors/tools that use tree-sitter's library? The licensing is a bit confusing - for example, what happens with open-source projects that use this that are then used in commercial projects?
- Eliah_Lakhin 2y ago> build out a compatible API that can be used with editors/tools that use tree-sitter's library? That's an interesting idea. Tree-Sitter and Lady Deirdre are quite different in their approaches to parsing. Tree-Sitter is a GLR parser, while Lady Deirdre is a recursive-descent parser. In the Lady Deirdre API, there are customizable traits that let you define new types of files with parsers ("documents" in terms of Lady Deirdre). Perhaps it would be possible to create an adapter, but I would implement it as a separate crate. > what happens with open-source projects that use this that are then used in commercial projects? Good question. The idea is that if you link to Lady Deirdre in the Cargo.toml dependencies, it is up to the commercial project authors. They will compile the actual executable intended for selling by downloading both your crate and my crate. However, I'm not a lawyer, and this is not legal advice. Just my thoughts.
- ilrwbwrkhv 2y ago[flagged]
- winter_blue 2y agoThis is awesome. Thank you!