@live-codes/ocaml 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/README.md +23 -16
  2. package/assets/compiler/compile_stdout.browser.js +18185 -18181
  3. package/assets/compiler/libs/base64.cma +0 -0
  4. package/assets/compiler/libs/base64.cmi +0 -0
  5. package/assets/compiler/libs/big_int_Z.cmi +0 -0
  6. package/assets/compiler/libs/digestif.cmi +0 -0
  7. package/assets/compiler/libs/dllcamlruntime_eventsbyt-x86_64-pc-linux-gnu-a100.so +0 -0
  8. package/assets/compiler/libs/dllcamlstrbyt-x86_64-pc-linux-gnu-a100.so +0 -0
  9. package/assets/compiler/libs/dlldigestif_c_stubs.so +0 -0
  10. package/assets/compiler/libs/dllgraphics_js_stubs.so +0 -0
  11. package/assets/compiler/libs/dllgraphics_stubs.so +0 -0
  12. package/assets/compiler/libs/dlljs_of_ocaml_compiler_dynlink_stubs.so +0 -0
  13. package/assets/compiler/libs/dlljs_of_ocaml_stubs.so +0 -0
  14. package/assets/compiler/libs/dlljsoo_runtime_stubs.so +0 -0
  15. package/assets/compiler/libs/dlllwt_unix_stubs.so +0 -0
  16. package/assets/compiler/libs/dllthreads-x86_64-pc-linux-gnu-a100.so +0 -0
  17. package/assets/compiler/libs/dllunixbyt-x86_64-pc-linux-gnu-a100.so +0 -0
  18. package/assets/compiler/libs/dllzarith.so +0 -0
  19. package/assets/compiler/libs/fmt.cma +0 -0
  20. package/assets/compiler/libs/fmt.cmi +0 -0
  21. package/assets/compiler/libs/graphics.cma +0 -0
  22. package/assets/compiler/libs/graphics.cmi +0 -0
  23. package/assets/compiler/libs/graphicsX11.cmi +0 -0
  24. package/assets/compiler/libs/index.txt +105 -0
  25. package/assets/compiler/libs/js_of_ocaml.cma +0 -0
  26. package/assets/compiler/libs/js_of_ocaml.cmi +0 -0
  27. package/assets/compiler/libs/js_of_ocaml__.cmi +0 -0
  28. package/assets/compiler/libs/js_of_ocaml__Abort.cmi +0 -0
  29. package/assets/compiler/libs/js_of_ocaml__CSS.cmi +0 -0
  30. package/assets/compiler/libs/js_of_ocaml__Console.cmi +0 -0
  31. package/assets/compiler/libs/js_of_ocaml__Dom.cmi +0 -0
  32. package/assets/compiler/libs/js_of_ocaml__Dom_events.cmi +0 -0
  33. package/assets/compiler/libs/js_of_ocaml__Dom_html.cmi +0 -0
  34. package/assets/compiler/libs/js_of_ocaml__Dom_svg.cmi +0 -0
  35. package/assets/compiler/libs/js_of_ocaml__Effect_js.cmi +0 -0
  36. package/assets/compiler/libs/js_of_ocaml__EventSource.cmi +0 -0
  37. package/assets/compiler/libs/js_of_ocaml__Fetch.cmi +0 -0
  38. package/assets/compiler/libs/js_of_ocaml__File.cmi +0 -0
  39. package/assets/compiler/libs/js_of_ocaml__Form.cmi +0 -0
  40. package/assets/compiler/libs/js_of_ocaml__Geolocation.cmi +0 -0
  41. package/assets/compiler/libs/js_of_ocaml__Import.cmi +0 -0
  42. package/assets/compiler/libs/js_of_ocaml__IntersectionObserver.cmi +0 -0
  43. package/assets/compiler/libs/js_of_ocaml__Intl.cmi +0 -0
  44. package/assets/compiler/libs/js_of_ocaml__Js.cmi +0 -0
  45. package/assets/compiler/libs/js_of_ocaml__Json.cmi +0 -0
  46. package/assets/compiler/libs/js_of_ocaml__Jstable.cmi +0 -0
  47. package/assets/compiler/libs/js_of_ocaml__Lib_version.cmi +0 -0
  48. package/assets/compiler/libs/js_of_ocaml__MutationObserver.cmi +0 -0
  49. package/assets/compiler/libs/js_of_ocaml__Performance.cmi +0 -0
  50. package/assets/compiler/libs/js_of_ocaml__PerformanceObserver.cmi +0 -0
  51. package/assets/compiler/libs/js_of_ocaml__Promise.cmi +0 -0
  52. package/assets/compiler/libs/js_of_ocaml__Regexp.cmi +0 -0
  53. package/assets/compiler/libs/js_of_ocaml__ResizeObserver.cmi +0 -0
  54. package/assets/compiler/libs/js_of_ocaml__Sys_js.cmi +0 -0
  55. package/assets/compiler/libs/js_of_ocaml__Typed_array.cmi +0 -0
  56. package/assets/compiler/libs/js_of_ocaml__Url.cmi +0 -0
  57. package/assets/compiler/libs/js_of_ocaml__WebGL.cmi +0 -0
  58. package/assets/compiler/libs/js_of_ocaml__WebSockets.cmi +0 -0
  59. package/assets/compiler/libs/js_of_ocaml__Worker.cmi +0 -0
  60. package/assets/compiler/libs/js_of_ocaml__XmlHttpRequest.cmi +0 -0
  61. package/assets/compiler/libs/js_of_ocaml_lwt.cma +0 -0
  62. package/assets/compiler/libs/js_of_ocaml_lwt.cmi +0 -0
  63. package/assets/compiler/libs/js_of_ocaml_lwt__.cmi +0 -0
  64. package/assets/compiler/libs/js_of_ocaml_lwt__Import.cmi +0 -0
  65. package/assets/compiler/libs/js_of_ocaml_lwt__Lwt_file.cmi +0 -0
  66. package/assets/compiler/libs/js_of_ocaml_lwt__Lwt_js.cmi +0 -0
  67. package/assets/compiler/libs/js_of_ocaml_lwt__Lwt_js_events.cmi +0 -0
  68. package/assets/compiler/libs/js_of_ocaml_lwt__Lwt_jsonp.cmi +0 -0
  69. package/assets/compiler/libs/js_of_ocaml_lwt__Lwt_promise.cmi +0 -0
  70. package/assets/compiler/libs/js_of_ocaml_lwt__Lwt_xmlHttpRequest.cmi +0 -0
  71. package/assets/compiler/libs/jsonm.cma +0 -0
  72. package/assets/compiler/libs/jsonm.cmi +0 -0
  73. package/assets/compiler/libs/jsoo_runtime.cma +0 -0
  74. package/assets/compiler/libs/jsoo_runtime.cmi +0 -0
  75. package/assets/compiler/libs/jsoo_runtime__.cmi +0 -0
  76. package/assets/compiler/libs/jsoo_runtime__Runtime_version.cmi +0 -0
  77. package/assets/compiler/libs/logs.cma +0 -0
  78. package/assets/compiler/libs/logs.cmi +0 -0
  79. package/assets/compiler/libs/lwt.cma +0 -0
  80. package/assets/compiler/libs/lwt.cmi +0 -0
  81. package/assets/compiler/libs/lwt_condition.cmi +0 -0
  82. package/assets/compiler/libs/lwt_list.cmi +0 -0
  83. package/assets/compiler/libs/lwt_mutex.cmi +0 -0
  84. package/assets/compiler/libs/lwt_mvar.cmi +0 -0
  85. package/assets/compiler/libs/lwt_pool.cmi +0 -0
  86. package/assets/compiler/libs/lwt_pqueue.cmi +0 -0
  87. package/assets/compiler/libs/lwt_result.cmi +0 -0
  88. package/assets/compiler/libs/lwt_rte.cmi +0 -0
  89. package/assets/compiler/libs/lwt_seq.cmi +0 -0
  90. package/assets/compiler/libs/lwt_sequence.cmi +0 -0
  91. package/assets/compiler/libs/lwt_stream.cmi +0 -0
  92. package/assets/compiler/libs/lwt_switch.cmi +0 -0
  93. package/assets/compiler/libs/manifest.txt +132 -0
  94. package/assets/compiler/libs/q.cmi +0 -0
  95. package/assets/compiler/libs/re.cma +0 -0
  96. package/assets/compiler/libs/re.cmi +0 -0
  97. package/assets/compiler/libs/re__.cmi +0 -0
  98. package/assets/compiler/libs/re__Ast.cmi +0 -0
  99. package/assets/compiler/libs/re__Automata.cmi +0 -0
  100. package/assets/compiler/libs/re__Bit_vector.cmi +0 -0
  101. package/assets/compiler/libs/re__Category.cmi +0 -0
  102. package/assets/compiler/libs/re__Color_map.cmi +0 -0
  103. package/assets/compiler/libs/re__Compile.cmi +0 -0
  104. package/assets/compiler/libs/re__Core.cmi +0 -0
  105. package/assets/compiler/libs/re__Cset.cmi +0 -0
  106. package/assets/compiler/libs/re__Dense_map.cmi +0 -0
  107. package/assets/compiler/libs/re__Dyn.cmi +0 -0
  108. package/assets/compiler/libs/re__Emacs.cmi +0 -0
  109. package/assets/compiler/libs/re__Fmt.cmi +0 -0
  110. package/assets/compiler/libs/re__Glob.cmi +0 -0
  111. package/assets/compiler/libs/re__Group.cmi +0 -0
  112. package/assets/compiler/libs/re__Hash_set.cmi +0 -0
  113. package/assets/compiler/libs/re__Import.cmi +0 -0
  114. package/assets/compiler/libs/re__Mark_infos.cmi +0 -0
  115. package/assets/compiler/libs/re__Parse_buffer.cmi +0 -0
  116. package/assets/compiler/libs/re__Pcre.cmi +0 -0
  117. package/assets/compiler/libs/re__Perl.cmi +0 -0
  118. package/assets/compiler/libs/re__Pmark.cmi +0 -0
  119. package/assets/compiler/libs/re__Posix.cmi +0 -0
  120. package/assets/compiler/libs/re__Posix_class.cmi +0 -0
  121. package/assets/compiler/libs/re__Replace.cmi +0 -0
  122. package/assets/compiler/libs/re__Search.cmi +0 -0
  123. package/assets/compiler/libs/re__Slice.cmi +0 -0
  124. package/assets/compiler/libs/re__Str.cmi +0 -0
  125. package/assets/compiler/libs/re__View.cmi +0 -0
  126. package/assets/compiler/libs/str.cma +0 -0
  127. package/assets/compiler/libs/str.cmi +0 -0
  128. package/assets/compiler/libs/stubs.txt +12 -0
  129. package/assets/compiler/libs/unix.cma +0 -0
  130. package/assets/compiler/libs/unix.cmi +0 -0
  131. package/assets/compiler/libs/unixLabels.cmi +0 -0
  132. package/assets/compiler/libs/uutf.cma +0 -0
  133. package/assets/compiler/libs/uutf.cmi +0 -0
  134. package/assets/compiler/libs/xmlm.cma +0 -0
  135. package/assets/compiler/libs/xmlm.cmi +0 -0
  136. package/assets/compiler/libs/z.cmi +0 -0
  137. package/assets/compiler/libs/zarith.cma +0 -0
  138. package/assets/compiler/libs/zarith_stubs_js.runtime.js +1246 -0
  139. package/assets/compiler/worker.js +38 -2
  140. package/assets/interpreter/libs/base64.cma +0 -0
  141. package/assets/interpreter/libs/base64.cmi +0 -0
  142. package/assets/interpreter/libs/big_int_Z.cmi +0 -0
  143. package/assets/interpreter/libs/fmt.cma +0 -0
  144. package/assets/interpreter/libs/fmt.cmi +0 -0
  145. package/assets/interpreter/libs/graphics.cma +0 -0
  146. package/assets/interpreter/libs/graphics.cmi +0 -0
  147. package/assets/interpreter/libs/graphicsX11.cmi +0 -0
  148. package/assets/interpreter/libs/js_of_ocaml.cma +0 -0
  149. package/assets/interpreter/libs/js_of_ocaml.cmi +0 -0
  150. package/assets/interpreter/libs/js_of_ocaml__.cmi +0 -0
  151. package/assets/interpreter/libs/js_of_ocaml__Abort.cmi +0 -0
  152. package/assets/interpreter/libs/js_of_ocaml__CSS.cmi +0 -0
  153. package/assets/interpreter/libs/js_of_ocaml__Console.cmi +0 -0
  154. package/assets/interpreter/libs/js_of_ocaml__Dom.cmi +0 -0
  155. package/assets/interpreter/libs/js_of_ocaml__Dom_events.cmi +0 -0
  156. package/assets/interpreter/libs/js_of_ocaml__Dom_html.cmi +0 -0
  157. package/assets/interpreter/libs/js_of_ocaml__Dom_svg.cmi +0 -0
  158. package/assets/interpreter/libs/js_of_ocaml__Effect_js.cmi +0 -0
  159. package/assets/interpreter/libs/js_of_ocaml__EventSource.cmi +0 -0
  160. package/assets/interpreter/libs/js_of_ocaml__Fetch.cmi +0 -0
  161. package/assets/interpreter/libs/js_of_ocaml__File.cmi +0 -0
  162. package/assets/interpreter/libs/js_of_ocaml__Form.cmi +0 -0
  163. package/assets/interpreter/libs/js_of_ocaml__Geolocation.cmi +0 -0
  164. package/assets/interpreter/libs/js_of_ocaml__Import.cmi +0 -0
  165. package/assets/interpreter/libs/js_of_ocaml__IntersectionObserver.cmi +0 -0
  166. package/assets/interpreter/libs/js_of_ocaml__Intl.cmi +0 -0
  167. package/assets/interpreter/libs/js_of_ocaml__Js.cmi +0 -0
  168. package/assets/interpreter/libs/js_of_ocaml__Json.cmi +0 -0
  169. package/assets/interpreter/libs/js_of_ocaml__Jstable.cmi +0 -0
  170. package/assets/interpreter/libs/js_of_ocaml__Lib_version.cmi +0 -0
  171. package/assets/interpreter/libs/js_of_ocaml__MutationObserver.cmi +0 -0
  172. package/assets/interpreter/libs/js_of_ocaml__Performance.cmi +0 -0
  173. package/assets/interpreter/libs/js_of_ocaml__PerformanceObserver.cmi +0 -0
  174. package/assets/interpreter/libs/js_of_ocaml__Promise.cmi +0 -0
  175. package/assets/interpreter/libs/js_of_ocaml__Regexp.cmi +0 -0
  176. package/assets/interpreter/libs/js_of_ocaml__ResizeObserver.cmi +0 -0
  177. package/assets/interpreter/libs/js_of_ocaml__Sys_js.cmi +0 -0
  178. package/assets/interpreter/libs/js_of_ocaml__Typed_array.cmi +0 -0
  179. package/assets/interpreter/libs/js_of_ocaml__Url.cmi +0 -0
  180. package/assets/interpreter/libs/js_of_ocaml__WebGL.cmi +0 -0
  181. package/assets/interpreter/libs/js_of_ocaml__WebSockets.cmi +0 -0
  182. package/assets/interpreter/libs/js_of_ocaml__Worker.cmi +0 -0
  183. package/assets/interpreter/libs/js_of_ocaml__XmlHttpRequest.cmi +0 -0
  184. package/assets/interpreter/libs/js_of_ocaml_lwt.cma +0 -0
  185. package/assets/interpreter/libs/js_of_ocaml_lwt.cmi +0 -0
  186. package/assets/interpreter/libs/js_of_ocaml_lwt__.cmi +0 -0
  187. package/assets/interpreter/libs/js_of_ocaml_lwt__Import.cmi +0 -0
  188. package/assets/interpreter/libs/js_of_ocaml_lwt__Lwt_file.cmi +0 -0
  189. package/assets/interpreter/libs/js_of_ocaml_lwt__Lwt_js.cmi +0 -0
  190. package/assets/interpreter/libs/js_of_ocaml_lwt__Lwt_js_events.cmi +0 -0
  191. package/assets/interpreter/libs/js_of_ocaml_lwt__Lwt_jsonp.cmi +0 -0
  192. package/assets/interpreter/libs/js_of_ocaml_lwt__Lwt_promise.cmi +0 -0
  193. package/assets/interpreter/libs/js_of_ocaml_lwt__Lwt_xmlHttpRequest.cmi +0 -0
  194. package/assets/interpreter/libs/jsonm.cma +0 -0
  195. package/assets/interpreter/libs/jsonm.cmi +0 -0
  196. package/assets/interpreter/libs/jsoo_runtime.cma +0 -0
  197. package/assets/interpreter/libs/logs.cma +0 -0
  198. package/assets/interpreter/libs/logs.cmi +0 -0
  199. package/assets/interpreter/libs/lwt.cma +0 -0
  200. package/assets/interpreter/libs/lwt.cmi +0 -0
  201. package/assets/interpreter/libs/lwt_condition.cmi +0 -0
  202. package/assets/interpreter/libs/lwt_list.cmi +0 -0
  203. package/assets/interpreter/libs/lwt_mutex.cmi +0 -0
  204. package/assets/interpreter/libs/lwt_mvar.cmi +0 -0
  205. package/assets/interpreter/libs/lwt_pool.cmi +0 -0
  206. package/assets/interpreter/libs/lwt_pqueue.cmi +0 -0
  207. package/assets/interpreter/libs/lwt_result.cmi +0 -0
  208. package/assets/interpreter/libs/lwt_rte.cmi +0 -0
  209. package/assets/interpreter/libs/lwt_seq.cmi +0 -0
  210. package/assets/interpreter/libs/lwt_sequence.cmi +0 -0
  211. package/assets/interpreter/libs/lwt_stream.cmi +0 -0
  212. package/assets/interpreter/libs/lwt_switch.cmi +0 -0
  213. package/assets/interpreter/libs/manifest.txt +16 -0
  214. package/assets/interpreter/libs/q.cmi +0 -0
  215. package/assets/interpreter/libs/re.cma +0 -0
  216. package/assets/interpreter/libs/re.cmi +0 -0
  217. package/assets/interpreter/libs/re__.cmi +0 -0
  218. package/assets/interpreter/libs/re__Ast.cmi +0 -0
  219. package/assets/interpreter/libs/re__Automata.cmi +0 -0
  220. package/assets/interpreter/libs/re__Bit_vector.cmi +0 -0
  221. package/assets/interpreter/libs/re__Category.cmi +0 -0
  222. package/assets/interpreter/libs/re__Color_map.cmi +0 -0
  223. package/assets/interpreter/libs/re__Compile.cmi +0 -0
  224. package/assets/interpreter/libs/re__Core.cmi +0 -0
  225. package/assets/interpreter/libs/re__Cset.cmi +0 -0
  226. package/assets/interpreter/libs/re__Dense_map.cmi +0 -0
  227. package/assets/interpreter/libs/re__Dyn.cmi +0 -0
  228. package/assets/interpreter/libs/re__Emacs.cmi +0 -0
  229. package/assets/interpreter/libs/re__Fmt.cmi +0 -0
  230. package/assets/interpreter/libs/re__Glob.cmi +0 -0
  231. package/assets/interpreter/libs/re__Group.cmi +0 -0
  232. package/assets/interpreter/libs/re__Hash_set.cmi +0 -0
  233. package/assets/interpreter/libs/re__Import.cmi +0 -0
  234. package/assets/interpreter/libs/re__Mark_infos.cmi +0 -0
  235. package/assets/interpreter/libs/re__Parse_buffer.cmi +0 -0
  236. package/assets/interpreter/libs/re__Pcre.cmi +0 -0
  237. package/assets/interpreter/libs/re__Perl.cmi +0 -0
  238. package/assets/interpreter/libs/re__Pmark.cmi +0 -0
  239. package/assets/interpreter/libs/re__Posix.cmi +0 -0
  240. package/assets/interpreter/libs/re__Posix_class.cmi +0 -0
  241. package/assets/interpreter/libs/re__Replace.cmi +0 -0
  242. package/assets/interpreter/libs/re__Search.cmi +0 -0
  243. package/assets/interpreter/libs/re__Slice.cmi +0 -0
  244. package/assets/interpreter/libs/re__Str.cmi +0 -0
  245. package/assets/interpreter/libs/re__View.cmi +0 -0
  246. package/assets/interpreter/libs/str.cma +0 -0
  247. package/assets/interpreter/libs/str.cmi +0 -0
  248. package/assets/interpreter/libs/unix.cma +0 -0
  249. package/assets/interpreter/libs/unix.cmi +0 -0
  250. package/assets/interpreter/libs/unixLabels.cmi +0 -0
  251. package/assets/interpreter/libs/uutf.cma +0 -0
  252. package/assets/interpreter/libs/uutf.cmi +0 -0
  253. package/assets/interpreter/libs/xmlm.cma +0 -0
  254. package/assets/interpreter/libs/xmlm.cmi +0 -0
  255. package/assets/interpreter/libs/z.cmi +0 -0
  256. package/assets/interpreter/libs/zarith.cma +0 -0
  257. package/assets/interpreter/libs/zarith_stubs_js.cma +0 -0
  258. package/assets/interpreter/libs/zarith_stubs_js.cmi +0 -0
  259. package/assets/interpreter/worker.js +20246 -20050
  260. package/package.json +1 -1
  261. package/src/compiler/compile.js +185 -14
  262. package/src/compiler/worker.js +38 -2
