Suppose you want to write a new program, something like a text editor. What language would you write it in?

  • It has to be as fast as possible, so interpreted languages are out.

  • You don’t want to micro manage memory, so C is out.

  • You don’t want to require programmers to have a degree, so C++ is out.

  • You want fast startup and not depend on a big runtime, so Java is out.

  • It has to run on most systems, anything with a C compiler, so D is out.

  • You want to have fun making something new.

No existing language really meets these demands, so let’s create a new one that does!

Zimbu is an experimental programming language.  It is a very practical, no-nonsense kind of language.  It mixes the good things of many existing languages and avoids their deficiencies.  And then throws in a few brand new ideas.

Read More

Tokay is an imperative, procedural programming language dedicated to parsing and other text-processing tasks.

Nickel, a configuration language that we are developing at Tweag, strives to provide first-class data validation. Nickel does so thanks to its contract system (although contracts are useful beyond data validation). While the whole story is more involved, contracts can be loosely seen as validation functions. They can be nicely combined using built-in constructors: one can form record contracts, array contracts, function contracts, and more.

A natural and useful addition that we soon considered are the boolean combinators or and and: at first sight, implementing them for boolean predicates looks trivial. But contracts are not exactly predicates, and this subtle difference makes the implementation of general unions (or) and intersections (and) contracts deceptively difficult. The existing literature, while keenly aware of the fact, doesn’t really explain why. This post intends to explain and illustrate this why. You’ll find a thorough exposure in our paper Union and intersection contracts are hard, actually presented at DLS21.

Read More

Hare is a systems programming language designed to be simple, stable, and robust. Hare uses a static type system, manual memory management, and a minimal runtime. It is well-suited to writing operating systems, system tools, compilers, networking software, and other low-level, high performance tasks.

Scallop is a declarative language designed to support rich symbolic reasoning in AI applications. It is based on Datalog, a logic rule-based query language for relational databases.

Vale’s goal is to show the world that speed and safety can be easy! Vale is:

  • Fast: Vale is an AOT compiled language that uses an entirely new approach to memory management: generational references, which have zero aliasing costs and no garbage collection pauses.

  • Fearless: It is the safest native language: zero unsafe, region isolation, extern boundaries, and dependency extern whitelisting.

  • Flexible: Its new take on regions enables alternate memory management and allocation strategies, with the region borrow checker enabling seamless, fast, and easy interop between them.

Read More

I recently watched Conrad Barski’s video introducing zek, a program he wrote to take Zettelkasten-style notes on the command line.

This is the perfect spur to a programming project: another, already perfectly fine, program that does almost what you want but not exactly. In my case, I was intrigued by the idea of a Zettelkasten-style note-taking app on the command line, but the whole line-editor approach seemed to me to be a bridge too far. So of course I started thinking about how I’d write my own.

I came up with an idea that I like, and that is extremely simple, deferring as much as possible to my text editor, and could conceivably be written as a single shell script calling widely-available tools.

I thought about it during a couple showers, and then I wrote a Pantagruel spec for what I came up with. I reproduce that here.

Read More
Dec 21, 2021

This project began with an attempt to write the fastest lisp interpreter I could in under 1000 lines of C. It snowballed from there as I kept trying to see if I could add powerful features with minimal code. At the same time I assembled a library of some of my favorite C code (by myself and others) to use as a base for a standard library. This includes ios, a replacement for parts of C’s stdio that adds more flexible features.

nullc is a C-like embeddable programming language with advanced features such as function overloading, operator overloading, class member functions and properties, automatic garbage collection, closures, coroutines, local functions, type inference, runtime type information, modules, list comprehension, enums, namespaces, generic functions and classes.

Language is type-safe and memory-safe.

nullc library can execute code on a VM or translate it to x86 code for fast execution. It can also translate nullc files into C source files.

Read More

This simple programming language with built-in graphical functions and an easy to use and offline usable browser IDE is well suited as a teaching and learning language. You can also use it to write graphical applications that you can embed in a web page.

