~singpolyma/dhall-ruby

ref: 7a3a7bc998acbbeb6859580db2455297d81459c7 dhall-ruby/lib d---------
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
Fix Typo

Dhall::Text is obviously the Text builtin, not the Double one.
Allow as_dhall to be customised by encode_with

Dhall has a goal to replace YAML.  Ruby's ecosystem already has deep
integration with YAML (specifically with the Psych implementation in
stdlib) -- so if an object customises its YAML encoding, but doesn't
know about Dhall, customise the Dhall encoding in a compatible way.
Next