Participate in the issues!
The blog is dead, long live the blog 20 May 2019So, I’m starting a new job tomorrow, which leaves me several hours to write this post, finish the issue I’m writing on GitHub right now (concurrently with myself over on this page) and maybe fiddle with LES3 a little.
Wow, has it really been two months since I opened issue #79? Anyway, having still not set up an automatic comment system for my blog, the easiest way to allow participation is to just file issues instead. Plus I don’t have to open Git Extensions and push and check if the blog post rendered correctly.
LES3 still nearing completion
LES2 and LES3 are fantastic common languages for prototyping new programming languages, creating DSLs and build systems (which are DSLs), and representing syntax trees. It has no semantics, only syntax - the semantics are up to you; it can be used for OO languages, functional languages, assembly languages, and did I mention DSLs? I designed LES3 to be the text format for WebAssembly, but I always intended for it to be a “universal” language.
I’ve opened several new issues related to LES3. It remains embarrassingly un-finalized but the good news is that anyone still paying attention can chime in if they can think of a new operator or use case.
Here are some recent LES3 issues you might find interesting:
- “Final” changes to LES3 - not really, that was 20 months ago, it’s still open for tweaks, and tweaks have indeed happened. The issue may or may not be worth reading.
- Can named prefix operators or unparenthesized calls be practical? - a proposal to use
abs$x
as syntactic sugar forabs(x)
(ugly, right?) - Faithful storage of acyclic graphs? - Loyc trees are not really trees, they are DAGs (directed acyclic graphs). This issue proposes that LES3 be extended to be able to serialize and deserialize DAGs.
- Implicit underscore in numeric custom literals? - Proposes a way to distinguish string literals like
foo"12345"
from numeric ones like12345foo
(at present they are stored the same way) without preventing string notation for numerics. - Keywords? - If think a particular word should be a keyword, speak now or forever hold a grudge about the missing keyword on Twitter.
- Revise treatment of commas? - proposes a little more parser complexity to make keyword-expressions more useful.
- Use
|
as line continuator? - you can always continue a statement on the next line by ending the current line with a binary operator. But that doesn’t work for word operators, it may not be visually desirable, and the LES3 printer currently has to go through contortions to avoid writing a newline where a newline isn’t allowed. - List of operators and precedences - Last call for decisions about special operators and their place in the precedence table!
Other stuff
The Loyc libraries (up to and including LeMP.exe) are now available as .NET Standard libraries on NuGet. And the Visual Studio extension works in VS2019.
Want faster generic collection operations? Issue #88 will do that. Also, the new DictionaryEx
interface now in preview combines two or three operations in one and is used via extension methods (AddIfNotPresent
, AddOrGetExisting
, ReplaceIfPresent
, SwapIfPresent
, SetAndGet
)
A bunch of breaking changes are on their way in issue #81: spring cleaning. Though since I’m starting a new job, some of this work may be delayed until… summer? autumn? 2020? But I have already committed some breaking changes on the breaking-changes-2.7
branch.
Similarly I was planning to put up a web page so you can try out LeMP without downloading it, based on Blazor, but… new job, money calls!