DRYlib master repository.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.github Added placeholders for GitHub contrib templates. Sep 14, 2017
base Defined base/float128. Jul 4, 2018
bits Added top-level module descriptions. Jun 7, 2018
code Named more code/wasm/* types. Jun 25, 2018
crypto Added descriptions for all modules. Jun 20, 2018
data Added top-level module descriptions. Jun 7, 2018
ffi Defined more ffi/c/* types. Jun 26, 2018
geo Added top-level module descriptions. Jun 7, 2018
io Added top-level module descriptions. Jun 7, 2018
lang Added descriptions for all modules. Jun 20, 2018
logic Added top-level module descriptions. Jun 7, 2018
math Named math/blas/* level-1 functions for floats. Jun 26, 2018
media Added descriptions for all modules. Jun 20, 2018
meta Added top-level module descriptions. Jun 7, 2018
net Added descriptions for all modules. Jun 20, 2018
qty Added top-level module descriptions. Jun 7, 2018
std Named the std/si/* base units. Jun 25, 2018
sys Added descriptions for all modules. Jun 20, 2018
text Added descriptions for all modules. Jun 20, 2018
time Added top-level module descriptions. Jun 7, 2018
util Added top-level module descriptions. Jun 7, 2018
.drypackage Corrected .drypackage vis-a-vis .drymodule markers. Apr 19, 2018
.gitignore Updated the project template. Sep 14, 2017
AUTHORS Created the project. Aug 21, 2017
CHANGES.rst Adopted reStructuredText for the changelog format. Sep 10, 2017
CREDITS.rst Updated the project template. Sep 14, 2017
Makefile Fixed dependency tracking in the Makefile. May 27, 2018
README Created the project. Aug 21, 2017
README.rst Added a warning about the project status. May 27, 2018
TODO.rst Updated the project template. Sep 14, 2017
UNLICENSE Created the project. Aug 21, 2017
VERSION Created the project. Aug 21, 2017

README.rst

DRYlib

Project license Travis CI build status

The polyglot programmer's standard library.

Caveats

This is a semi-public, pre-alpha, work-in-progress project.

Here be dragons.

Caveat utilitor: assume nothing works, and you may be pleasantly surprised; and when it breaks, you get to keep both pieces.

Languages

Language Typing Usage
C static #include "drylib.h"
C++ static #include "drylib.hpp"
Common Lisp dynamic (require :drylib)
D static import dry = drylib;
Dart static  
Elixir dynamic  
Go static import "github.com/dryproject/drylib.go"
Java static import dry.*;
JS dynamic import * as dry from 'drylib';
Julia dynamic using DRYlib
Kotlin static import dry.*
Lua dynamic dry = require 'drylib'
OCaml static open DRY
PHP dynamic require_once 'drylib.php';
Python dynamic import drylib
Ruby dynamic require 'drylib'
Rust static extern crate drylib as dry;

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.

Features

Installation

To use DRYlib in your favorite programming language(s), refer to the table at the top that links to the specific code repositories for the set of currently supported target languages.

Reference

Data Types

base

  • bool: Boolean (true or false).
  • char: Character (21-bit Unicode code point).
  • complex: Complex number (arbitrary size).
  • float: Floating-point number (native size).
  • float32: Floating-point number (32-bit single-precision).
  • float64: Floating-point number (64-bit double-precision).
  • int: Integer number (native size).
  • int8: Integer number (8-bit).
  • int16: Integer number (16-bit).
  • int32: Integer number (32-bit).
  • int64: Integer number (64-bit).
  • int128: Integer number (128-bit).
  • integer: Integer number (arbitrary size).
  • natural: Natural number (arbitrary size).
  • rational: Rational number (arbitrary size).
  • real: Real number (arbitrary size).
  • word: Machine word (native size).
  • word8: Machine word (8-bit).
  • word16: Machine word (16-bit).
  • word32: Machine word (32-bit).
  • word64: Machine word (64-bit).

Reference (experimental)

Data Types

geo

  • location: GPS location (latitude, longitude, altitude).

net

  • port: Port number (for TCP, UDP, etc).

net/ipv4

  • address: IPv4 address.

net/ipv6

  • address: IPv6 address.

std/ietf

  • iri: Internationalized Resource Identifier (IRI).
  • uri: Uniform Resource Identifier (URI).
  • url: Uniform Resource Locator (URL).
  • urn: Uniform Resource Name (URN).
  • uuid: Universally Unique Identifier (UUID).

std/itu

  • oid: Object Identifier (OID).

std/w3c

  • curie: Compact URI (CURIE).

time

  • duration: Time duration.
  • instant: Time instant.