package/README.md CHANGED
@@ -60,13 +60,14 @@ program runs in the page rather than as a process — the same trade every compi
60
60
  LiveCodes makes, and it is what buys page interaction, since the program *is* JavaScript by the time
61
61
  it runs. If you need a process-like contract, use the interpreter.
62
62
 
63
- About 14 MB of assets, fetched once and cacheable: 2.6 MB for the driver, 5.02 MB for js_of_ocaml,
64
- 0.8 MB of the js_of_ocaml runtime chunks the compiler looks for while emitting, and 5.67 MB for the
65
- standard library. That last one is a single `js_of_ocaml build-fs` artifact carrying all 75 files
66
- rather than 75 fetched separately — about 2.6× the size, because a byte above 127 inlines as an
67
- escape, but one request instead of 75 and nothing to assemble on the page. A small program compiles
68
- in about a second and emits roughly 70 KB — the JavaScript is pretty-printed, which is what a
69
- Compiled Code pane wants, and it keeps the output line-oriented.
63
+ About 25 MB of assets, fetched once and cacheable: 2.6 MB for the driver, 5.02 MB for js_of_ocaml,
64
+ 0.8 MB of the runtime chunks the compiler looks for while emitting, 5.67 MB for the standard library,
65
+ and 9.6 MB of libraries. The standard library is a single `js_of_ocaml build-fs` artifact carrying all
66
+ its files rather than fetching them one at a time — about 2.6× the size, because a byte above 127
67
+ inlines as an escape, but one request and nothing to assemble on the page. The libraries go the other
68
+ way, as plain files, because only the ones a program names are fetched. A small program compiles in
69
+ about a second and emits roughly 70 KB — the JavaScript is pretty-printed, which is what a Compiled
70
+ Code pane wants, and it keeps the output line-oriented.
70
71
 
