Language Reference

At the time of writing (summer 2018), the C++, Go, Java, and OCaml ports are being actively developed and fleshed out.

Current Ports

Language Usage
C++ #include "drylib.hpp"
Go import "github.com/dryproject/drylib.go"
Java import dry.*;
OCaml open DRY

Planned Ports

Language Usage
C #include "drylib.h"
Common Lisp (require :drylib)
D import dry = drylib;
Dart TODO
Elixir TODO
JS import * as dry from 'drylib';
Julia using DRYlib
Kotlin import dry.*
Lua dry = require 'drylib'
PHP require_once 'drylib.php';
Python import drylib
Ruby require 'drylib'
Rust extern crate drylib as dry;

Language Features

Language Type Checking Type Safety Memory Mgmt Strings Bignums? Exceptions? Closures? Macros?
C Static Weak Manual ✗ bytes
C++ Static Weak RAII/RC ✗ bytes
Common Lisp Dynamic Strong GC ✗ UTF-{16,32} [5]
D Static Weak? GC/Manual ✓ UTF-{8,16,32}
Dart Static Strong GC ✗ UTF-16 [1]
Elixir Dynamic Strong GC ✓ UTF-8
Go Static Strong GC ✓ UTF-8 [2]
Java Static Strong GC ✗ UTF-16 [3]
JS Dynamic Weak GC ✗ UTF-16 [4]
Julia Dynamic Strong GC ✓ UTF-8
Kotlin Static Strong GC ✗ UTF-16
Lua Dynamic Strong GC ✗ bytes [6]
OCaml Static Strong GC ✗ bytes [7]
PHP Dynamic Weak GC ✗ bytes
Python Dynamic Strong GC ✗ UTF-{16,32}?
Ruby Dynamic Strong GC ✓ UTF-8
Rust Static Strong RAII/RC ✓ UTF-8 [8]

Footnotes

[1]https://github.com/dart-lang/sdk/issues/28404
[2]https://github.com/golang/go/wiki/PanicAndRecover
[3]https://dzone.com/articles/java-8-lambas-limitations-closures
[4]https://github.com/tc39/proposal-bigint
[5]https://www.cliki.net/Unicode%20support
[6]http://lua-users.org/wiki/ErrorHandling
[7]https://github.com/ocaml/num
[8]https://github.com/rust-num/num-bigint