Arto's Notes re: DRYlib

The polyglot programmer's universal standard library.


Table of Contents:


Rationale

  • Reduces the cognitive load of frequently switching between different programming languages.
  • Enables network effects to cross different languages.
  • Facilitates code generation for multiple target languages.
  • (Personally) Maintains know-how in developing and packaging for the specific target languages.

Features

  • Provides predictable package naming across of language ecosystems.
  • Respects local naming conventions.

Roadmap

0.0.0

  • Namespace registrations on various packaging systems.

0.0.1

  • Data representation for the full numeric tower.
  • Packaging for all target languages.

0.1.0

(To be written.)


Languages

We are currently at 17 actual target languages, and 23+ potential target languages.

Primary target languages:

Secondary target languages:

Tertiary target languages:

  • Common Lisp (for academia and grumpy neckbeards)
  • D (for systems programming)
  • Julia (for numerical computing)
  • Kotlin (for Android apps)
  • PHP (for web development)
  • Ruby (for general scripting)
  • Rust (for systems programming)

Miscellaneous potential target languages:

  • Bash? (challenging but tremendously useful if possible)
  • C#/.NET (for Unity games and the .NET ecosystem: F#, VB.NET, etc)
  • Erlang (for the BEAM ecosystem: LFE, etc)
  • Haskell (for academia)
  • Scheme (R4RS, R7RS; for academia)
  • Standard ML (for academia)
  • Swift (for iOS/macOS apps)

Ignored programming languages:

  • Objective-C (all the momentum is in Swift now, and can use C)
  • Uncommon: Crystal, Haxe, Idris, Nim, Perl 6, Smalltalk, Vala
  • Legacy: Ada, BASIC, COBOL, Fortran, Pascal, Perl, Prolog, Tcl
  • Domain-specific: Mathematica, MATLAB, PL/SQL, R
  • Esoteric: Factor, Forth
  • Uninteresting: CoffeeScript, Elm, Hack, TypeScript

Packaging

Packaging for Languages

Language Package
C/C++ N/A
C#/.NET TODO: drylib on NuGet
Common Lisp TODO: ASDF package?
D drylib on DUB
Dart TODO: drylib on Pub
Elixir TODO: drylib on Hex.pm
Erlang TODO: drylib on Hex.pm
Go GitHub / GoDoc
Haskell TODO: Hackage
Java TODO: MVN repository on Bintray
JS TODO: drylib on NPM
Julia GitHub / PackageEvaluator.jl
Kotlin TODO: MVN repository on Bintray
Lua drylib on LuaRocks
OCaml TODO: drylib on OPAM
PHP drylib on Packagist
Python TODO: drylib on PyPI
Ruby drylib on RubyGems
Rust TODO: drylib on crates.io
Scheme TODO: drylib for Racket
Standard ML N/A
Swift GitHub

Packaging for C/C++

No standard packaging/distribution system.

Packaging for C#/.NET

(To be written.)

Packaging for Elixir

(To be written.)

Packaging for Erlang

(To be written.)

Packaging for Go

(To be written.)

Packaging for Java/Kotlin/JVM

TODO: Bintray for MVN?

Packaging for PHP

(To be written.)

Packaging for Python

(To be written.)

Packaging for Ruby

(To be written.)

Packaging for Scheme

(To be written.)

Packaging for Standard ML

(To be written.)

Packaging for Distros

(To be written.)

TODO: Alpine, Arch, Debian/Ubuntu; Homebrew, MacPorts, pkgsrc.





See Also

DRY, DRYlang