@live-codes/ocaml 0.0.0-stage → 0.1.1

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 (130) hide show
  1. package/LICENSE +220 -0
  2. package/README.md +165 -2
  3. package/THIRD-PARTY-NOTICES.md +52 -0
  4. package/assets/compiler/compile_stdout.browser.js +27856 -0
  5. package/assets/compiler/jsoo.js +12631 -0
  6. package/assets/compiler/package.json +3 -0
  7. package/assets/compiler/runtime/bigarray.js +1072 -0
  8. package/assets/compiler/runtime/bigstring.js +137 -0
  9. package/assets/compiler/runtime/domain.js +393 -0
  10. package/assets/compiler/runtime/dynlink.js +91 -0
  11. package/assets/compiler/runtime/float32.js +486 -0
  12. package/assets/compiler/runtime/fs.js +416 -0
  13. package/assets/compiler/runtime/fs_fake.js +600 -0
  14. package/assets/compiler/runtime/fs_node.js +609 -0
  15. package/assets/compiler/runtime/fs_quickjs.js +532 -0
  16. package/assets/compiler/runtime/gc.js +201 -0
  17. package/assets/compiler/runtime/graphics.js +1053 -0
  18. package/assets/compiler/runtime/ieee_754.js +621 -0
  19. package/assets/compiler/runtime/int64.js +516 -0
  20. package/assets/compiler/runtime/io.js +739 -0
  21. package/assets/compiler/runtime/jslib.js +553 -0
  22. package/assets/compiler/runtime/jslib_js_of_ocaml.js +81 -0
  23. package/assets/compiler/runtime/lexing.js +240 -0
  24. package/assets/compiler/runtime/manifest.txt +31 -0
  25. package/assets/compiler/runtime/marshal.js +863 -0
  26. package/assets/compiler/runtime/md5.js +236 -0
  27. package/assets/compiler/runtime/mlBytes.js +1007 -0
  28. package/assets/compiler/runtime/nat.js +469 -0
  29. package/assets/compiler/runtime/parsing.js +317 -0
  30. package/assets/compiler/runtime/prng.js +84 -0
  31. package/assets/compiler/runtime/promise.js +45 -0
  32. package/assets/compiler/runtime/runtime.js +16688 -0
  33. package/assets/compiler/runtime/runtime_events.js +90 -0
  34. package/assets/compiler/runtime/stdlib.js +363 -0
  35. package/assets/compiler/runtime/sync.js +35 -0
  36. package/assets/compiler/runtime/toplevel.js +150 -0
  37. package/assets/compiler/runtime/unix.js +914 -0
  38. package/assets/compiler/runtime/weak.js +247 -0
  39. package/assets/compiler/stdlib.js +254 -0
  40. package/assets/compiler/worker.js +46 -0
  41. package/assets/interpreter/libs/greet.cma +0 -0
  42. package/assets/interpreter/libs/greet.cmi +0 -0
  43. package/assets/interpreter/libs/manifest.txt +1 -0
  44. package/assets/interpreter/package.json +3 -0
  45. package/assets/interpreter/stdlib/camlinternalFormat.cmi +0 -0
  46. package/assets/interpreter/stdlib/camlinternalFormatBasics.cmi +0 -0
  47. package/assets/interpreter/stdlib/camlinternalLazy.cmi +0 -0
  48. package/assets/interpreter/stdlib/camlinternalMod.cmi +0 -0
  49. package/assets/interpreter/stdlib/camlinternalOO.cmi +0 -0
  50. package/assets/interpreter/stdlib/std_exit.cmi +0 -0
  51. package/assets/interpreter/stdlib/stdlib.cmi +0 -0
  52. package/assets/interpreter/stdlib/stdlib__Arg.cmi +0 -0
  53. package/assets/interpreter/stdlib/stdlib__Array.cmi +0 -0
  54. package/assets/interpreter/stdlib/stdlib__ArrayLabels.cmi +0 -0
  55. package/assets/interpreter/stdlib/stdlib__Atomic.cmi +0 -0
  56. package/assets/interpreter/stdlib/stdlib__Bigarray.cmi +0 -0
  57. package/assets/interpreter/stdlib/stdlib__Bool.cmi +0 -0
  58. package/assets/interpreter/stdlib/stdlib__Buffer.cmi +0 -0
  59. package/assets/interpreter/stdlib/stdlib__Bytes.cmi +0 -0
  60. package/assets/interpreter/stdlib/stdlib__BytesLabels.cmi +0 -0
  61. package/assets/interpreter/stdlib/stdlib__Callback.cmi +0 -0
  62. package/assets/interpreter/stdlib/stdlib__Char.cmi +0 -0
  63. package/assets/interpreter/stdlib/stdlib__Complex.cmi +0 -0
  64. package/assets/interpreter/stdlib/stdlib__Condition.cmi +0 -0
  65. package/assets/interpreter/stdlib/stdlib__Digest.cmi +0 -0
  66. package/assets/interpreter/stdlib/stdlib__Domain.cmi +0 -0
  67. package/assets/interpreter/stdlib/stdlib__Dynarray.cmi +0 -0
  68. package/assets/interpreter/stdlib/stdlib__Effect.cmi +0 -0
  69. package/assets/interpreter/stdlib/stdlib__Either.cmi +0 -0
  70. package/assets/interpreter/stdlib/stdlib__Ephemeron.cmi +0 -0
  71. package/assets/interpreter/stdlib/stdlib__Filename.cmi +0 -0
  72. package/assets/interpreter/stdlib/stdlib__Float.cmi +0 -0
  73. package/assets/interpreter/stdlib/stdlib__Format.cmi +0 -0
  74. package/assets/interpreter/stdlib/stdlib__Fun.cmi +0 -0
  75. package/assets/interpreter/stdlib/stdlib__Gc.cmi +0 -0
  76. package/assets/interpreter/stdlib/stdlib__Hashtbl.cmi +0 -0
  77. package/assets/interpreter/stdlib/stdlib__Iarray.cmi +0 -0
  78. package/assets/interpreter/stdlib/stdlib__In_channel.cmi +0 -0
  79. package/assets/interpreter/stdlib/stdlib__Int.cmi +0 -0
  80. package/assets/interpreter/stdlib/stdlib__Int32.cmi +0 -0
  81. package/assets/interpreter/stdlib/stdlib__Int64.cmi +0 -0
  82. package/assets/interpreter/stdlib/stdlib__Lazy.cmi +0 -0
  83. package/assets/interpreter/stdlib/stdlib__Lexing.cmi +0 -0
  84. package/assets/interpreter/stdlib/stdlib__List.cmi +0 -0
  85. package/assets/interpreter/stdlib/stdlib__ListLabels.cmi +0 -0
  86. package/assets/interpreter/stdlib/stdlib__Map.cmi +0 -0
  87. package/assets/interpreter/stdlib/stdlib__Marshal.cmi +0 -0
  88. package/assets/interpreter/stdlib/stdlib__MoreLabels.cmi +0 -0
  89. package/assets/interpreter/stdlib/stdlib__Mutex.cmi +0 -0
  90. package/assets/interpreter/stdlib/stdlib__Nativeint.cmi +0 -0
  91. package/assets/interpreter/stdlib/stdlib__Obj.cmi +0 -0
  92. package/assets/interpreter/stdlib/stdlib__Oo.cmi +0 -0
  93. package/assets/interpreter/stdlib/stdlib__Option.cmi +0 -0
  94. package/assets/interpreter/stdlib/stdlib__Out_channel.cmi +0 -0
  95. package/assets/interpreter/stdlib/stdlib__Pair.cmi +0 -0
  96. package/assets/interpreter/stdlib/stdlib__Parsing.cmi +0 -0
  97. package/assets/interpreter/stdlib/stdlib__Pqueue.cmi +0 -0
  98. package/assets/interpreter/stdlib/stdlib__Printexc.cmi +0 -0
  99. package/assets/interpreter/stdlib/stdlib__Printf.cmi +0 -0
  100. package/assets/interpreter/stdlib/stdlib__Queue.cmi +0 -0
  101. package/assets/interpreter/stdlib/stdlib__Random.cmi +0 -0
  102. package/assets/interpreter/stdlib/stdlib__Repr.cmi +0 -0
  103. package/assets/interpreter/stdlib/stdlib__Result.cmi +0 -0
  104. package/assets/interpreter/stdlib/stdlib__Scanf.cmi +0 -0
  105. package/assets/interpreter/stdlib/stdlib__Semaphore.cmi +0 -0
  106. package/assets/interpreter/stdlib/stdlib__Seq.cmi +0 -0
  107. package/assets/interpreter/stdlib/stdlib__Set.cmi +0 -0
  108. package/assets/interpreter/stdlib/stdlib__Stack.cmi +0 -0
  109. package/assets/interpreter/stdlib/stdlib__StdLabels.cmi +0 -0
  110. package/assets/interpreter/stdlib/stdlib__String.cmi +0 -0
  111. package/assets/interpreter/stdlib/stdlib__StringLabels.cmi +0 -0
  112. package/assets/interpreter/stdlib/stdlib__Sys.cmi +0 -0
  113. package/assets/interpreter/stdlib/stdlib__Type.cmi +0 -0
  114. package/assets/interpreter/stdlib/stdlib__Uchar.cmi +0 -0
  115. package/assets/interpreter/stdlib/stdlib__Unit.cmi +0 -0
  116. package/assets/interpreter/stdlib/stdlib__Weak.cmi +0 -0
  117. package/assets/interpreter/stdlib/topdirs.cmi +0 -0
  118. package/assets/interpreter/stdlib/units.txt +75 -0
  119. package/assets/interpreter/stdlib/unix.cmi +0 -0
  120. package/assets/interpreter/stdlib/unixLabels.cmi +0 -0
  121. package/assets/interpreter/worker-entry.js +39 -0
  122. package/assets/interpreter/worker.js +42356 -0
  123. package/bin/copy-assets.mjs +75 -0
  124. package/package.json +41 -4
  125. package/src/compiler/compile.js +195 -0
  126. package/src/compiler/index.js +46 -0
  127. package/src/compiler/worker.js +46 -0
  128. package/src/index.js +12 -0
  129. package/src/interpreter/api.js +182 -0
  130. package/src/interpreter/index.js +5 -0
