Skip to content

Latest commit

 

History

History
300 lines (251 loc) · 5 KB

languages.rst

File metadata and controls

300 lines (251 loc) · 5 KB
.. index:: languages

Language Reference

At the time of writing (summer 2018), the :doc:`C++ <cpp>`, :doc:`Go <go>`, :doc:`Java <java>`, and :doc:`OCaml <ocaml>` ports are being actively developed and fleshed out.

Current Ports

Language Usage
:doc:`C++ <cpp>` #include "drylib.hpp"
:doc:`Go <go>` import "github.com/dryproject/drylib.go"
:doc:`Java <java>` import dry.*;
:doc:`OCaml <ocaml>` open DRY

Planned Ports

Language Usage
:doc:`C <c>` #include "drylib.h"
:doc:`Common Lisp <lisp>` (require :drylib)
:doc:`D <d>` import dry = drylib;
:doc:`Dart <dart>` TODO
:doc:`Elixir <elixir>` TODO
:doc:`JS <js>` import * as dry from 'drylib';
:doc:`Julia <julia>` using DRYlib
:doc:`Kotlin <kotlin>` import dry.*
:doc:`Lua <lua>` dry = require 'drylib'
:doc:`PHP <php>` require_once 'drylib.php';
:doc:`Python <python>` import drylib
:doc:`Ruby <ruby>` require 'drylib'
:doc:`Rust <rust>` extern crate drylib as dry;

Language Features

Language Type Checking Type Safety Memory Mgmt Strings Bignums? Exceptions? Closures? Macros?
:doc:`C <c>` Static Weak Manual ✗ bytes
:doc:`C++ <cpp>` Static Weak RAII/RC ✗ bytes
:doc:`Common Lisp <lisp>` Dynamic Strong GC ✗ UTF-{16,32} [5]
:doc:`D <d>` Static Weak? GC/Manual ✓ UTF-{8,16,32}
:doc:`Dart <dart>` Static Strong GC ✗ UTF-16 [1]
:doc:`Elixir <elixir>` Dynamic Strong GC ✓ UTF-8
:doc:`Go <go>` Static Strong GC ✓ UTF-8 [2]
:doc:`Java <java>` Static Strong GC ✗ UTF-16 [3]
:doc:`JS <js>` Dynamic Weak GC ✗ UTF-16 [4]
:doc:`Julia <julia>` Dynamic Strong GC ✓ UTF-8
:doc:`Kotlin <kotlin>` Static Strong GC ✗ UTF-16
:doc:`Lua <lua>` Dynamic Strong GC ✗ bytes [6]
:doc:`OCaml <ocaml>` Static Strong GC ✗ bytes [7]
:doc:`PHP <php>` Dynamic Weak GC ✗ bytes
:doc:`Python <python>` Dynamic Strong GC ✗ UTF-{16,32}?
:doc:`Ruby <ruby>` Dynamic Strong GC ✓ UTF-8
:doc:`Rust <rust>` Static Strong RAII/RC ✓ UTF-8 [8]

Footnotes

[1]dart-lang/sdk#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
.. toctree::
   :hidden:

   c
   cpp
   lisp
   d
   dart
   elixir
   go
   java
   js
   julia
   kotlin
   lua
   ocaml
   php
   python
   ruby
   rust