71
72
  ## The interpreter
72
73
 
@@ -111,14 +112,20 @@ Two choices worth knowing, since they are choices:
111
112
  runtime's filesystem so `open_in "name"` finds them), which `run(code, input, runOptions)` can
112
113
  override per run. `compiler.dispose()` stops the worker.
113
114
 
114
- **Libraries load on demand.** A library's `.cma` is fetched and Dynlinked the first time code names
115
- one of its modules. The archive must be built for the same OCaml version and be pure enough to run in
116
- a browser — no C stubs, no `Unix`, no threads — so most of opam is out, which is a toolchain step
117
- rather than something this package can do at runtime.
118
-
119
- **No JS interop and no DOM.** The toplevel runs in a Worker, which has no `document` at all, and the
120
- build exports only the standard library, so `Js` and `Dom_html` are unbound. Use the compiler if you
121
- want the program to touch the page — that is exactly what it is for.
115
+ **Libraries load on demand.** `assets/interpreter/libs/manifest.txt` says which archive implements
116
+ which modules; when the type-checker asks for an interface the toplevel cannot find, the archive is
117
+ fetched, Dynlinked, and the interface read out of it. A program that names none of them fetches none
118
+ of them. Seventeen libraries are staged: js_of_ocaml's browser runtime (`Js`, `Dom_html`, the web
119
+ APIs), the standard library's own extras (`Str`, `Unix`, `Graphics`), Lwt with `js_of_ocaml-lwt`,
120
+ pure OCaml packages such as `Re`, `uutf`, `jsonm`, `fmt`, `logs`, `base64` and `xmlm`, Zarith —
121
+ arbitrary-precision arithmetic, whose C stubs `zarith_stubs_js` replaces in JavaScript — and a small
122
+ `greet` fixture the Node check uses. An archive must be built for the same OCaml version and either
123
+ avoid C stubs or have a JavaScript replacement for them; that is a toolchain step, not something this
124
+ package can do at runtime.
125
+
126
+ **No DOM, though the bindings are there.** The toplevel runs in a Worker, so `Js` and `Dom_html` load
127
+ on demand but there is no `document` to reach through them. `Js` itself works normally. Use the
128
+ compiler if you want the program to touch the page — that is exactly what it is for.
122
129
 
123
130
  ## Which one
124
131
 
@@ -127,7 +134,7 @@ want the program to touch the page — that is exactly what it is for.
127
134
  | Result | JavaScript the page runs | Output text, from a program that ran |
128
135
  | Page interaction | yes — it *is* JavaScript by then | no |
129
136
  | stdin, argv, exit codes | no | yes |
130
- | Libraries | linked in when compiling | loaded on demand |
137
+ | Libraries | fetched on demand, then linked | fetched on demand, then Dynlinked |
131
138
  | Cost per run | ~1 s | instant, incremental |
132
139
 
133
140
  ## License