“It has macros to avoid boilerplate code. And it has a very easy way to use existing C libraries,” says Borenszweig, who works at Manas, which builds technical and scientific software.
Oden: Piggybacking on Go’s success
Oden, meanwhile, was developed by a Go fan who had issues with the up-and-coming programming language.
“I have always liked the tooling and deployment story in Go. The learning curve is gentle and the tools work really well. Go the language, however, has some characteristics, which I think are problematic,” Oden developer Oskar Wickström says.
He cites a lack of generics and a difficulty in abstracting control flow, error-handling, and nil-checking.
“The idea with Oden is to lift these restrictions and provide a more flexible type system, while also putting an emphasis on functional programming,” says Wickström, who has been a programmer since 2011 (and dabbles in music). He works at startup Empear, which develops project analysis tools.
“Another main objective is to provide easy interoperability with Go, letting early adopters use their standard Go libraries without having to write bindings,” Wickström says.
Emerging uses for emerging languages
It’s one matter to create a language; it’s another to ensure it’s of use to others who may be bumping up against similar problems. Each of the developers of these three emerging languages see use cases already evolving.
Oden, Wickström says, is good at tasks within Go’s wheelhouse: web servers, back-end services, and command-line tools, to name a few. It is also good for building libraries that provide generic user-defined data structures, generic algorithms, and control-flow abstractions, he says.
Crystal, meanwhile, is suited for web services, because it has nonblocking I/O and lightweight processes, Borenszweig says. Existing applications have included command-line applications, emulators, websites, and IRC bots.
“It can also be used in competition programs, where you need to prototype fast but achieve good performance,” Borenszweig says. “Finally, it can be used to build compilers, such as Crystal.”
Coconut is suitable for the same applications as Python, Hubinger says. This is a “very loose criterion, given Python’s popularity these days,” he says. “Since Coconut compiles to Python, there's nothing Python can do that Coconut can't.”
While Crystal and Oden remain in early stages of development, Coconut reached its 1.0 release milestone in June, followed by a 1.1 release in July.
Crystal was originally written in Ruby, although the compiler has been rewritten in Crystal itself. Coconut’s compiler was written in Python. Oden’s first compiler was written in Racket while its type inferencer was developed using MiniKanren, a relational programming language embedded in Scheme. The compiler was then rewritten using Haskell.
Sign up for MIS Asia eNewsletters.