On Linux open_in_bin on a directory succeeds and in_channel_length answers a number; the read is where EISDIR arrives. Guarding only the open turned (embed "assets") — someone who meant embed-dir — into an uncaught OCaml exception out of the checker, which is the one way a user could make the compiler crash rather than refuse. It now says it is a directory and names the form that embeds one. Same class, same function family: read_embed_dir tested is_directory before file_exists, and Sys.is_directory raises on a path that does not resolve, so a dangling symlink inside an embedded directory crashed before the existence test ran. The conjuncts are swapped. slurp.flan gets its dev build, and the compiler-emitted use-value gets the same unarmed-restart assertion the hand-written one has. It is the first clause the compiler emits with a parameter — alloc_guard's retry takes none — so it is worth saying it rides emit.ml's existing path rather than sitting beside it. flan_file_read loses its declare: nothing Flan emits calls it, only flan_slurp_into does, from C. That takes the edit to emit.ml down to four declare lines and a comment.
Description
Languages
OCaml
67.2%
Emacs Lisp
15.2%
C
10.4%
HTML
2.9%
Standard ML
2.8%
Other
1.5%