~singpolyma/dhall-ruby

ref: ca1cda0acce5391041a593d50a1fd4928864fac4 dhall-ruby/lib/dhall/resolve.rb -rw-r--r-- 12.4 KiB
Require SimpleDelegator properly
Do not start IO work until asked
Integrity check must happen after all resolves
Typecheck while resolving
Follow redirects + timeout helper
Multihash prefix on filename
This could be a literal, so may be frozen
New header format
implement as Location and use URI internally
Self-describe CBOR for Expression#to_binary

CBOR.encode(expression) and Expression#to_cbor remain untagged "standard
Dhall" but the default Expression#to_binary now always tags the output
with self-describe CBOR.  This is supported by the standard for decoding
the output will still be compatible with all compliant implementations,
and it makes the binary format easier to identify in the wild.
Headers is probably a Dhall::List

But we map it to strings... just use `to_a` since we're not staing in
Dhall-land anyway.
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.
Parse expression from ENV var import

Instead of the path-only support from before.
Standard reader requires UTF-8

To disable heuristics, force remote content to be UTF-8 text.
Add grab-bag of useful utils onto expressions
Pass all import tests
Anything we'll eventually run is a skip
Next