functionalscript 0.3.3 → 0.3.5

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 (457) hide show
  1. package/com/cpp/module.f.d.ts +10 -0
  2. package/com/cpp/module.f.js +107 -0
  3. package/com/cpp/test.f.d.ts +2 -0
  4. package/com/cpp/{test.f.ts → test.f.js} +9 -11
  5. package/com/cpp/testlib.f.d.ts +2 -0
  6. package/com/cpp/testlib.f.js +5 -0
  7. package/com/cs/module.f.d.ts +12 -0
  8. package/com/cs/module.f.js +80 -0
  9. package/com/cs/test.f.d.ts +2 -0
  10. package/com/cs/{test.f.ts → test.f.js} +9 -11
  11. package/com/cs/testlib.f.d.ts +2 -0
  12. package/com/cs/testlib.f.js +5 -0
  13. package/com/rust/module.f.d.ts +15 -0
  14. package/com/rust/module.f.js +169 -0
  15. package/com/rust/test.f.d.ts +2 -0
  16. package/com/rust/{test.f.ts → test.f.js} +7 -7
  17. package/com/rust/testlib.f.d.ts +2 -0
  18. package/com/rust/testlib.f.js +5 -0
  19. package/com/test/build.f.d.ts +20 -0
  20. package/com/test/build.f.js +58 -0
  21. package/com/types/module.f.d.ts +28 -0
  22. package/com/types/module.f.js +8 -0
  23. package/com/types/testlib.f.d.ts +44 -0
  24. package/com/types/{testlib.f.ts → testlib.f.js} +2 -3
  25. package/commonjs/build/module.f.d.ts +6 -0
  26. package/commonjs/build/module.f.js +69 -0
  27. package/commonjs/build/test.f.d.ts +2 -0
  28. package/commonjs/build/test.f.js +96 -0
  29. package/commonjs/module/function/{module.f.ts → module.f.d.ts} +5 -10
  30. package/commonjs/module/function/module.f.js +4 -0
  31. package/commonjs/module/module.f.d.ts +18 -0
  32. package/commonjs/module/module.f.js +12 -0
  33. package/commonjs/module.f.d.ts +6 -0
  34. package/commonjs/module.f.js +1 -0
  35. package/commonjs/package/dependencies/module.f.d.ts +7 -0
  36. package/commonjs/package/dependencies/module.f.js +13 -0
  37. package/commonjs/package/dependencies/test.f.d.ts +2 -0
  38. package/commonjs/package/dependencies/test.f.js +15 -0
  39. package/commonjs/package/module.f.d.ts +17 -0
  40. package/commonjs/package/module.f.js +18 -0
  41. package/commonjs/package/test.f.d.ts +2 -0
  42. package/commonjs/package/test.f.js +27 -0
  43. package/commonjs/path/module.f.d.ts +24 -0
  44. package/commonjs/path/module.f.js +114 -0
  45. package/commonjs/path/test.f.d.ts +25 -0
  46. package/commonjs/path/{test.f.ts → test.f.js} +123 -89
  47. package/crypto/prime_field/module.f.d.ts +43 -0
  48. package/crypto/prime_field/module.f.js +78 -0
  49. package/crypto/prime_field/test.f.d.ts +13 -0
  50. package/crypto/prime_field/test.f.js +149 -0
  51. package/crypto/secp/module.f.d.ts +68 -0
  52. package/crypto/secp/module.f.js +127 -0
  53. package/crypto/secp/test.f.d.ts +5 -0
  54. package/crypto/secp/test.f.js +72 -0
  55. package/crypto/sha2/module.f.d.ts +13 -0
  56. package/crypto/sha2/module.f.js +145 -0
  57. package/crypto/sha2/test.f.d.ts +9 -0
  58. package/crypto/sha2/test.f.js +82 -0
  59. package/dev/module.f.d.ts +1 -0
  60. package/dev/module.f.js +1 -0
  61. package/dev/test/module.f.d.ts +20 -0
  62. package/dev/test/module.f.js +75 -0
  63. package/dev/test.f.d.ts +9 -0
  64. package/dev/{test.f.ts → test.f.js} +22 -24
  65. package/djs/module.f.d.ts +17 -0
  66. package/djs/module.f.js +63 -0
  67. package/djs/parser/module.f.d.ts +12 -0
  68. package/djs/parser/module.f.js +333 -0
  69. package/djs/parser/test.f.d.ts +12 -0
  70. package/djs/parser/test.f.js +717 -0
  71. package/djs/serializer/module.f.d.ts +9 -0
  72. package/djs/serializer/module.f.js +81 -0
  73. package/djs/test/input.f.d.ts +2 -0
  74. package/djs/test/input.f.js +4 -0
  75. package/djs/test/m.f.d.ts +2 -0
  76. package/djs/test/m.f.js +1 -0
  77. package/djs/test.f.d.ts +12 -0
  78. package/djs/test.f.js +84 -0
  79. package/djs/tokenizer/module.f.d.ts +8 -0
  80. package/djs/tokenizer/module.f.js +60 -0
  81. package/djs/tokenizer/test.f.d.ts +7 -0
  82. package/djs/tokenizer/test.f.js +529 -0
  83. package/fsc/module.f.d.ts +5 -0
  84. package/fsc/module.f.js +75 -0
  85. package/fsc/test.f.d.ts +4 -0
  86. package/fsc/test.f.js +19 -0
  87. package/fsm/module.f.d.ts +13 -0
  88. package/fsm/module.f.js +59 -0
  89. package/fsm/test.f.d.ts +5 -0
  90. package/fsm/test.f.js +137 -0
  91. package/html/module.f.d.ts +13 -0
  92. package/html/module.f.js +58 -0
  93. package/html/test.f.d.ts +9 -0
  94. package/html/test.f.js +42 -0
  95. package/issues/test.f.d.ts +16 -0
  96. package/issues/test.f.js +70 -0
  97. package/js/tokenizer/module.f.d.ts +86 -0
  98. package/js/tokenizer/module.f.js +503 -0
  99. package/js/tokenizer/test.f.d.ts +9 -0
  100. package/js/tokenizer/test.f.js +905 -0
  101. package/json/module.f.d.ts +20 -0
  102. package/json/module.f.js +68 -0
  103. package/json/parser/module.f.d.ts +5 -0
  104. package/json/parser/module.f.js +155 -0
  105. package/json/parser/test.f.d.ts +5 -0
  106. package/json/parser/test.f.js +328 -0
  107. package/json/serializer/module.f.d.ts +7 -0
  108. package/json/serializer/module.f.js +21 -0
  109. package/json/serializer/test.f.d.ts +8 -0
  110. package/json/serializer/test.f.js +87 -0
  111. package/json/test.f.d.ts +8 -0
  112. package/json/test.f.js +61 -0
  113. package/json/tokenizer/module.f.d.ts +8 -0
  114. package/json/tokenizer/module.f.js +52 -0
  115. package/json/tokenizer/test.f.d.ts +6 -0
  116. package/json/tokenizer/test.f.js +419 -0
  117. package/nanvm-lib/tests/test.f.d.ts +27 -0
  118. package/nanvm-lib/tests/test.f.js +84 -0
  119. package/nodejs/version/module.f.d.ts +11 -0
  120. package/nodejs/version/module.f.js +16 -0
  121. package/nodejs/version/test.f.d.ts +2 -0
  122. package/nodejs/version/{test.f.ts → test.f.js} +13 -22
  123. package/package.json +9 -5
  124. package/text/ascii/module.f.d.ts +129 -0
  125. package/text/ascii/module.f.js +148 -0
  126. package/text/ascii/test.f.d.ts +4 -0
  127. package/text/ascii/test.f.js +14 -0
  128. package/text/module.f.d.ts +8 -0
  129. package/text/module.f.js +10 -0
  130. package/text/sgr/module.f.d.ts +8 -0
  131. package/text/sgr/module.f.js +8 -0
  132. package/text/test.f.d.ts +2 -0
  133. package/text/test.f.js +18 -0
  134. package/text/utf16/module.f.d.ts +9 -0
  135. package/text/utf16/module.f.js +66 -0
  136. package/text/utf16/test.f.d.ts +6 -0
  137. package/text/utf16/test.f.js +144 -0
  138. package/text/utf8/module.f.d.ts +6 -0
  139. package/text/utf8/module.f.js +112 -0
  140. package/text/utf8/test.f.d.ts +6 -0
  141. package/text/utf8/test.f.js +175 -0
  142. package/types/array/module.f.d.ts +21 -0
  143. package/types/array/module.f.js +23 -0
  144. package/types/array/test.f.d.ts +10 -0
  145. package/types/array/test.f.js +116 -0
  146. package/types/bigfloat/module.f.d.ts +3 -0
  147. package/types/bigfloat/module.f.js +66 -0
  148. package/types/bigfloat/test.f.d.ts +6 -0
  149. package/types/bigfloat/test.f.js +349 -0
  150. package/types/bigint/module.f.d.ts +54 -0
  151. package/types/bigint/{module.f.ts → module.f.js} +42 -65
  152. package/types/bigint/test.f.d.ts +16 -0
  153. package/types/bigint/test.f.js +199 -0
  154. package/types/bit_vec/module.f.d.ts +134 -0
  155. package/types/bit_vec/{module.f.ts → module.f.js} +47 -65
  156. package/types/bit_vec/test.f.d.ts +22 -0
  157. package/types/bit_vec/test.f.js +210 -0
  158. package/types/btree/find/module.f.d.ts +20 -0
  159. package/types/btree/find/module.f.js +84 -0
  160. package/types/btree/find/test.f.d.ts +2 -0
  161. package/types/btree/find/test.f.js +152 -0
  162. package/types/btree/module.f.d.ts +4 -0
  163. package/types/btree/module.f.js +31 -0
  164. package/types/btree/remove/module.f.d.ts +4 -0
  165. package/types/btree/remove/module.f.js +174 -0
  166. package/types/btree/remove/test.f.d.ts +5 -0
  167. package/types/btree/remove/test.f.js +634 -0
  168. package/types/btree/set/module.f.d.ts +3 -0
  169. package/types/btree/set/module.f.js +103 -0
  170. package/types/btree/set/test.f.d.ts +2 -0
  171. package/types/btree/set/test.f.js +360 -0
  172. package/types/btree/test.f.d.ts +8 -0
  173. package/types/btree/test.f.js +75 -0
  174. package/types/btree/types/module.f.d.ts +11 -0
  175. package/types/btree/types/module.f.js +1 -0
  176. package/types/byte_set/module.f.d.ts +16 -0
  177. package/types/byte_set/module.f.js +28 -0
  178. package/types/byte_set/test.f.d.ts +12 -0
  179. package/types/byte_set/test.f.js +122 -0
  180. package/types/function/compare/module.f.d.ts +10 -0
  181. package/types/function/compare/module.f.js +7 -0
  182. package/types/function/compare/test.f.d.ts +2 -0
  183. package/types/function/compare/test.f.js +8 -0
  184. package/types/function/module.f.d.ts +28 -0
  185. package/types/function/module.f.js +19 -0
  186. package/types/function/operator/module.f.d.ts +20 -0
  187. package/types/function/operator/module.f.js +18 -0
  188. package/types/function/test.f.d.ts +2 -0
  189. package/types/function/test.f.js +12 -0
  190. package/types/list/module.f.d.ts +50 -0
  191. package/types/list/module.f.js +171 -0
  192. package/types/list/test.f.d.ts +22 -0
  193. package/types/list/test.f.js +395 -0
  194. package/types/map/module.f.d.ts +14 -0
  195. package/types/map/module.f.js +31 -0
  196. package/types/map/test.f.d.ts +5 -0
  197. package/types/map/test.f.js +114 -0
  198. package/types/nibble_set/module.f.d.ts +10 -0
  199. package/types/nibble_set/module.f.js +9 -0
  200. package/types/nibble_set/test.f.d.ts +12 -0
  201. package/types/nibble_set/test.f.js +90 -0
  202. package/types/nullable/module.f.d.ts +3 -0
  203. package/types/nullable/module.f.js +2 -0
  204. package/types/nullable/test.f.d.ts +2 -0
  205. package/types/nullable/test.f.js +12 -0
  206. package/types/number/module.f.d.ts +6 -0
  207. package/types/number/module.f.js +8 -0
  208. package/types/number/test.f.d.ts +11 -0
  209. package/types/number/test.f.js +124 -0
  210. package/types/object/module.f.d.ts +10 -0
  211. package/types/object/module.f.js +12 -0
  212. package/types/object/test.f.d.ts +5 -0
  213. package/types/object/test.f.js +17 -0
  214. package/types/range/module.f.d.ts +3 -0
  215. package/types/range/module.f.js +2 -0
  216. package/types/range/test.f.d.ts +2 -0
  217. package/types/range/test.f.js +18 -0
  218. package/types/range_map/module.f.d.ts +14 -0
  219. package/types/range_map/module.f.js +51 -0
  220. package/types/range_map/test.f.d.ts +6 -0
  221. package/types/range_map/test.f.js +176 -0
  222. package/types/result/module.f.d.ts +7 -0
  223. package/types/result/module.f.js +8 -0
  224. package/types/sorted_list/module.f.d.ts +16 -0
  225. package/types/sorted_list/module.f.js +56 -0
  226. package/types/sorted_list/test.f.d.ts +5 -0
  227. package/types/sorted_list/test.f.js +64 -0
  228. package/types/sorted_set/module.f.d.ts +7 -0
  229. package/types/sorted_set/module.f.js +14 -0
  230. package/types/sorted_set/test.f.d.ts +6 -0
  231. package/types/sorted_set/test.f.js +78 -0
  232. package/types/string/module.f.d.ts +6 -0
  233. package/types/string/module.f.js +11 -0
  234. package/types/string/test.f.d.ts +15 -0
  235. package/types/string/test.f.js +58 -0
  236. package/types/string_set/module.f.d.ts +9 -0
  237. package/types/string_set/module.f.js +22 -0
  238. package/types/string_set/test.f.d.ts +5 -0
  239. package/types/string_set/test.f.js +65 -0
  240. package/.github/FUNDING.yml +0 -12
  241. package/.github/dependabot.yml +0 -11
  242. package/.github/workflows/ci.yml +0 -88
  243. package/.github/workflows/npm-publish.yml +0 -53
  244. package/CHANGELOG.md +0 -29
  245. package/Cargo.lock +0 -18
  246. package/Cargo.toml +0 -7
  247. package/com/README.md +0 -3
  248. package/com/cpp/README.md +0 -80
  249. package/com/cpp/module.f.ts +0 -180
  250. package/com/cpp/nanocom.hpp +0 -195
  251. package/com/cpp/testlib.f.ts +0 -8
  252. package/com/cs/module.f.ts +0 -145
  253. package/com/cs/testlib.f.ts +0 -8
  254. package/com/proposals.md +0 -28
  255. package/com/rust/module.f.ts +0 -287
  256. package/com/rust/nanocom/Cargo.lock +0 -7
  257. package/com/rust/nanocom/Cargo.toml +0 -15
  258. package/com/rust/nanocom/README.md +0 -56
  259. package/com/rust/nanocom/src/class.rs +0 -6
  260. package/com/rust/nanocom/src/cobject.rs +0 -90
  261. package/com/rust/nanocom/src/guid.rs +0 -15
  262. package/com/rust/nanocom/src/hresult.rs +0 -7
  263. package/com/rust/nanocom/src/interface.rs +0 -9
  264. package/com/rust/nanocom/src/iunknown.rs +0 -13
  265. package/com/rust/nanocom/src/lib.rs +0 -20
  266. package/com/rust/nanocom/src/object.rs +0 -34
  267. package/com/rust/nanocom/src/ref.rs +0 -57
  268. package/com/rust/nanocom/src/vmt.rs +0 -7
  269. package/com/rust/nanocom/tests/it.rs +0 -186
  270. package/com/rust/nanocom/tests/itmod.rs +0 -195
  271. package/com/rust/testlib.f.ts +0 -8
  272. package/com/test/build.f.ts +0 -111
  273. package/com/test/build.ts +0 -45
  274. package/com/test/cpp/main.cpp +0 -74
  275. package/com/test/cs/Program.cs +0 -31
  276. package/com/test/cs/cs.csproj +0 -16
  277. package/com/test/rust/Cargo.toml +0 -12
  278. package/com/test/rust/src/lib.rs +0 -56
  279. package/com/types/module.f.ts +0 -62
  280. package/commonjs/README.md +0 -94
  281. package/commonjs/build/module.f.ts +0 -100
  282. package/commonjs/build/test.f.ts +0 -107
  283. package/commonjs/module/module.f.ts +0 -41
  284. package/commonjs/module.f.ts +0 -7
  285. package/commonjs/module.ts +0 -31
  286. package/commonjs/package/dependencies/module.f.ts +0 -22
  287. package/commonjs/package/dependencies/test.f.ts +0 -8
  288. package/commonjs/package/module.f.ts +0 -31
  289. package/commonjs/package/test.f.ts +0 -12
  290. package/commonjs/path/README.md +0 -17
  291. package/commonjs/path/module.f.ts +0 -171
  292. package/commonjs/test.ts +0 -64
  293. package/crypto/README.md +0 -3
  294. package/crypto/prime_field/module.f.ts +0 -114
  295. package/crypto/prime_field/test.f.ts +0 -95
  296. package/crypto/secp/module.f.ts +0 -182
  297. package/crypto/secp/test.f.ts +0 -68
  298. package/crypto/sha2/module.f.ts +0 -215
  299. package/crypto/sha2/test.f.ts +0 -83
  300. package/deno.json +0 -71
  301. package/dev/README.md +0 -8
  302. package/dev/index.ts +0 -3
  303. package/dev/module.f.ts +0 -1
  304. package/dev/module.ts +0 -196
  305. package/dev/test/module.f.ts +0 -135
  306. package/dev/test.ts +0 -53
  307. package/djs/README.md +0 -54
  308. package/djs/module.f.ts +0 -76
  309. package/djs/parser/module.f.ts +0 -509
  310. package/djs/parser/test.f.ts +0 -461
  311. package/djs/serializer/module.f.ts +0 -90
  312. package/djs/test.f.ts +0 -67
  313. package/djs/tokenizer/module.f.ts +0 -99
  314. package/djs/tokenizer/test.f.ts +0 -364
  315. package/doc/LANGUAGE.md +0 -255
  316. package/doc/README.md +0 -61
  317. package/doc/byte-code.md +0 -59
  318. package/doc/fa.md +0 -174
  319. package/doc/predefined.md +0 -143
  320. package/doc/proposals.md +0 -21
  321. package/doc/vm/README.md +0 -24
  322. package/doc/vm-rearchitecture.md +0 -129
  323. package/doc/vm.md +0 -150
  324. package/fsc/README.md +0 -111
  325. package/fsc/module.f.ts +0 -122
  326. package/fsc/test.f.ts +0 -21
  327. package/fsm/README.md +0 -113
  328. package/fsm/module.f.ts +0 -107
  329. package/fsm/test.f.ts +0 -139
  330. package/funding.json +0 -61
  331. package/html/README.md +0 -32
  332. package/html/module.f.ts +0 -109
  333. package/html/test.f.ts +0 -37
  334. package/issues/01-test-debug.md +0 -3
  335. package/issues/02-esm.md +0 -8
  336. package/issues/03-djs.md +0 -57
  337. package/issues/05-publish.md +0 -40
  338. package/issues/11-fs-load.md +0 -13
  339. package/issues/17-djs-extension.md +0 -6
  340. package/issues/README.md +0 -42
  341. package/issues/lang/1000-json.md +0 -50
  342. package/issues/lang/2110-default-export.md +0 -11
  343. package/issues/lang/2120-const.md +0 -14
  344. package/issues/lang/2130-default-import.md +0 -10
  345. package/issues/lang/2210-block-comment.md +0 -12
  346. package/issues/lang/2220-namespace-import.md +0 -25
  347. package/issues/lang/2310-undefined.md +0 -7
  348. package/issues/lang/2320-bigint.md +0 -7
  349. package/issues/lang/2330-property-accessor.md +0 -225
  350. package/issues/lang/2340-operators.md +0 -41
  351. package/issues/lang/2350-grouping.md +0 -11
  352. package/issues/lang/2360-built-in.md +0 -81
  353. package/issues/lang/2410-identifier-property.md +0 -9
  354. package/issues/lang/2420-line-comment.md +0 -10
  355. package/issues/lang/2430-trailing-comma.md +0 -13
  356. package/issues/lang/2440-shorthand.md +0 -8
  357. package/issues/lang/2450-destructuring.md +0 -12
  358. package/issues/lang/3110-function.md +0 -35
  359. package/issues/lang/3120-parameters.md +0 -9
  360. package/issues/lang/3130-body-const.md +0 -12
  361. package/issues/lang/3220-let.md +0 -11
  362. package/issues/lang/3240-export.md +0 -44
  363. package/issues/lang/3370-type-inference.md +0 -69
  364. package/issues/lang/3380-promise.md +0 -22
  365. package/issues/lang/3390-class.md +0 -3
  366. package/issues/lang/3410-expression.md +0 -12
  367. package/issues/lang/3420-one-parameter.md +0 -10
  368. package/issues/lang/3430-assignments.md +0 -23
  369. package/issues/lang/README.md +0 -193
  370. package/issues/test.f.ts +0 -58
  371. package/js/tokenizer/module.f.ts +0 -882
  372. package/js/tokenizer/test.f.ts +0 -617
  373. package/json/html/README.md +0 -49
  374. package/json/module.f.ts +0 -94
  375. package/json/parser/module.f.ts +0 -221
  376. package/json/parser/test.f.ts +0 -255
  377. package/json/serializer/module.f.ts +0 -74
  378. package/json/serializer/test.f.ts +0 -64
  379. package/json/test.f.ts +0 -48
  380. package/json/tokenizer/module.f.ts +0 -85
  381. package/json/tokenizer/test.f.ts +0 -290
  382. package/nanvm-lib/Cargo.toml +0 -6
  383. package/nanvm-lib/src/extension.rs +0 -130
  384. package/nanvm-lib/src/interface.rs +0 -133
  385. package/nanvm-lib/src/lib.rs +0 -7
  386. package/nanvm-lib/src/naive.rs +0 -236
  387. package/nanvm-lib/src/nanenum.rs +0 -236
  388. package/nanvm-lib/src/nullish.rs +0 -7
  389. package/nanvm-lib/src/sign.rs +0 -5
  390. package/nanvm-lib/src/simple.rs +0 -32
  391. package/nanvm-lib/tests/test.f.ts +0 -80
  392. package/nanvm-lib/tests/test.rs +0 -108
  393. package/nodejs/version/main.ts +0 -4
  394. package/nodejs/version/module.f.ts +0 -42
  395. package/text/README.md +0 -110
  396. package/text/ascii/module.f.ts +0 -222
  397. package/text/ascii/test.f.ts +0 -14
  398. package/text/module.f.ts +0 -30
  399. package/text/sgr/README.md +0 -3
  400. package/text/sgr/module.f.ts +0 -13
  401. package/text/test.f.ts +0 -19
  402. package/text/utf16/module.f.ts +0 -120
  403. package/text/utf16/test.f.ts +0 -107
  404. package/text/utf8/module.f.ts +0 -116
  405. package/text/utf8/test.f.ts +0 -125
  406. package/tsconfig.json +0 -104
  407. package/types/array/module.f.ts +0 -89
  408. package/types/array/test.f.ts +0 -88
  409. package/types/bigfloat/module.f.ts +0 -93
  410. package/types/bigfloat/test.f.ts +0 -218
  411. package/types/bigint/README.md +0 -35
  412. package/types/bigint/test.f.ts +0 -144
  413. package/types/bit_vec/README.md +0 -18
  414. package/types/bit_vec/test.f.ts +0 -129
  415. package/types/btree/README.md +0 -160
  416. package/types/btree/find/module.f.ts +0 -92
  417. package/types/btree/find/test.f.ts +0 -122
  418. package/types/btree/module.f.ts +0 -35
  419. package/types/btree/remove/module.f.ts +0 -151
  420. package/types/btree/remove/test.f.ts +0 -498
  421. package/types/btree/set/module.f.ts +0 -89
  422. package/types/btree/set/test.f.ts +0 -415
  423. package/types/btree/test.f.ts +0 -92
  424. package/types/btree/types/module.f.ts +0 -27
  425. package/types/byte_set/module.f.ts +0 -73
  426. package/types/byte_set/test.f.ts +0 -84
  427. package/types/function/compare/module.f.ts +0 -26
  428. package/types/function/compare/test.f.ts +0 -7
  429. package/types/function/module.f.ts +0 -43
  430. package/types/function/operator/module.f.ts +0 -65
  431. package/types/function/test.f.ts +0 -20
  432. package/types/list/module.f.ts +0 -350
  433. package/types/list/test.f.ts +0 -327
  434. package/types/map/module.f.ts +0 -65
  435. package/types/map/test.f.ts +0 -76
  436. package/types/nibble_set/module.f.ts +0 -34
  437. package/types/nibble_set/test.f.ts +0 -57
  438. package/types/nullable/module.f.ts +0 -9
  439. package/types/nullable/test.f.ts +0 -9
  440. package/types/number/module.f.ts +0 -20
  441. package/types/number/test.f.ts +0 -194
  442. package/types/object/module.f.ts +0 -30
  443. package/types/object/test.f.ts +0 -14
  444. package/types/range/module.f.ts +0 -10
  445. package/types/range/test.f.ts +0 -9
  446. package/types/range_map/module.f.ts +0 -70
  447. package/types/range_map/test.f.ts +0 -189
  448. package/types/result/module.f.ts +0 -20
  449. package/types/result/module.ts +0 -18
  450. package/types/sorted_list/module.f.ts +0 -83
  451. package/types/sorted_list/test.f.ts +0 -57
  452. package/types/sorted_set/module.f.ts +0 -36
  453. package/types/sorted_set/test.f.ts +0 -67
  454. package/types/string/module.f.ts +0 -26
  455. package/types/string/test.f.ts +0 -43
  456. package/types/string_set/module.f.ts +0 -37
  457. package/types/string_set/test.f.ts +0 -34
