~singpolyma/dhall-ruby

ref: ce8894b0604f79841ee3ff3dc24bdcc16aa6fd14 dhall-ruby/lib/dhall d---------
More useful to_s for AST nodes
Normalize list element types before comparing
Facility to flatten let blocks
Allow typechecking filled builtins
Add new useful facilities to Function
as_dhall for Proc

Cannot actually serialize this, but can be useful for passing functions
in to Dhall functions, etc.
Update to latest dhall-lang
Handle self-describe tag anywhere
Fix for substitute on LetBlock/LetIn
Improve the multiline algorithm

Require that the whitespace being stripped is a common prefix.
Allow tabs and blank lines in multiline strings
Hoist single-label enum into array
Split Union and Enum

Stop putting special case conditionals for Union#value.nil? everywhere
and just split the classes.
Customizable cache

Caches implemented in this commit:

StandardFileCache - cache conforming to dhall-lang
RamCache - stores in a hash, meant for single-load caching
NoCache - when you want to be sure
Default max import depth of 50

So even without a timeout, there is a limit on bonkers cases.

Standard resolver defaults to INIFINTY since the standard does not
define a depth limit.
Timeout mechanism

Sets timeouts in HTTP readers, checks for deadline exceeded before each
resolution step, and uses Timeout::timeout for pure-ruby computations.
Update text-or-binary heuristic

The `cbor` gem is a bit janky and it turns out catching NoMemoryError is
not safe, so use an encoding-based heuristic to detect binary vs utf8
data.
Update to dhall-lang 7.0.0
Dhall::Coder

Full "to basic ruby types" deserializing, set up as a drop-in for
ActiveRecord::Base#serialize
Next