Brown University's programming languages research group writes about teaching, language design, formal methods, testing and program semantics.
Commenters cite it for Rust resources, mystery languages, and its view of language size via core languages and desugaring, and as a source on Forge.
The problem is that there's no universal definition of "small" when it comes to languages.
An article on the Brown PLT blog [1] suggests analyzing languages by defining a core language and a desugaring function. A small core simplifies reasoning and analysis but can lead to verbose desugaring if features expand into many constructs. The boundary between the core and sugared language is flexible, chosen by designers, and reflects a balance between expressiveness and surface simplicity.
Feature complexity can be evaluated by desugaring: concise mappings to the core suggest simplicity, while verbose or intricate desugarings indicate complexity.
So, a possible definition of a "small" language could be one with both a small core and a minimal desugaring function.
--
1: https://blog.brownplt.org/2016/01/08/slimming-languages.html
Brown PLT group has a lot of Rust resources like a debugger for traits https://cel.cs.brown.edu/blog/an-interactive-debugger-for-rust-trait-errors/ a model of ownership types https://blog.brownplt.org/2023/09/17/rust-ownership.html and an experimental rewrite of the Rust book https://rust-book.cs.brown.edu/
Systems programming can be done in ocaml or any language really where there is some documentation on the runtime how not to trigger the GC or flags that can be passed to custom set GC policy
Yesterday's submission may interest you: https://blog.brownplt.org/2024/04/21/forge.html (Forge: A Tool to Teach Formal Methods)
This article showed up on HN not too long ago:
http://blog.brownplt.org/2013/02/19/teaching-gc.html
Maybe it will help.
I suggest reading about progressive types:
http://blog.brownplt.org/2012/09/01/progressive-types.html
Perhaps `unfun` can be incorporated into this:
http://blog.brownplt.org/2014/04/01/var-vs-yar.html