@@ -0,0 +1,236 @@
1
+ // Js_of_ocaml runtime support
2
+ // http://www.ocsigen.org/js_of_ocaml/
3
+ // Copyright (C) 2010 Jérôme Vouillon
4
+ // Laboratoire PPS - CNRS Université Paris Diderot
5
+ //
6
+ // This program is free software; you can redistribute it and/or modify
7
+ // it under the terms of the GNU Lesser General Public License as published by
8
+ // the Free Software Foundation, with linking exception;
9
+ // either version 2.1 of the License, or (at your option) any later version.
10
+ //
11
+ // This program is distributed in the hope that it will be useful,
12
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ // GNU Lesser General Public License for more details.
15
+ //
16
+ // You should have received a copy of the GNU Lesser General Public License
17
+ // along with this program; if not, write to the Free Software
18
+ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
+
20
+ //Provides: caml_md5_chan
21
+ //Requires: caml_string_of_uint8_array
22
+ //Requires: caml_raise_end_of_file, caml_ml_input_block
23
+ //Requires: caml_MD5Init, caml_MD5Update, caml_MD5Final
24
+ function caml_md5_chan(chanid, toread) {
25
+ var ctx = caml_MD5Init();
26
+ var buffer = new Uint8Array(4096);
27
+ if (toread < 0) {
28
+ while (true) {
29
+ var read = caml_ml_input_block(chanid, buffer, 0, buffer.length);
30
+ if (read === 0) break;
31
+ caml_MD5Update(ctx, buffer.subarray(0, read), read);
32
+ }
33
+ } else {
34
+ while (toread > 0) {
35
+ var read = caml_ml_input_block(
36
+ chanid,
37
+ buffer,
38
+ 0,
39
+ toread > buffer.length ? buffer.length : toread,
40
+ );
41
+ if (read === 0) caml_raise_end_of_file();
42
+ caml_MD5Update(ctx, buffer.subarray(0, read), read);
43
+ toread -= read;
44
+ }
45
+ }
46
+ return caml_string_of_uint8_array(caml_MD5Final(ctx));
47
+ }
48
+
49
+ //Provides: caml_md5_string
50
+ //Requires: caml_bytes_of_string, caml_md5_bytes
51
+ function caml_md5_string(s, ofs, len) {
52
+ return caml_md5_bytes(caml_bytes_of_string(s), ofs, len);
53
+ }
54
+
55
+ //Provides: caml_MD5Transform
56
+ var caml_MD5Transform = (function () {
57
+ function add(x, y) {
58
+ return (x + y) | 0;
59
+ }
60
+ function xx(q, a, b, x, s, t) {
61
+ a = add(add(a, q), add(x, t));
62
+ return add((a << s) | (a >>> (32 - s)), b);
63
+ }
64
+ function ff(a, b, c, d, x, s, t) {
65
+ return xx((b & c) | (~b & d), a, b, x, s, t);
66
+ }
67
+ function gg(a, b, c, d, x, s, t) {
68
+ return xx((b & d) | (c & ~d), a, b, x, s, t);
69
+ }
70
+ function hh(a, b, c, d, x, s, t) {
71
+ return xx(b ^ c ^ d, a, b, x, s, t);
72
+ }
73
+ function ii(a, b, c, d, x, s, t) {
74
+ return xx(c ^ (b | ~d), a, b, x, s, t);
75
+ }
76
+
77
+ return function (w, buffer) {
78
+ var a = w[0],
79
+ b = w[1],
80
+ c = w[2],
81
+ d = w[3];
82
+
83
+ a = ff(a, b, c, d, buffer[0], 7, 0xd76aa478);
84
+ d = ff(d, a, b, c, buffer[1], 12, 0xe8c7b756);
85
+ c = ff(c, d, a, b, buffer[2], 17, 0x242070db);
86
+ b = ff(b, c, d, a, buffer[3], 22, 0xc1bdceee);
87
+ a = ff(a, b, c, d, buffer[4], 7, 0xf57c0faf);
88
+ d = ff(d, a, b, c, buffer[5], 12, 0x4787c62a);
89
+ c = ff(c, d, a, b, buffer[6], 17, 0xa8304613);
90
+ b = ff(b, c, d, a, buffer[7], 22, 0xfd469501);
91
+ a = ff(a, b, c, d, buffer[8], 7, 0x698098d8);
92
+ d = ff(d, a, b, c, buffer[9], 12, 0x8b44f7af);
93
+ c = ff(c, d, a, b, buffer[10], 17, 0xffff5bb1);
94
+ b = ff(b, c, d, a, buffer[11], 22, 0x895cd7be);
95
+ a = ff(a, b, c, d, buffer[12], 7, 0x6b901122);
96
+ d = ff(d, a, b, c, buffer[13], 12, 0xfd987193);
97
+ c = ff(c, d, a, b, buffer[14], 17, 0xa679438e);
98
+ b = ff(b, c, d, a, buffer[15], 22, 0x49b40821);
99
+
100
+ a = gg(a, b, c, d, buffer[1], 5, 0xf61e2562);
101
+ d = gg(d, a, b, c, buffer[6], 9, 0xc040b340);
102
+ c = gg(c, d, a, b, buffer[11], 14, 0x265e5a51);
103
+ b = gg(b, c, d, a, buffer[0], 20, 0xe9b6c7aa);
104
+ a = gg(a, b, c, d, buffer[5], 5, 0xd62f105d);
105
+ d = gg(d, a, b, c, buffer[10], 9, 0x02441453);
106
+ c = gg(c, d, a, b, buffer[15], 14, 0xd8a1e681);
107
+ b = gg(b, c, d, a, buffer[4], 20, 0xe7d3fbc8);
108
+ a = gg(a, b, c, d, buffer[9], 5, 0x21e1cde6);
109
+ d = gg(d, a, b, c, buffer[14], 9, 0xc33707d6);
110
+ c = gg(c, d, a, b, buffer[3], 14, 0xf4d50d87);
111
+ b = gg(b, c, d, a, buffer[8], 20, 0x455a14ed);
112
+ a = gg(a, b, c, d, buffer[13], 5, 0xa9e3e905);
113
+ d = gg(d, a, b, c, buffer[2], 9, 0xfcefa3f8);
114
+ c = gg(c, d, a, b, buffer[7], 14, 0x676f02d9);
115
+ b = gg(b, c, d, a, buffer[12], 20, 0x8d2a4c8a);
116
+
117
+ a = hh(a, b, c, d, buffer[5], 4, 0xfffa3942);
118
+ d = hh(d, a, b, c, buffer[8], 11, 0x8771f681);
119
+ c = hh(c, d, a, b, buffer[11], 16, 0x6d9d6122);
120
+ b = hh(b, c, d, a, buffer[14], 23, 0xfde5380c);
121
+ a = hh(a, b, c, d, buffer[1], 4, 0xa4beea44);
122
+ d = hh(d, a, b, c, buffer[4], 11, 0x4bdecfa9);
123
+ c = hh(c, d, a, b, buffer[7], 16, 0xf6bb4b60);
124
+ b = hh(b, c, d, a, buffer[10], 23, 0xbebfbc70);
125
+ a = hh(a, b, c, d, buffer[13], 4, 0x289b7ec6);
126
+ d = hh(d, a, b, c, buffer[0], 11, 0xeaa127fa);
127
+ c = hh(c, d, a, b, buffer[3], 16, 0xd4ef3085);
128
+ b = hh(b, c, d, a, buffer[6], 23, 0x04881d05);
129
+ a = hh(a, b, c, d, buffer[9], 4, 0xd9d4d039);
130
+ d = hh(d, a, b, c, buffer[12], 11, 0xe6db99e5);
131
+ c = hh(c, d, a, b, buffer[15], 16, 0x1fa27cf8);
132
+ b = hh(b, c, d, a, buffer[2], 23, 0xc4ac5665);
133
+
134
+ a = ii(a, b, c, d, buffer[0], 6, 0xf4292244);
135
+ d = ii(d, a, b, c, buffer[7], 10, 0x432aff97);
136
+ c = ii(c, d, a, b, buffer[14], 15, 0xab9423a7);
137
+ b = ii(b, c, d, a, buffer[5], 21, 0xfc93a039);
138
+ a = ii(a, b, c, d, buffer[12], 6, 0x655b59c3);
139
+ d = ii(d, a, b, c, buffer[3], 10, 0x8f0ccc92);
140
+ c = ii(c, d, a, b, buffer[10], 15, 0xffeff47d);
141
+ b = ii(b, c, d, a, buffer[1], 21, 0x85845dd1);
142
+ a = ii(a, b, c, d, buffer[8], 6, 0x6fa87e4f);
143
+ d = ii(d, a, b, c, buffer[15], 10, 0xfe2ce6e0);
144
+ c = ii(c, d, a, b, buffer[6], 15, 0xa3014314);
145
+ b = ii(b, c, d, a, buffer[13], 21, 0x4e0811a1);
146
+ a = ii(a, b, c, d, buffer[4], 6, 0xf7537e82);
147
+ d = ii(d, a, b, c, buffer[11], 10, 0xbd3af235);
148
+ c = ii(c, d, a, b, buffer[2], 15, 0x2ad7d2bb);
149
+ b = ii(b, c, d, a, buffer[9], 21, 0xeb86d391);
150
+
151
+ w[0] = add(a, w[0]);
152
+ w[1] = add(b, w[1]);
153
+ w[2] = add(c, w[2]);
154
+ w[3] = add(d, w[3]);
155
+ };
156
+ })();
157
+
158
+ //Provides: caml_MD5Init
159
+ function caml_MD5Init() {
160
+ var buffer = new ArrayBuffer(64);
161
+ var b32 = new Uint32Array(buffer);
162
+ var b8 = new Uint8Array(buffer);
163
+ return {
164
+ len: 0,
165
+ w: new Uint32Array([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476]),
166
+ b32: b32,
167
+ b8: b8,
168
+ };
169
+ }
170
+
171
+ //Provides: caml_MD5Update
172
+ //Requires: caml_MD5Transform
173
+ function caml_MD5Update(ctx, input, input_len) {
174
+ var in_buf = ctx.len & 0x3f;
175
+ var input_pos = 0;
176
+ ctx.len += input_len;
177
+ if (in_buf) {
178
+ var missing = 64 - in_buf;
179
+ if (input_len < missing) {
180
+ ctx.b8.set(input.subarray(0, input_len), in_buf);
181
+ return;
182
+ }
183
+ ctx.b8.set(input.subarray(0, missing), in_buf);
184
+ caml_MD5Transform(ctx.w, ctx.b32);
185
+ input_len -= missing;
186
+ input_pos += missing;
187
+ }
188
+ while (input_len >= 64) {
189
+ ctx.b8.set(input.subarray(input_pos, input_pos + 64), 0);
190
+ caml_MD5Transform(ctx.w, ctx.b32);
191
+ input_len -= 64;
192
+ input_pos += 64;
193
+ }
194
+ if (input_len)
195
+ ctx.b8.set(input.subarray(input_pos, input_pos + input_len), 0);
196
+ }
197
+
198
+ //Provides: caml_MD5Final
199
+ //Requires: caml_MD5Transform
200
+ function caml_MD5Final(ctx) {
201
+ var in_buf = ctx.len & 0x3f;
202
+ ctx.b8[in_buf] = 0x80;
203
+ in_buf++;
204
+ if (in_buf > 56) {
205
+ for (var j = in_buf; j < 64; j++) {
206
+ ctx.b8[j] = 0;
207
+ }
208
+ caml_MD5Transform(ctx.w, ctx.b32);
209
+ for (var j = 0; j < 56; j++) {
210
+ ctx.b8[j] = 0;
211
+ }
212
+ } else {
213
+ for (var j = in_buf; j < 56; j++) {
214
+ ctx.b8[j] = 0;
215
+ }
216
+ }
217
+ ctx.b32[14] = ctx.len << 3;
218
+ // high word of the 64-bit bit length: compute by division so the
219
+ // length is not truncated to 32 bits (wrong for inputs >= 2 GiB)
220
+ ctx.b32[15] = (ctx.len / 0x20000000) | 0;
221
+ caml_MD5Transform(ctx.w, ctx.b32);
222
+ var t = new Uint8Array(16);
223
+ for (var i = 0; i < 4; i++)
224
+ for (var j = 0; j < 4; j++) t[i * 4 + j] = (ctx.w[i] >> (8 * j)) & 0xff;
225
+ return t;
226
+ }
227
+
228
+ //Provides: caml_md5_bytes
229
+ //Requires: caml_uint8_array_of_bytes, caml_string_of_uint8_array
230
+ //Requires: caml_MD5Init, caml_MD5Update, caml_MD5Final
231
+ function caml_md5_bytes(s, ofs, len) {
232
+ var ctx = caml_MD5Init();
233
+ var a = caml_uint8_array_of_bytes(s);
234
+ caml_MD5Update(ctx, a.subarray(ofs, ofs + len), len);
235
+ return caml_string_of_uint8_array(caml_MD5Final(ctx));
236
+ }