What is the state of the contract programming language LLL (Lisp-Like Language)? Is it still used and supported?
There does not appear to be active development on LLL as the Ethereum Foundation has identified Solidity as it's primary language that will receive development support from them. However, it is not "dead" in the sense that there are still bug fixes and small changes happening to the repository infrequently.
Interesting side note: Inline ASM may be eventually supported in the Solidity Ethereum language.
Vitalik Buterin said in Nov. 2015:
LLL was always meant to be very simple and minimalistic; essentially just a tiny wrapper over coding in ASM directly. In my opinion just use serpent; it has direct access to opcodes so it is a superset of LLL but it also has a whole bunch of high-level features as well for when you want them. The downside is that the compiler is more complex and so theoretically might contain more bugs.
If it's still used one can hardly tell. The last ethereum forum post to this topic is dated back to 2014.
While building the full C++ ethereum stack I noticed it contains
lll packages. There is
liblll for instance, which is still receiving commits. Last commit was back Sept/2015.
TL;DR: Used - hardly. Supported - certainly.
As of 2023 the short answer is "kinda".
There were two major LLL implementations:
- Solidity/LLL, written in C++, which actually predates the Solidity compiler and started out in February 2014 as a part of cpp-ethereum. It was later maintained in the Solidity repository but as the language fell out of general use, it was deprecated and removed in Solidity 0.6.2.
- Vyper/LLL, written in Python, which has been a part of the Vyper repository from the time it was created in November 2016. It is used as the IR of the Vyper compiler to this very day.
Now, it's been a long time since the language was introduced and Vyper developers kept extending it to their own needs, so it diverged enough from the original language definition that they deemed it appropriate to rename it. It was renamed to Vyper IR in Vyper 0.3.2. The language is still very much a successor to the original LLL and retains its original lispy syntax. See Introduction to Vyper's IR. You can compile programs written in it using a tool called
fang, included with the Vyper compiler (it used to be called simply
So, while I'm not aware of any project using it directly in production, I would not be surprised if it was sometimes used as a low-level language by people writing contracts in Vyper. Solidity's IR (Yul) is sometimes used the same way by people using Solidity, though you may see it much more often with Yul simply due to Solidity having much more adoption.