tvl-depot/users/sterni
sterni b810c46a45 feat(users/sterni/nix/utf8): pure nix utf-8 decoder
users.sterni.nix.utf8 implements UTF-8 decoding in pure nix. We
implement the decoding as a simple state machine which is fed one byte
at a time. Decoding whole strings is possible by subsequently calling
step. This is done in decode which uses builtins.foldl' to get around
recursion restrictions and a neat trick using builtins.deepSeq puck
showed me limiting the size of the thunks in a foldl' (which can also
cause a stack overflow).

This makes decoding arbitrarily large UTF-8 files into codepoints using
nix theoretically possible, but it is not really practical: Decoding a
36KB LaTeX file I had lying around takes ~160s on my laptop.

Change-Id: Iab8c973dac89074ec280b4880a7408e0b3d19bc7
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2590
Tested-by: BuildkiteCI
Reviewed-by: sterni <sternenseemann@systemli.org>
2021-03-05 11:07:41 +00:00
..
clhs-lookup feat(users/sterni): move clhs.clhs-lookup to clhs-lookup 2021-01-29 17:36:40 +00:00
nix feat(users/sterni/nix/utf8): pure nix utf-8 decoder 2021-03-05 11:07:41 +00:00
keys.nix feat(ops/nixos/whitby): add sterni user 2021-01-13 22:05:33 +00:00
OWNERS chore(sterni): init user folder 2021-01-11 11:43:33 +00:00