@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.
- package/README.md +23 -16
- package/assets/compiler/compile_stdout.browser.js +18185 -18181
- package/assets/compiler/libs/base64.cma +0 -0
- package/assets/compiler/libs/base64.cmi +0 -0
- package/assets/compiler/libs/big_int_Z.cmi +0 -0
- package/assets/compiler/libs/digestif.cmi +0 -0
- package/assets/compiler/libs/dllcamlruntime_eventsbyt-x86_64-pc-linux-gnu-a100.so +0 -0
- package/assets/compiler/libs/dllcamlstrbyt-x86_64-pc-linux-gnu-a100.so +0 -0
- package/assets/compiler/libs/dlldigestif_c_stubs.so +0 -0
- package/assets/compiler/libs/dllgraphics_js_stubs.so +0 -0
- package/assets/compiler/libs/dllgraphics_stubs.so +0 -0
- package/assets/compiler/libs/dlljs_of_ocaml_compiler_dynlink_stubs.so +0 -0
- package/assets/compiler/libs/dlljs_of_ocaml_stubs.so +0 -0
- package/assets/compiler/libs/dlljsoo_runtime_stubs.so +0 -0
- package/assets/compiler/libs/dlllwt_unix_stubs.so +0 -0
- package/assets/compiler/libs/dllthreads-x86_64-pc-linux-gnu-a100.so +0 -0
- package/assets/compiler/libs/dllunixbyt-x86_64-pc-linux-gnu-a100.so +0 -0
- package/assets/compiler/libs/dllzarith.so +0 -0
- package/assets/compiler/libs/fmt.cma +0 -0
- package/assets/compiler/libs/fmt.cmi +0 -0
- package/assets/compiler/libs/graphics.cma +0 -0
- package/assets/compiler/libs/graphics.cmi +0 -0
- package/assets/compiler/libs/graphicsX11.cmi +0 -0
- package/assets/compiler/libs/index.txt +105 -0
- package/assets/compiler/libs/js_of_ocaml.cma +0 -0
- package/assets/compiler/libs/js_of_ocaml.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Abort.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__CSS.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Console.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Dom.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Dom_events.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Dom_html.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Dom_svg.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Effect_js.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__EventSource.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Fetch.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__File.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Form.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Geolocation.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Import.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__IntersectionObserver.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Intl.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Js.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Json.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Jstable.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Lib_version.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__MutationObserver.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Performance.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__PerformanceObserver.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Promise.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Regexp.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__ResizeObserver.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Sys_js.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Typed_array.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Url.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__WebGL.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__WebSockets.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__Worker.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml__XmlHttpRequest.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml_lwt.cma +0 -0
- package/assets/compiler/libs/js_of_ocaml_lwt.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml_lwt__.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml_lwt__Import.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml_lwt__Lwt_file.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml_lwt__Lwt_js.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml_lwt__Lwt_js_events.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml_lwt__Lwt_jsonp.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml_lwt__Lwt_promise.cmi +0 -0
- package/assets/compiler/libs/js_of_ocaml_lwt__Lwt_xmlHttpRequest.cmi +0 -0
- package/assets/compiler/libs/jsonm.cma +0 -0
- package/assets/compiler/libs/jsonm.cmi +0 -0
- package/assets/compiler/libs/jsoo_runtime.cma +0 -0
- package/assets/compiler/libs/jsoo_runtime.cmi +0 -0
- package/assets/compiler/libs/jsoo_runtime__.cmi +0 -0
- package/assets/compiler/libs/jsoo_runtime__Runtime_version.cmi +0 -0
- package/assets/compiler/libs/logs.cma +0 -0
- package/assets/compiler/libs/logs.cmi +0 -0
- package/assets/compiler/libs/lwt.cma +0 -0
- package/assets/compiler/libs/lwt.cmi +0 -0
- package/assets/compiler/libs/lwt_condition.cmi +0 -0
- package/assets/compiler/libs/lwt_list.cmi +0 -0
- package/assets/compiler/libs/lwt_mutex.cmi +0 -0
- package/assets/compiler/libs/lwt_mvar.cmi +0 -0
- package/assets/compiler/libs/lwt_pool.cmi +0 -0
- package/assets/compiler/libs/lwt_pqueue.cmi +0 -0
- package/assets/compiler/libs/lwt_result.cmi +0 -0
- package/assets/compiler/libs/lwt_rte.cmi +0 -0
- package/assets/compiler/libs/lwt_seq.cmi +0 -0
- package/assets/compiler/libs/lwt_sequence.cmi +0 -0
- package/assets/compiler/libs/lwt_stream.cmi +0 -0
- package/assets/compiler/libs/lwt_switch.cmi +0 -0
- package/assets/compiler/libs/manifest.txt +132 -0
- package/assets/compiler/libs/q.cmi +0 -0
- package/assets/compiler/libs/re.cma +0 -0
- package/assets/compiler/libs/re.cmi +0 -0
- package/assets/compiler/libs/re__.cmi +0 -0
- package/assets/compiler/libs/re__Ast.cmi +0 -0
- package/assets/compiler/libs/re__Automata.cmi +0 -0
- package/assets/compiler/libs/re__Bit_vector.cmi +0 -0
- package/assets/compiler/libs/re__Category.cmi +0 -0
- package/assets/compiler/libs/re__Color_map.cmi +0 -0
- package/assets/compiler/libs/re__Compile.cmi +0 -0
- package/assets/compiler/libs/re__Core.cmi +0 -0
- package/assets/compiler/libs/re__Cset.cmi +0 -0
- package/assets/compiler/libs/re__Dense_map.cmi +0 -0
- package/assets/compiler/libs/re__Dyn.cmi +0 -0
- package/assets/compiler/libs/re__Emacs.cmi +0 -0
- package/assets/compiler/libs/re__Fmt.cmi +0 -0
- package/assets/compiler/libs/re__Glob.cmi +0 -0
- package/assets/compiler/libs/re__Group.cmi +0 -0
- package/assets/compiler/libs/re__Hash_set.cmi +0 -0
- package/assets/compiler/libs/re__Import.cmi +0 -0
- package/assets/compiler/libs/re__Mark_infos.cmi +0 -0
- package/assets/compiler/libs/re__Parse_buffer.cmi +0 -0
- package/assets/compiler/libs/re__Pcre.cmi +0 -0
- package/assets/compiler/libs/re__Perl.cmi +0 -0
- package/assets/compiler/libs/re__Pmark.cmi +0 -0
- package/assets/compiler/libs/re__Posix.cmi +0 -0
- package/assets/compiler/libs/re__Posix_class.cmi +0 -0
- package/assets/compiler/libs/re__Replace.cmi +0 -0
- package/assets/compiler/libs/re__Search.cmi +0 -0
- package/assets/compiler/libs/re__Slice.cmi +0 -0
- package/assets/compiler/libs/re__Str.cmi +0 -0
- package/assets/compiler/libs/re__View.cmi +0 -0
- package/assets/compiler/libs/str.cma +0 -0
- package/assets/compiler/libs/str.cmi +0 -0
- package/assets/compiler/libs/stubs.txt +12 -0
- package/assets/compiler/libs/unix.cma +0 -0
- package/assets/compiler/libs/unix.cmi +0 -0
- package/assets/compiler/libs/unixLabels.cmi +0 -0
- package/assets/compiler/libs/uutf.cma +0 -0
- package/assets/compiler/libs/uutf.cmi +0 -0
- package/assets/compiler/libs/xmlm.cma +0 -0
- package/assets/compiler/libs/xmlm.cmi +0 -0
- package/assets/compiler/libs/z.cmi +0 -0
- package/assets/compiler/libs/zarith.cma +0 -0
- package/assets/compiler/libs/zarith_stubs_js.runtime.js +1246 -0
- package/assets/compiler/worker.js +38 -2
- package/assets/interpreter/libs/base64.cma +0 -0
- package/assets/interpreter/libs/base64.cmi +0 -0
- package/assets/interpreter/libs/big_int_Z.cmi +0 -0
- package/assets/interpreter/libs/fmt.cma +0 -0
- package/assets/interpreter/libs/fmt.cmi +0 -0
- package/assets/interpreter/libs/graphics.cma +0 -0
- package/assets/interpreter/libs/graphics.cmi +0 -0
- package/assets/interpreter/libs/graphicsX11.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml.cma +0 -0
- package/assets/interpreter/libs/js_of_ocaml.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Abort.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__CSS.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Console.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Dom.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Dom_events.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Dom_html.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Dom_svg.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Effect_js.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__EventSource.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Fetch.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__File.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Form.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Geolocation.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Import.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__IntersectionObserver.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Intl.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Js.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Json.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Jstable.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Lib_version.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__MutationObserver.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Performance.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__PerformanceObserver.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Promise.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Regexp.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__ResizeObserver.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Sys_js.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Typed_array.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Url.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__WebGL.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__WebSockets.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__Worker.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml__XmlHttpRequest.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml_lwt.cma +0 -0
- package/assets/interpreter/libs/js_of_ocaml_lwt.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml_lwt__.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml_lwt__Import.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml_lwt__Lwt_file.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml_lwt__Lwt_js.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml_lwt__Lwt_js_events.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml_lwt__Lwt_jsonp.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml_lwt__Lwt_promise.cmi +0 -0
- package/assets/interpreter/libs/js_of_ocaml_lwt__Lwt_xmlHttpRequest.cmi +0 -0
- package/assets/interpreter/libs/jsonm.cma +0 -0
- package/assets/interpreter/libs/jsonm.cmi +0 -0
- package/assets/interpreter/libs/jsoo_runtime.cma +0 -0
- package/assets/interpreter/libs/logs.cma +0 -0
- package/assets/interpreter/libs/logs.cmi +0 -0
- package/assets/interpreter/libs/lwt.cma +0 -0
- package/assets/interpreter/libs/lwt.cmi +0 -0
- package/assets/interpreter/libs/lwt_condition.cmi +0 -0
- package/assets/interpreter/libs/lwt_list.cmi +0 -0
- package/assets/interpreter/libs/lwt_mutex.cmi +0 -0
- package/assets/interpreter/libs/lwt_mvar.cmi +0 -0
- package/assets/interpreter/libs/lwt_pool.cmi +0 -0
- package/assets/interpreter/libs/lwt_pqueue.cmi +0 -0
- package/assets/interpreter/libs/lwt_result.cmi +0 -0
- package/assets/interpreter/libs/lwt_rte.cmi +0 -0
- package/assets/interpreter/libs/lwt_seq.cmi +0 -0
- package/assets/interpreter/libs/lwt_sequence.cmi +0 -0
- package/assets/interpreter/libs/lwt_stream.cmi +0 -0
- package/assets/interpreter/libs/lwt_switch.cmi +0 -0
- package/assets/interpreter/libs/manifest.txt +16 -0
- package/assets/interpreter/libs/q.cmi +0 -0
- package/assets/interpreter/libs/re.cma +0 -0
- package/assets/interpreter/libs/re.cmi +0 -0
- package/assets/interpreter/libs/re__.cmi +0 -0
- package/assets/interpreter/libs/re__Ast.cmi +0 -0
- package/assets/interpreter/libs/re__Automata.cmi +0 -0
- package/assets/interpreter/libs/re__Bit_vector.cmi +0 -0
- package/assets/interpreter/libs/re__Category.cmi +0 -0
- package/assets/interpreter/libs/re__Color_map.cmi +0 -0
- package/assets/interpreter/libs/re__Compile.cmi +0 -0
- package/assets/interpreter/libs/re__Core.cmi +0 -0
- package/assets/interpreter/libs/re__Cset.cmi +0 -0
- package/assets/interpreter/libs/re__Dense_map.cmi +0 -0
- package/assets/interpreter/libs/re__Dyn.cmi +0 -0
- package/assets/interpreter/libs/re__Emacs.cmi +0 -0
- package/assets/interpreter/libs/re__Fmt.cmi +0 -0
- package/assets/interpreter/libs/re__Glob.cmi +0 -0
- package/assets/interpreter/libs/re__Group.cmi +0 -0
- package/assets/interpreter/libs/re__Hash_set.cmi +0 -0
- package/assets/interpreter/libs/re__Import.cmi +0 -0
- package/assets/interpreter/libs/re__Mark_infos.cmi +0 -0
- package/assets/interpreter/libs/re__Parse_buffer.cmi +0 -0
- package/assets/interpreter/libs/re__Pcre.cmi +0 -0
- package/assets/interpreter/libs/re__Perl.cmi +0 -0
- package/assets/interpreter/libs/re__Pmark.cmi +0 -0
- package/assets/interpreter/libs/re__Posix.cmi +0 -0
- package/assets/interpreter/libs/re__Posix_class.cmi +0 -0
- package/assets/interpreter/libs/re__Replace.cmi +0 -0
- package/assets/interpreter/libs/re__Search.cmi +0 -0
- package/assets/interpreter/libs/re__Slice.cmi +0 -0
- package/assets/interpreter/libs/re__Str.cmi +0 -0
- package/assets/interpreter/libs/re__View.cmi +0 -0
- package/assets/interpreter/libs/str.cma +0 -0
- package/assets/interpreter/libs/str.cmi +0 -0
- package/assets/interpreter/libs/unix.cma +0 -0
- package/assets/interpreter/libs/unix.cmi +0 -0
- package/assets/interpreter/libs/unixLabels.cmi +0 -0
- package/assets/interpreter/libs/uutf.cma +0 -0
- package/assets/interpreter/libs/uutf.cmi +0 -0
- package/assets/interpreter/libs/xmlm.cma +0 -0
- package/assets/interpreter/libs/xmlm.cmi +0 -0
- package/assets/interpreter/libs/z.cmi +0 -0
- package/assets/interpreter/libs/zarith.cma +0 -0
- package/assets/interpreter/libs/zarith_stubs_js.cma +0 -0
- package/assets/interpreter/libs/zarith_stubs_js.cmi +0 -0
- package/assets/interpreter/worker.js +20246 -20050
- package/package.json +1 -1
- package/src/compiler/compile.js +185 -14
- 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
|
|
64
|
-
0.8 MB of the
|
|
65
|
-
|
|
66
|
-
rather than
|
|
67
|
-
escape, but one request
|
|
68
|
-
|
|
69
|
-
|
|
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.**
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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 |
|
|
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
|