Nov 5, 2021

Orca is an esoteric programming language, designed to create procedural sequencers in which each letter of the alphabet is an operation, where lowercase letters operate on bang, uppercase letters operate each frame.

The application is not a synthesiser, but a flexible livecoding environment capable of sending MIDI, OSC & UDP to your audio interface, like Ableton, Renoise, VCV Rack or SuperCollider.

I regularly hear people asking which programming language to learn, and then reeling off a list of very similar languages (“Should I learn Java, C#, C++, Python, or Ruby?”). In response I usually tell them that it doesn’t really matter, as long as they get started. There are fundamentals behind them.

Pen is a statically typed functional programming language for application programming with system injection. Its design is heavily inspired by the Go programming language and many functional programming languages like Haskell and Koka.

KDL is a document language with xml-like semantics that looks like you’re invoking a bunch of CLI commands! It’s meant to be used both as a serialization format and a configuration language, much like JSON, YAML, or XML.

There’s a living specification, as well as various implementations. You can also check out the FAQ to answer all your burning questions!

In addition to a spec for KDL itself, there are also standard specs for a KDL Query Language based on CSS selectors, and a KDL Schema Language loosely based on JSON Schema.

The language is based on SDLang, with a number of modifications and clarifications on its syntax and behavior.

The current version of the KDL spec is 1.0.0.

Read More
Sep 3, 2021

Joker is a small interpreted dialect of Clojure written in Go. It is also a Clojure(Script) linter.

Nelua is a systems programming language for performance sensitive applications, like real-time applications and game engines. Its syntax and semantics are similar to Lua, but its garbage collection is optional, it provides optional type notations, and it is free from an interpreter. Nelua uses ahead-of-time compilation to generate optimized native binaries. It is metaprogrammable at compile-time using Lua and it is simple and easy to use.

Pyret is a programming language designed to serve as an outstanding choice for programming education while exploring the confluence of scripting and functional programming. It’s under active design and development, and free to use or modify.

Imba is a Web programming language that’s fast in two ways: Imba’s time-saving syntax with built-in tags and styles results in less typing and switching files so you can build things fast. Imba’s groundbreaking memoized DOM is an order of magnitude faster than virtual DOM libraries, so you can build fast things.

I’ve been working on optimizations in Loko Scheme recently and have implemented large parts of A Sufficiently Smart Compiler for Procedural Records (Keep & Dybvig, 2012). At the same time I have improved the representation of record type descriptors and wanted to share a simple trick I used to improve record type checks for non-sealed records. But first I should explain what a record is in Scheme.

A minimal, efficient and practical proof and programming language. Under the hoods, it is basically Haskell, except purer and with dependent types. That means it can handle mathematical theorems just like Coq, Idris, Lean and Agda. On the surface, it aims to be more practical and looks more like TypeScript. Compared to other proof assistants, Kind has:

  1. The smallest core. Check FormCore.js or Core.kind. Both are < 1000-LOC complete implementations!

  2. Novel type-level features. Check this article on super-inductive datatypes.

  3. An accessible syntax that makes it less scary. Check

  4. A complete bootstrap: the language is implemented in itself. Check it here.

  5. Efficient real-world compilers. Check for a list of apps. (WIP)

Read More

Sketching is a language/library for creative coding. The focus is to make graphical programs accessible for beginners, artists, educators and designers. Sketching is free to use and the source is available to read and improve.

The main focus of Sketching is graphical programs. Running a program will display a canvas ready to show static images or animation.

The inspiration for Sketching came from the Processing project. Processing is a programming language built on top of Java. The Processing language was devised by Ben Fry and Casey Reas.

Think of Sketching as what Processing would have looked like, if it used Racket as its programming language instead of Java. Alternatively, think of Sketching as Racket with an easy to use graphics library.

Although inspired by the Processing project, this project has no affiliation with the Processing Foundation.

Read More
Programming Languages

Discuss interesting/experimental programming languages.

Created on Nov 12, 2020
By @root