@@ -1,69 +0,0 @@
1
- # Type Inference
2
-
3
- We need type inference to prove that specific values have specific types. Type annotations can help, but we can't trust them.
4
-
5
- ## Level 1
6
-
7
- ```rust
8
- enum Type {
9
- Unknown,
10
- Null,
11
- Undefined,
12
- Bool,
13
- Number,
14
- String,
15
- BigInt,
16
- Object,
17
- Array,
18
- Function,
19
- // ...
20
- }
21
- ```
22
-
23
- ## Level 2
24
-
25
- It is a set. For example,
26
-
27
- ```rust
28
- Set<Type>
29
- ```
30
-
31
- On this level, we can extend our `Type` definition with some known finite values:
32
-
33
- ```rs
34
- enum Type {
35
- Unknown,
36
- Null,
37
- Undefined,
38
- False,
39
- True,
40
- Number,
41
- String,
42
- BigInt,
43
- Object,
44
- Array,
45
- Function,
46
- // ...
47
- // ...
48
- EmptyString,
49
- NumberZero,
50
- NumberNaN,
51
- NumberPositive,
52
- NumberNegative,
53
- NumberPInf,
54
- NumberNInf,
55
- BigIntZero,
56
- BigIntPositive,
57
- BigIntNegative,
58
- EmptyObject,
59
- EmptyArray,
60
- FunctionId,
61
- // ...
62
- }
63
- ```
64
-
65
- The set is finite and can be implemented using a bit-set.
66
-
67
- ### Level 3
68
-
69
- Compared to level 2, this level contains dynamic information about subsets of the type.
@@ -1,22 +0,0 @@
1
- # Promise
2
-
3
- It could be blocked until we solve the ownership problem.
4
-
5
- Promise is the main object. `async` and `await` are syntax sugars. If we can safely work with promises, we can transform a FunctionalScript program with `async` functions into a normal function with Promises.
6
-
7
- ## `.then()`
8
-
9
- ```ts
10
- a.then(f)
11
- ```
12
-
13
- ```ts
14
- const g0 = async(a) => f(await a)
15
- // g0 = a => a.then(f)
16
-
17
- const g1 = async(a) => f(await a)
18
-
19
- const a = io.wrtieFile('a', 'x')
20
- const p0 = g0(a)
21
- const p1 = g1(a)
22
- ```
@@ -1,3 +0,0 @@
1
- # Classes
2
-
3
- Classes are [nominal types](https://en.wikipedia.org/wiki/Nominal_type_system). In other words, their definitions are location-based, not content-based. This can cause many problems, such as duplicate incompatible class definitions during serialization and code importing. So, the best way to use classes would be to use CA VM.
@@ -1,12 +0,0 @@
1
- # Function Body
2
-
3
- Parse a function with one expression.
4
-
5
- ```js
6
- export default {
7
- "a": () => [3, 4],
8
- "c": () => ({ "a": 5 })
9
- }
10
- ```
11
-
12
- Depends on [function](./3110-function.md) and [grouping](2330-grouping.md)
@@ -1,10 +0,0 @@
1
- # One Parameter
2
-
3
- ```js
4
- export default {
5
- "id": a => a
6
- "b": [-42.5, false, "hello"]
7
- }
8
- ```
9
-
10
- Depends on [parameters](./3120-parameters.md).
@@ -1,23 +0,0 @@
1
- # Additional Assignment Operators
2
-
3
- These operators can be transformed into two operations in VM byte code.
4
-
5
- |Type |Operator|Priority|
6
- |-----------|--------|--------|
7
- |Assignment |`+=` |2 |
8
- | |`-=` |2 |
9
- | |`*=` |2 |
10
- | |`/=` |2 |
11
- | |`%=` |2 |
12
- | |`**=` |2 |
13
- | |`<<=` |2 |
14
- | |`>>=` |2 |
15
- | |`>>>=` |2 |
16
- | |`&=` |2 |
17
- | |`^=` |2 |
18
- | |`\|=` |2 |
19
- | |`&&=` |2 |
20
- | |`\|\|=` |2 |
21
- | |`??=` |2 |
22
- |Arithmetic |`++` |3 |
23
- | |`--` |3 |
@@ -1,193 +0,0 @@
1
- # FunctionalScript Language
2
-
3
- Two main FunctionsScript principles:
4
-
5
- 1. if FS code passes validation/compilation, then it doesn't have side-effects,
6
- 2. the code that passed validation/compilation should behave on FunctionalScript VM the same way as on any other modern JavaScript engine.
7
-
8
- When we implement features of FunctionalScript, the first priority is a simplification of the VM.
9
-
10
- File Types:
11
-
12
- |File Type|Extension |Notes |
13
- |---------|-----------------|------------|
14
- |JSON |`.json` |Not a graph.|
15
- |DJS |`.d.js`, `.d.mjs`|A graph. |
16
- |FJS |`.f.js`, `.f.mjs`|Functions. |
17
-
18
- **Note**: An FJS value can't be serialized without additional run-time infrastructure.
19
-
20
- ## 1. JSON
21
-
22
- - [ ] [JSON](./1000-json.md).
23
-
24
- **VM**:
25
-
26
- We are introducing new commands in such a way that every new command depends only on previous commands.
27
-
28
- |format|any |Tag| |
29
- |------|--------------|---|----------|
30
- |JSON |null | 00| |
31
- | |number | 01|u64 |
32
- | |false | 02| |
33
- | |true | 03| |
34
- | |string | 04|String |
35
- | |array | 05|Array<Any>|
36
- | |object | 06|Object |
37
-
38
- ## 2. DJS
39
-
40
- The DJS form a graph of values. It can be serialized without additional run-time information.
41
-
42
- File extensions: `.d.js` and `.d.mjs`.
43
-
44
- |format|any |Tag| |Notes |
45
- |------|------------------------|---|----------|------------------------------------------------|
46
- |DJS |const_ref | 07|u32 |[const](./2120-const.md) |
47
- | |bigint_plus | 08|Array<u64>|[bigint](./2320-bigint.md) |
48
- | |bigint_minus | 09|Array<u64>|[bigint](./2320-bigint.md) |
49
- | |undefined | 0A| |[undefined](./2310-undefined.md) |
50
- | |own_property | 0B| |[property-accessor](./2330-property-accessor.md)|
51
- | |instance_property | 0C| |[property-accessor](./2330-property-accessor.md)|
52
- | |instance_method_call | 0D| |[property-accessor](./2330-property-accessor.md)|
53
- | |at | 0E| |[property-accessor](./2330-property-accessor.md)|
54
- | |operators | | |[operators](./2340-operators.md) |
55
-
56
- ### 2.1. Required
57
-
58
- 1. [ ] [default-export](./2110-default-export.md),
59
- 2. [ ] [const](./2120-const.md),
60
- 3. [ ] [default-import](./2130-default-import.md).
61
-
62
- ### 2.2. Priority 1
63
-
64
- We need it to use JSDoc and TypeScript.
65
-
66
- 1. [ ] [block-comment](./2210-block-comment.md),
67
- 2. [ ] [namespace-import](./2220-namespace-import.md).
68
-
69
- ### 2.3. Priority 2
70
-
71
- 1. [ ] [undefined](./2310-undefined.md),
72
- 2. [ ] [bigint](./2320-bigint.md),
73
- 3. [ ] [property-accessor](./2330-property-accessor.md),
74
- 4. [ ] [operators](./2340-operators.md),
75
- 5. [ ] [grouping](./2350-grouping.md),
76
- 6. [ ] [built-in](./2360-built-in.md).
77
-
78
- ### 2.4. Syntactic Sugar
79
-
80
- 1. [ ] [identifier-property](./2410-identifier-property.md),
81
- 2. [ ] [line-comment](./2420-line-comment.md),
82
- 3. [ ] [trailing-comma](./2430-trailing-comma.md),
83
- 4. [ ] [shorthand](./2440-shorthand.md),
84
- 5. [ ] [destructuring](./2450-destructuring.md).
85
-
86
- ## 3. FJS
87
-
88
- The FJS can have functions. The format requires additional run-time information for serialization.
89
-
90
- File extensions: `.f.js` and `.f.mjs`.
91
-
92
- |format|any |Tag| |Notes |
93
- |------|--------|---|----|--------------------------------|
94
- |FJS |function| |Func|[function](./3110-function.md) |
95
-
96
- ### 3.1. Required
97
-
98
- 1. [ ] [function](./3110-function.md)
99
- 2. [ ] [parameters](./3120-parameters.md)
100
- 3. [ ] [body-const](./3130-body-const.md)
101
-
102
- ### 3.2. Priority 2
103
-
104
- 1. [ ] `if`. See https://developer.mozilla.org/en-US/docs/Glossary/Falsy
105
- 2. [ ] [let](./3220-let.md)
106
- 3. [ ] `while`
107
- 4. [ ] [export](./3240-export.md)
108
- 5. [ ] Ownership of Mutable Objects (Singletons)
109
-
110
- ### 3.3. Priority 3
111
-
112
- 1. [ ] Regular Expressions
113
- 2. [ ] [type inference](./3370-type-inference.md)
114
- 3. [ ] [promise](./3380-promise.md)
115
- 4. [ ] [class](./3390-class.md)
116
-
117
- ### 3.4. Syntactic Sugar
118
-
119
- 1. [ ] [expression](./3410-expression.md)
120
- 2. [ ] [one-parameter](./3420-one-parameter.md)
121
- 3. [ ] [assignments](./3430-assignments.md)
122
- 4. [ ] `async`/`await`. Depends on the implementation of promises.
123
-
124
- ## 4. ECMAScript Proposals
125
-
126
- 1. [ ] [Type Annotations](https://github.com/tc39/proposal-type-annotations), Stage 1:
127
- - [Node.js](https://nodejs.org/en/learn/typescript/run-natively),
128
- - `Deno` supports TypeScript,
129
- - `Bun` supports TypeScript,
130
- - most browsers don't support the feature.
131
- 2. [ ] [Pipe Operator `|>`](https://github.com/tc39/proposal-pipeline-operator), Stage 2.
132
- 3. [ ] [Records and Tuples](https://github.com/tc39/proposal-record-tuple), Stage 2.
133
-
134
- ## 5. I/O
135
-
136
- ### 5.1. Isolated I/O
137
-
138
- Using dependency injection.
139
-
140
- This implementation of VM requires external function implementation.
141
-
142
- ### 5.2 Isolated Asynchronous I/O
143
-
144
- It requires a promise implementation.
145
-
146
- ### 5.3. State Machine with Asynchronous Requests
147
-
148
- VM doesn't need to implement external functions or promises.
149
-
150
- ```ts
151
- type RequestType = ...;
152
- type Request = readonly[Input, Continuation];
153
- type Continuation = (_: Output) => Request;
154
- type Main = Request
155
- ```
156
-
157
- ## 6. Content-Addressable VM
158
-
159
- See also [Unison](https://www.unison-lang.org/).
160
-
161
- The main target is run-time performance.
162
-
163
- Hash function: most likely SHA256 because there is a lot of hardware support from modern processors.
164
-
165
- Hash structure: we will use several initial hashes for a compress function.
166
-
167
- We may use CDT for huge arrays, objects, strings, and BigInts.
168
-
169
- The first bit of a hash is reserved for a tag. If the tag is `0`, we have raw data with `1` at the end. A hash with all zeroes is used for `undefined`. If the first bit is `0`, then the value is a hash. So, we have only 255 bits for a hash.
170
-
171
- Because we use tagged hash, we can keep small values in a `nanenum`. So it may reuse a lot from non-content addressable VM and ref-values can keep a hash value inside.
172
-
173
- Instead of an address, we can use a prefix, hash. 48 bits should be enough for most cases. However, we also need a mechanism to resolve collisions (even if they are rare). For example, our value can be an enum like this
174
-
175
- ```rust
176
- enum Value {
177
- Data(...),
178
- Hash(u48),
179
- Ref(u48),
180
- }
181
- ```
182
-
183
- However, while the `===` operation can be faster, `Value::Hash` is slower when we need to access the object's internals because it requires two dereference operations. So, we may come back to using only references.
184
-
185
- ```rust
186
- enum Value {
187
- Data(...)
188
- Ref(u48)
189
- }
190
- ```
191
-
192
- Collision probability for 48 bits is 50% for `16777216 = 2^24` hashes (birthday attack).
193
-
package/issues/test.f.ts DELETED
@@ -1,58 +0,0 @@
1
- const at
2
- : (a: unknown) => (i: any) =>unknown
3
- = a => i => Object.getOwnPropertyDescriptor(a, i)?.value
4
-
5
- export default {
6
- ownProperty: {
7
- nullish: () => {
8
- /* // panic
9
- const v = Object.getOwnPropertyDescriptor(null, 0)
10
- if (v !== undefined) {
11
- throw v
12
- }
13
- */
14
- /* // panic
15
- const v = Object.getOwnPropertyDescriptor(undefined, 0)
16
- if (v !== undefined) {
17
- throw v
18
- }
19
- */
20
- },
21
- bool: () => {
22
- const v = at(true)('x')
23
- if (v !== undefined) {
24
- throw v
25
- }
26
- },
27
- array: () => {
28
- const a = ['42']
29
- {
30
- const v = at(a)('0')
31
- if (v !== '42') { throw v }
32
- }
33
- {
34
- const v = at(a)(0)
35
- if (v !== '42') { throw v }
36
- }
37
- },
38
- object: {
39
- null: () => {
40
- const o = { null: 'hello' }
41
- const v = at(o)(null)
42
- if (v !== 'hello') { throw v }
43
- },
44
- undefined: () => {
45
- const o = { undefined: 'hello' }
46
- const v = at(o)(undefined)
47
- if (v !== 'hello') { throw v }
48
- }
49
- },
50
- string: {
51
- number: () => {
52
- const o = 'hello'
53
- const v = at(o)(1)
54
- if (v !== 'e') { throw v }
55
- }
56
- }
57
- }
58
- }