Rue is a programming language designed as an alternative to Tezos's Lisp-based language for writing smart coins on the Chia blockchain. It addresses common Lisp syntax issues by providing a more familiar syntax similar to Rust and TypeScript, with key features including a type system that enforces type safety at compile time, a module system for organizing code across multiple files, and improved tooling such as language servers with auto-completion and debugging support. This enables developers to build more complex smart contracts with fewer runtime errors compared to traditional Lisp-based approaches.
Deep Dive
Prerequisite Knowledge
- No data available.
Where to go next
- No data available.
Deep Dive
Community Spotlight | RigidityAdded:
I'm going to go over them.
Yeah, so Rue is a programming language um kind of designed to be an alternative to Tezos.
Um it allows you to write programs on the Tezos chain that can be used to custody coins um in in your wallet.
And I would say there were several things I was trying to accomplish with it. Um first of all, I I don't really like the syntax of Lisp in general, not just Tezos, but it's too many parentheses if I'm being frank.
>> [laughter] >> I didn't find it um easy to easy for people to learn and um yeah, I I just wanted a language that was more similar to things that I was used to like Rust the TypeScript for example.
Um and yeah, I I I can get into more details later, but having a language with type safety um and auto completion and things like that really helps a lot in development, I think.
>> have really appreciated kind of the work that you've done done with it.
Um I think it was about a year ago when we first had you on and we talked about Rue and maybe it was a little little over that. Um During that time, I don't know what state I kind of forget what what state Rue is in at the time, but what has the progress been since then? What what what new things can we talk about um >> Yeah.
>> since then?
>> I've been working on it for a few years now and I think back then um I had I'd rewritten it like three or four times from scratch. Like I could not settle on a final design and I think back when I did the first spotlight was when I finally nailed down what the design of Rue was going to be and I had like a first version of the compiler.
Um but it wasn't mature to the point that it is now.
Um since then I've added a lot of things like I've improved the language server substantially. Um it now has features that you'd expect like go to definition and and auto completion and I've added support for debugging so you can write print statements in in Rue and see the output when you're running the program.
And I'd say the biggest thing is I added an entire module system so you can have multiple files and import from um one file into another kind of like in Rust's module system.
>> Awesome.
>> It's kind of mature to a point where you can actually use it for larger scale programs and um rely on it being efficient enough in to use in production.
>> Can you talk a little bit about like what your process for kind of creating this uh this language is?
Maybe getting a little in the weeds a little bit.
>> Yeah, so the compiler is written in Rust as are most things I develop. Um this essentially I modeled the um the parser and compiler a little bit after the Rust analyzer it uh extension. So that's the Rust analyzer is a um language server protocol implementation for Rust.
And it has its own way of parsing code that allows it to be um partially malformed while still checking everything that it knows of. So if if there's a syntax error in your code for example, it will still try to parse everything else around it and run the compiler on that so that you can get um diagnostics in your editor without the entire thing breaking if there's one bug for example.
So I I kind of modeled the lexer and parser off of Rust analyzer and then um the compiler is it's interesting because there's there's not really anything to use as a reference for this because it's it's the second um Silvium compiler and so yeah, I could use T list as a reference for some things, but for the features that I wanted to add like variables and um the type system, I had to design that myself.
Um taking heavy inspiration from other languages, but I didn't really have a reference for the compiler.
>> Um so what what are the uh the main differences between Rue and T list other than Chi Lisp is uh for parentheses uh everywhere. Um you know, syntactically they're obviously very different, but there are there any like structural differences or um kind of implementation differences between them?
>> Yeah, I would say um the biggest thing is the type system. So, you in Chi Lisp um when you define a parameter or function, for example, you you say like which um which parameters the function have, and then you can use them inside of its uh definition, but there's nothing at compile time that actually checks what the type of that parameter is or whether a variable that you used actually exists. So, for example, if you um define a variable called hello and you reference one called hello two or like some some other name, it will insert the string of that uh variable name into your program rather than giving you a compiler error that it doesn't exist. Or if you pass a um string in into a function that expects a list, it might just crash at run time rather than telling you at compile time that it's um has the wrong type.
So, in Roux I modeled a type system kind of based on TypeScript mostly where um you can define like struct types and aliases um to make more complex shapes out of existing uh Silvium types like atoms and pairs.
So, you could say like this is a struct that has two fields, one named X and one named Y, and they're both integers. And then if you ever try to pass anything else into that function than it expects, it will give you a compiler error.
>> Uh we have a we have a question from the audience. And and by the way, if anyone who's watching has any questions, feel free to use the Zoom Q&A uh to submit your questions. We're also monitoring the YouTube uh chat, um and you can also submit questions on our Discord um in the community feedback channel. So, feel free to ask questions, and I'll relay them to the Brandon as as we we receive them. We'll also have a a period at the end um to try and get all the questions through. This is um from uh Johnny Tarvanian.
Uh for security, would it be safest or easiest just to audit the produced CLVM instead of the source?
>> Yeah, that's something that I thought about a bit is having a way to kind of decompile the CLVM into something human-readable because the the problem is that CLVM is almost unintelligible. It's like reading assembly code.
Um probably even worse, like just reading the machine code that is created by the assembler.
So, reading it directly is not really an option with complicated uh T list or Rue programs, but if you can take that generated CLVM and decompile it back into T list or back into Rue in a simplified form, then you could make sure that the compiler isn't doing anything funky like optimizing an entire branch of code out that it shouldn't, for example.
>> Um we've heard from recently from people like Dracontas from Koba 42 who's uh talked about using and loving Rue um recently. Do you know of any other notable projects uh that have adopted Rue and are using it in production?
>> Yeah, I would say the biggest uh set of projects comes from Yukihiro.
He's been working on a primitive called slot machine um which uses uh a like a modified singleton called the action layer to define multiple actions that can be run on a given primitive. And um you can use slots as like a a map data structure.
And together those form essentially the things that you can accomplish with a smart contract on Ethereum, you could now do with the action layer on Chia.
Um so that whole ecosystem of built using currently. It was originally built with Chia Lisp and then ported over to Rue.
Uh so this includes the Dig Reward Distributor, um XCH handles, and catalog for example.
Very cool.
>> It has uh Have you been involved with with any of those projects as have have uh has Yack come to you and be like, "Hey, you know, I I really want to do this, but it's not you know, I can't do it. Currently, can you" Have you like tag team a little bit in the development of Rue through the the usage of it in in production?
>> Yeah, he's definitely helped uh helped with the implementation and design of the language.
Uh more so the design, but I haven't directly contributed to um the projects like the Dig Reward Distributor, but it's only influenced how the language has developed.
>> Yeah.
Um for for those who who want to find more about it find out more about it and and maybe start using it, where can they find uh any resources um or documentation for for the language right now?
>> Well, the main uh place is the Rue Lang website, that's rue-lang.com.
Um where you can find the documentation of the language and um a couple tutorials on how to use it with the wallet SDK.
Um I should definitely add some more tutorials over time, but could be a good starting point.
>> And where is that again?
>> Uh rue-lang.com.
>> rue-lang.com.
Uh we can have that. And do you have a a presence like a Discord community or do you just mostly do all this stuff on I know you have a presence on on our Discord. Uh the Chia Discord. Do you have like a a separate place that people can go or is it mostly done there?
>> Yeah, I used to have a Discord specifically for Rue, but I ended up um getting rid of that and kind of consolidating it into the Sage Discord.
So, if you >> Okay.
>> have questions about Rue or um want to get into using it, then that's a good place to be.
>> Okay. And I do know that you also uh have a project on the Chia Discord that people can can probably find these links and and others uh there as well.
Um we have a question from from Jacob. Uh since types are enforced at compile time, is there the same danger as with TypeScript where the developer needs to be aware of runtime not respecting those compile time type assumptions?
>> Yeah.
Definitely. Um if you are writing a function and uh you you say that it has arguments of a certain type and you pass it values that were created from another Rue function that was well um checked by the type system, it shouldn't have any um there shouldn't be any risk of having the wrong type of value, but if you receive something uh from the main function, which is the entry point of the program, and then pass that into something that expects a certain type, then it's possible for the caller of the the puzzle to provide values that are the wrong type and depending on how you wrote the program, that could have varying effects. If you um if you end up checking the type indirectly through something like a an assertion or a condition or the tree hash, for example, then it can still be safe, but if you kind of just blindly trust what is passed in to be the correct type, um without having any of those other checks, and then rely on it for too many things, then you can end up in trouble.
So, you still have to be aware of uh the fact that input coming from the solution is considered untrusted and you should verify its claims.
All right.
Um so, you've done a lot of work over the last year or so.
What does the future of Rue look like to you? Do you have like a road map for for development, or is there kind of a an end goal in mind, or is it just going to be continually um developed as people use it and and needs come up?
Yeah, I would say right now it's it's mostly complete with what's been needed so far. Um I could there's probably polishing to be done um and maintenance over time, but unless there are new features that people need, then I think it's already um pretty close to the end state.
Awesome.
What what excites you the most about seeing what kind of what things people do with with Rue?
I think it's cool that you can start building projects on Tezos that have um a much larger scale than people used to build. Um now that we have the Wallet SDK stage and and Rue together, I think like it it used to take a mountain of effort to build even the simplest program and deploy it on Tezos, and now you can um come up with an idea, write a puzzle quickly, maybe even um use an LLM to help write the code if you wanted to.
Obviously, you should verify that it's a state, but um and then you can use the SDK to deploy it and write drivers for it um at a much faster rate. So, it allows you to build more complicated things, uh reuse existing primitives and kind of combine them together to build more complex apps.
And I think the uh things like the bigger word distributor are a great example of that.
>> Do you have any uh projects that that you're looking to do now that Rue is kind of in a in a state like to use Rue to to do specifically or >> Yeah, I may or may not be working on an auction primitive.
>> Okay.
>> Very interesting.
>> Um you mentioned uh Sage and Wallet SDK.
Just since you brought it up, I know those are also some things that you've been working on regularly. Is there anything like related to those um that that Rue has kind of unlocked or or kind of helped progress forward?
>> Um I would say with like with the Wallet SDK, I've been working on um the tooling between Rue and Wallet SDK, improving like you can use the a macro in the Wallet SDK to compile a Rue program and um include the generated bytecode and hash into your Rust program without needing to copy it by hand.
And um it has like this this new debug simulator so that you can um you can run puzzles and spend coins um using like a modified version of the Silvian runtime that actually uh kind of prints things out there are um you you you can use the debug statement in Rue and it will print it to the console in Rust.
>> Awesome.
How um if how can people get involved uh if if anyone has maybe some ideas for Rue that that is not currently implemented.
Um how can they contribute to to the project?
>> Um I mean aside from just telling me what ideas you have you could try to implement them in the compiler. The the repo for the compiler is open source on GitHub under the xc dash dev organization.
Um it's kind of a high learning curve to get involved in that good base, but happy to help if you want to try.
>> Is it a high learning curve because it's kind of a inactive development and needs optimization or is it just the nature of of how it has to be implemented?
>> I think um there's a lot of things that you have to know.
First you have to know the um how steel VM works and you have to know Rust and you have to know how to write compilers and like having all three of those is kind of rare I would say.
But >> You're a rare breed.
So someone does have an idea that they really want to see.
Uh they can reach up reach up to you to pitch the idea. Is there any place a specific place that they that you want people to reach out to?
>> Uh yeah either on the clear discord under that thread or on the sage or discord.
>> Okay.
>> You can also file an issue on GitHub as well.
>> Sounds good.
Um all right. Is there anything else? I know we we have a a little bit of a demo that we're going to do in a little bit.
Is there anything else that that maybe I missed or or that you want to to preface before we get into to seeing a little bit how how Rue works?
>> Um not that I can think of.
>> All right.
So you've put together a a demo for us of a of a little um Rue project um to kind of just give us an idea of what it looks like, how it works, and and we're going to see um how it compiles and and actually executes. Is that right?
>> Yep.
>> All right.
>> So at a at a high level this this is a an implementation of a new type of coin that uh acts as a piggy bank. You can create a piggy bank coin and then put a certain amount of initial XCH into it and then over time you can top it up with more if you want to and just save it for later and then after a certain amount of time passes after the last transaction you can kind of melt the piggy bank coin and take all the funds back into your wallet.
Um this isn't meant to be used in production. It's just a a demo. But um I'm sharing my screen.
Can you see it?
>> Uh yes.
>> Okay, cool.
Make it a little bit bigger.
Um yep, so every Roo program starts with an entry point function which is most often FM main like in other languages. Although you can just export a function um and the Roo compiler will generate the code for that as well.
So here it's a uh the main function has three curried parameters which are kind of like parameters that you committed to up front when you create the coin initially.
And then it has one solution parameter which is the spend path that you're using.
So it the mod hash is curried in which is the um hash of this program itself.
And then the public key and time lock are curried in. So this is the owner of the coin and how long after the last transaction do you want to have to wait until you can melt it?
Um it returns a list of conditions, which is how all puzzles on Chia um can describe what should happen after the transaction executes on the blockchain.
Um the first condition here is just an X signature condition. This this says this transaction has to be signed off on by whoever owns the coin.
Um so this public key has to sign the spend.
Um we have two spend paths here. It can either be a top-up spend where you provide the old amount and the new amounts or it can be a melt spend with no arguments.
If we are spending uh the coin with the top-up spend, we make sure that the new amount is greater than the old amounts.
Um we create this amount assertion. So this will ensure that the amount that we said the coin has is the actual amount the coin has.
And then we create the new piggy bank coin by creating the puzzle hash uh with the new amount.
And if we're melting it, we have this time lock assertion to make sure a certain amount of time has passed since the block the coin was created.
And here's it's just creating this puzzle with the arguments that are up here.
Um so this will essentially recreate the same puzzle hash that we are spending to make a new coin.
Um and so there there's some features here. Like this is this is the type system right here. You can define struct.
Um each field can have its own type.
And you can even define default values.
Like in this case, the spend path is always zero for top-up spend and for melt spend it's always one.
Um And now if you were to try to construct a um a value of type top of stone.
Um then that would look like this. You could say the new amount is 500 and the old amount is 200.
Um you can see that that compiles, but if you change this to a string for example, it will say it can't assign hello world to int without a cast because they're different types.
Um of course you could cast it and that would work. So this would turn like the string hello world into whatever this integer representation of that happens to be. Mhm.
Uh I guess I could try this then it was uh Okay, it doesn't work, but yeah.
So that's how the type system works. Um it has intellisense so you can you can hover over a field and see the type or you can like go to the definition of a parameter.
If I go to um the definition of Curry Piggy Bank for example, it would send me down here. So this helps for navigating across your project quickly.
>> Mhm.
>> Um another interesting thing is this is keyword. This will generate code at runtime that actually checks the type um of the variable and at compile time you can now assume that this this variable has the type top of stone because it's been checked at runtime.
Um variables like a key list doesn't have variables. So this is kind of a important feature I think. I think the work around in key list is to um you would make a module, you'd have uh a function called like savior one and then you have some variables here uh that you can define and then you have to call this in the function and then you have to do some sort of calculation here.
And then use the result in the stater function. So, it's you can emulate variables in Chia Lisp, but in Rue you can just define them directly and it works the same.
Nice.
Um here's some Rust code here. I've just like kind of written bindings for each of the types, the arguments, solutions, spend paths.
And here is where it compiles the program in this file.
Um and then here we're kind of creating a regular wallet and then um funding this this piggy bank puzzle with the same public key and an expiration of 5 minutes.
And then we're creating creating a coin, so we're creating it with an initial amount of 500. Creating a change coin back to Alice's wallet.
And then we spend the piggy bank coin to pop it up to an amount of 1,000.
Um and then after 5 minutes pass, we um melt the piggy bank coin here.
And then you could do whatever with the the motors that are turned.
If I run this, um all three of these work. And if I were to just for example only have uh let's just like 4 minutes or so pass, then it doesn't reach the threshold of 5 minutes and you get an error that says assert seconds relative failed, which is this condition here.
Yep, and here is the So, this is the resource file and if you if you actually wanted to compile this for production use, you could do Rue build and then say um like {slash} temporary I guess I have a typo here, Biggie Bank.
>> Mhm, I saw that.
>> Uh Yeah, so you can build this and this is the what the CLVM looks like. Um, kind of hard to read what that does.
Um, you can compile into hex form. You can get the hash.
And there's a shorthand here. If you just type dash S S S H A then this will compile all of the files into a hash file and hex file that live side by side.
Yep, that's Ruin the Show.
>> Cool.
>> Very nice.
All right. Um, we can do some some audience questions if anyone has any questions.
Uh, feel free to ask in the Zoom Q&A or the Discord channel or on the YouTube chat. We'll give a little bit of a few minutes for people to ask any questions that they might have.
Um but I think it's really cool um that you've taken it taken this project on um to try and simplify the development for for Chia projects and I know as as we've heard from from several members in the community who have been using it um, it's it is it has been well received. A lot of people have have enjoyed uh using it.
Some have struggled to to get into to Chia Lisp um and this has really opened the door so um just want to kind of uh thank thank you and and encourage you to to to keep going and I know you you've done a lot of really cool really cool projects in the community in general.
>> Yeah.
>> Would you say that Ru is uh is among like the favorite projects that you've done or or is there a cuz you I mean you do so much so I don't know if you if they're all just kind of like I'll do this now or if if there's there that you're you're particularly proud of doing?
>> Yeah, I would say the top three are Sage, the Lotus Eater, and Rue probably in order.
Um Yeah, there's a million other projects, but they're they're kind of like just tiny things that I work on for a while and then move on from.
Um these are kind of the three that I've stuck with for the longest time.
>> Yeah.
Yeah, I think I think they've they've really made an impact in the community and ecosystem as a whole, so.
Very cool. Well, um with that I I don't think that we have any uh super topical questions, so uh Oh, wait. This just something came through.
Uh this this uh person submitted they don't have a question, but they just want to let you know that that themselves and the Tang Gang are so thankful for the work that you guys put into the ecosystem. You're very much appreciated, so.
I did have to pass that on.
Uh with that, thank you uh Brandon for for joining me and and kind of going over Rue and and what uh what is um the progress that they've made over the last year. Really excited to see people start adopting this and using it um to build new new products on on the Tezos blockchain. And uh we look forward to to your next projects uh and and what you continue to do. So, thanks a lot.
>> Thank you.
>> All right. Thanks everyone.
Have a good day.
Related Videos
Are our DeFi tools becoming too easy to exploit?
saidotfun
228 views•2026-05-30
Solana Unchained ($UCHN) Explained: Solana’s Next Big Utility Project?
CryptoVlogOfficial
339 views•2026-05-30
🚨 Access Network App FREE Withdrawal to MetaMask?! Only 25M Supply 🔥
Airdrop26Alpha
459 views•2026-05-28
Free TON in 2026? How I Tested This Reddit TON Tool
SirenHead-z9y
2K views•2026-05-28
⚠️ALGO Has a Very Bright Future! ✅ One #Crypto Everyone Should Own!
MetaShackle
184 views•2026-05-30
BingX EventX: Trade Sports, Crypto & Global Events With One Click
AidenCryptox
311 views•2026-05-31
XRP IS GOING TO VANISH! A SUPPLY SHOCK IS INEVITABLE! (THIS IS THE PROOF!)
NCash
2K views•2026-05-31
AI Predicts What XRP Looks Like If Ripple Gets A Fed Master Account
CryptoBlazon
422 views•2026-05-30











