@grain/binaryen.ml 0.12.1 → 0.14.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 (56) hide show
  1. binaryen-archive/CHANGELOG.md +32 -0
  2. binaryen-archive/README.md +24 -0
  3. binaryen-archive/binaryen.opam +4 -4
  4. binaryen-archive/esy.lock/index.json +102 -100
  5. binaryen-archive/esy.lock/opam/{cmdliner.1.0.4 → cmdliner.1.1.0}/opam +17 -20
  6. binaryen-archive/esy.lock/opam/{ocaml-lsp-server.1.9.1 → ocaml-lsp-server.1.10.3}/opam +4 -4
  7. binaryen-archive/esy.lock/opam/{ocamlbuild.0.14.0 → ocamlbuild.0.14.1}/opam +18 -15
  8. binaryen-archive/esy.lock/opam/ocamlformat.0.20.1/opam +2 -0
  9. binaryen-archive/esy.lock/opam/{ppxlib.0.24.0 → ppxlib.0.25.0}/opam +4 -4
  10. binaryen-archive/esy.lock/opam/stdlib-shims.0.3.0/opam +1 -1
  11. binaryen-archive/esy.lock/opam/uchar.0.0.2/opam +1 -1
  12. binaryen-archive/esy.lock/opam/uutf.1.0.3/opam +36 -0
  13. binaryen-archive/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.1_opam_override/files/winpatch.patch +11 -0
  14. binaryen-archive/esy.lock/overrides/{opam__s__ocamlbuild_opam__c__0.14.0_opam_override → opam__s__ocamlbuild_opam__c__0.14.1_opam_override}/package.json +5 -3
  15. binaryen-archive/esy.lock/overrides/opam__s__ocamlfind_opam__c__1.9.3_opam_override/files/findlib.patch +14 -0
  16. binaryen-archive/esy.lock/overrides/opam__s__uchar_opam__c__0.0.2_opam_override/files/winpatch.patch +11 -0
  17. binaryen-archive/esy.lock/overrides/opam__s__uchar_opam__c__0.0.2_opam_override/package.json +11 -0
  18. binaryen-archive/js/binaryen.es5.js +363 -5
  19. binaryen-archive/js/dune +1 -1
  20. binaryen-archive/js/export.ml +0 -3
  21. binaryen-archive/js/expression.ml +161 -0
  22. binaryen-archive/js/literal.ml +0 -1
  23. binaryen-archive/js/module.ml +6 -9
  24. binaryen-archive/js/op.ml +0 -223
  25. binaryen-archive/js/prelude.js +2 -11
  26. binaryen-archive/js/type.ml +0 -9
  27. binaryen-archive/package.json +4 -4
  28. binaryen-archive/src/binaryen_stubs_expressions.c +250 -0
  29. binaryen-archive/src/binaryen_stubs_features.c +24 -0
  30. binaryen-archive/src/element_segment.ml +0 -1
  31. binaryen-archive/src/export.ml +0 -2
  32. binaryen-archive/src/expression.ml +94 -63
  33. binaryen-archive/src/function.ml +0 -6
  34. binaryen-archive/src/global.ml +0 -2
  35. binaryen-archive/src/literal.ml +0 -3
  36. binaryen-archive/src/module.ml +17 -9
  37. binaryen-archive/src/settings.ml +0 -6
  38. binaryen-archive/src/type.ml +0 -1
  39. binaryen-archive/test/config/ocamlopt_flags.ml +8 -1
  40. binaryen-archive/test/test.expected +8 -0
  41. binaryen-archive/test/test.ml +44 -22
  42. binaryen-archive/virtual/element_segment.mli +0 -4
  43. binaryen-archive/virtual/export.mli +0 -15
  44. binaryen-archive/virtual/expression.mli +93 -115
  45. binaryen-archive/virtual/function.mli +0 -12
  46. binaryen-archive/virtual/global.mli +0 -8
  47. binaryen-archive/virtual/import.mli +0 -4
  48. binaryen-archive/virtual/literal.mli +0 -5
  49. binaryen-archive/virtual/module.mli +4 -29
  50. binaryen-archive/virtual/op.mli +0 -315
  51. binaryen-archive/virtual/settings.mli +0 -17
  52. binaryen-archive/virtual/table.mli +0 -3
  53. binaryen-archive/virtual/type.mli +0 -11
  54. binaryen-archive/esy.lock/opam/uutf.1.0.2/opam +0 -40
  55. binaryen-archive/esy.lock/overrides/opam__s__ocamlbuild_opam__c__0.14.0_opam_override/files/ocamlbuild-0.14.0.patch +0 -463
  56. binaryen-archive/js/postlude.js +0 -2
@@ -1,11 +1,8 @@
1
1
  type t
2
2
 
3
3
  external int32 : int32 -> t = "caml_binaryen_literal_int32"
4
-
5
4
  external int64 : int64 -> t = "caml_binaryen_literal_int64"
6
-
7
5
  external float32_bits : int32 -> t = "caml_binaryen_literal_float32_bits"
8
-
9
6
  external float64_bits : int64 -> t = "caml_binaryen_literal_float64_bits"
10
7
 
11
8
  let float32 n = float32_bits @@ Int32.bits_of_float n
@@ -1,5 +1,4 @@
1
1
  let _ = Callback.register "array_of_list" Array.of_list
2
-
3
2
  let _ = Callback.register "array_length" Array.length
4
3
 
5
4
  type t
@@ -53,28 +52,39 @@ module Feature = struct
53
52
 
54
53
  let multivalue = multivalue ()
55
54
 
55
+ external gc : unit -> t = "caml_binaryen_feature_gc"
56
+
57
+ let gc = gc ()
58
+
59
+ external memory64 : unit -> t = "caml_binaryen_feature_memory64"
60
+
61
+ let memory64 = memory64 ()
62
+
63
+ external typed_function_references : unit -> t
64
+ = "caml_binaryen_feature_typed_function_references"
65
+
66
+ let typed_function_references = typed_function_references ()
67
+
68
+ external relaxed_simd : unit -> t = "caml_binaryen_feature_relaxed_simd"
69
+
70
+ let relaxed_simd = relaxed_simd ()
71
+
56
72
  external all : unit -> t = "caml_binaryen_feature_all"
57
73
 
58
74
  let all = all ()
59
75
  end
60
76
 
61
77
  external create : unit -> t = "caml_binaryen_module_create"
62
-
63
78
  external dispose : t -> unit = "caml_binaryen_module_dispose"
64
79
 
65
80
  external add_custom_section : t -> string -> string -> unit
66
81
  = "caml_binaryen_add_custom_section"
67
82
 
68
83
  external parse : string -> t = "caml_binaryen_module_parse"
69
-
70
84
  external print : t -> unit = "caml_binaryen_module_print"
71
-
72
85
  external print_asmjs : t -> unit = "caml_binaryen_module_print_asmjs"
73
-
74
86
  external validate : t -> int = "caml_binaryen_module_validate"
75
-
76
87
  external optimize : t -> unit = "caml_binaryen_module_optimize"
77
-
78
88
  external get_features : t -> int = "caml_binaryen_module_get_features"
79
89
 
80
90
  let get_features wasm_mod =
@@ -103,9 +113,7 @@ external write : t -> string option -> bytes * string option
103
113
  = "caml_binaryen_module_write"
104
114
 
105
115
  external write_text : t -> string = "caml_binaryen_module_write_text"
106
-
107
116
  external read : bytes -> t = "caml_binaryen_module_read"
108
-
109
117
  external interpret : t -> unit = "caml_binaryen_module_interpret"
110
118
 
111
119
  external add_debug_info_filename : t -> string -> int
@@ -1,13 +1,8 @@
1
1
  external get_optimize_level : unit -> int = "caml_binaryen_get_optimize_level"
2
-
3
2
  external set_optimize_level : int -> unit = "caml_binaryen_set_optimize_level"
4
-
5
3
  external get_shrink_level : unit -> int = "caml_binaryen_get_shrink_level"
6
-
7
4
  external set_shrink_level : int -> unit = "caml_binaryen_set_shrink_level"
8
-
9
5
  external get_debug_info : unit -> bool = "caml_binaryen_get_debug_info"
10
-
11
6
  external set_debug_info : bool -> unit = "caml_binaryen_set_debug_info"
12
7
 
13
8
  external get_low_memory_unused : unit -> bool
@@ -41,5 +36,4 @@ external set_one_caller_inline_max_size : int -> unit
41
36
  = "caml_binaryen_set_one_caller_inline_max_size"
42
37
 
43
38
  external set_colors_enabled : bool -> unit = "caml_binaryen_set_colors_enabled"
44
-
45
39
  external are_colors_enabled : unit -> bool = "caml_binaryen_are_colors_enabled"
@@ -41,5 +41,4 @@ external auto : unit -> t = "caml_binaryen_type_auto"
41
41
  let auto = auto ()
42
42
 
43
43
  external create : t array -> t = "caml_binaryen_type_create"
44
-
45
44
  external expand : t -> t array = "caml_binaryen_type_expand"
@@ -8,7 +8,14 @@ let () =
8
8
  match C.ocaml_config_var c "system" with
9
9
  | Some "macosx" ->
10
10
  (* These flags preserve the original C++ error behavior. Ref https://github.com/ocaml/ocaml/issues/10423 *)
11
- [ "-cc"; "clang++" ]
11
+ [
12
+ "-cc";
13
+ "clang++";
14
+ "-cclib";
15
+ "-Wl,-keep_dwarf_unwind";
16
+ "-cclib";
17
+ "-Wl,-no_compact_unwind";
18
+ ]
12
19
  | Some _ -> default
13
20
  | None -> default
14
21
  in
@@ -1,3 +1,11 @@
1
+ (table.get $table
2
+ (i32.const 0)
3
+ )
4
+ (table.size $table)
5
+ (table.grow $table
6
+ (ref.null func)
7
+ (i32.const 0)
8
+ )
1
9
  (module
2
10
  (type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
3
11
  (type $none_=>_none (func))
@@ -2,44 +2,29 @@ open Binaryen
2
2
 
3
3
  (* Testing colors enable *)
4
4
  let _ = assert (Settings.are_colors_enabled () == true)
5
-
6
5
  let _ = Settings.set_colors_enabled false
7
-
8
6
  let _ = assert (Settings.are_colors_enabled () == false)
9
-
10
7
  let _ = Settings.set_colors_enabled true
11
8
 
12
9
  (* Testing debug_info enable *)
13
10
  let _ = assert (Settings.get_debug_info () == false)
14
-
15
11
  let _ = Settings.set_debug_info true
16
-
17
12
  let _ = assert (Settings.get_debug_info () == true)
18
-
19
13
  let _ = Settings.set_debug_info false
20
14
 
21
15
  (* Testing low_memory_unused enable *)
22
16
  let _ = assert (Settings.get_low_memory_unused () == false)
23
-
24
17
  let _ = Settings.set_low_memory_unused true
25
-
26
18
  let _ = assert (Settings.get_low_memory_unused () == true)
27
-
28
19
  let _ = Settings.set_low_memory_unused false
29
-
30
20
  let wasm_mod = Module.create ()
31
-
32
21
  let _ = Module.set_features wasm_mod [ Module.Feature.all ]
33
22
 
34
23
  (* Create function type for i32 (i32, i32) *)
35
24
  let params () = Type.create [| Type.int32; Type.int32 |]
36
-
37
25
  let results = Type.int32
38
-
39
26
  let x () = Expression.Local_get.make wasm_mod 0 Type.int32
40
-
41
27
  let y () = Expression.Local_get.make wasm_mod 1 Type.int32
42
-
43
28
  let load = Expression.Load.make wasm_mod 1 ~signed:true 0 0 Type.int32 (y ())
44
29
 
45
30
  let select =
@@ -76,8 +61,31 @@ let start =
76
61
  (Expression.Drop.make wasm_mod call_adder)
77
62
 
78
63
  let _ = Export.add_function_export wasm_mod "adder" "adder"
79
-
80
64
  let _ = Table.add_table wasm_mod "table" 1 1 Type.funcref
65
+ let funcref_expr1 = Expression.Ref.func wasm_mod "adder" Type.funcref
66
+
67
+ let _ =
68
+ Expression.Table.set wasm_mod "table"
69
+ (Expression.Const.make wasm_mod (Literal.int32 0l))
70
+ funcref_expr1
71
+
72
+ let funcref_expr2 =
73
+ Expression.Table.get wasm_mod "table"
74
+ (Expression.Const.make wasm_mod (Literal.int32 0l))
75
+ Type.funcref
76
+
77
+ let _ = Expression.print funcref_expr2
78
+ let table_size = Expression.Table.size wasm_mod "table"
79
+ let _ = Expression.print table_size
80
+ let table_name = Expression.Table_size.get_table table_size
81
+ let _ = Expression.Table_size.set_table table_size table_name
82
+ let null_ref = Expression.Ref.null wasm_mod Type.funcref
83
+
84
+ let table_grow =
85
+ Expression.Table.grow wasm_mod "table" null_ref
86
+ (Expression.Const.make wasm_mod (Literal.int32 0l))
87
+
88
+ let _ = Expression.print table_grow
81
89
 
82
90
  let _ =
83
91
  Global.add_global wasm_mod "max_int64" Type.int64 false
@@ -92,7 +100,6 @@ let _ =
92
100
  (Expression.Const.make wasm_mod (Literal.int32 0l))
93
101
 
94
102
  let _ = Function.set_start wasm_mod start
95
-
96
103
  let _ = Memory.set_memory wasm_mod 1 Memory.unlimited "memory" [] false
97
104
 
98
105
  (* Create an imported "write" function i32 (externref, i32, i32) *)
@@ -128,23 +135,38 @@ let _ = Module.print wasm_mod
128
135
  (* 2. Optimize, then print the module *)
129
136
 
130
137
  let _ = Module.optimize wasm_mod
131
-
132
138
  let _ = Module.print wasm_mod
133
139
 
134
140
  (* 3. Copy previous module bytes into new module, validate, and print *)
135
141
 
136
142
  let byts, _ = Module.write wasm_mod None
137
-
138
143
  let new_mod = Module.read byts
139
144
 
140
- let _ = Module.set_features new_mod [ Module.Feature.all ]
145
+ let _ =
146
+ Module.set_features new_mod
147
+ [
148
+ Module.Feature.mvp;
149
+ Module.Feature.atomics;
150
+ Module.Feature.bulk_memory;
151
+ Module.Feature.mutable_globals;
152
+ Module.Feature.nontrapping_fp_to_int;
153
+ Module.Feature.sign_ext;
154
+ Module.Feature.simd128;
155
+ Module.Feature.exception_handling;
156
+ Module.Feature.tail_call;
157
+ Module.Feature.reference_types;
158
+ Module.Feature.multivalue;
159
+ Module.Feature.gc;
160
+ Module.Feature.memory64;
161
+ Module.Feature.typed_function_references;
162
+ Module.Feature.relaxed_simd;
163
+ Module.Feature.all;
164
+ ]
141
165
 
142
166
  let _ = Module.validate new_mod
143
-
144
167
  let _ = Module.print new_mod
145
168
 
146
169
  (* Dispose the modules 👋 *)
147
170
 
148
171
  let _ = Module.dispose wasm_mod
149
-
150
172
  let _ = Module.dispose new_mod
@@ -1,11 +1,7 @@
1
1
  type t
2
2
 
3
3
  val get_name : t -> string
4
-
5
4
  val get_table : t -> string
6
-
7
5
  val get_offset : t -> Expression.t
8
-
9
6
  val get_length : t -> int
10
-
11
7
  val get_data : t -> int -> string
@@ -1,33 +1,18 @@
1
1
  type t
2
2
 
3
3
  val add_function_export : Module.t -> string -> string -> t
4
-
5
4
  val add_table_export : Module.t -> string -> string -> t
6
-
7
5
  val add_memory_export : Module.t -> string -> string -> t
8
-
9
6
  val add_global_export : Module.t -> string -> string -> t
10
-
11
7
  val get_export : Module.t -> string -> t
12
-
13
8
  val remove_export : Module.t -> string -> unit
14
-
15
9
  val get_num_exports : Module.t -> int
16
-
17
10
  val get_export_by_index : Module.t -> int -> t
18
-
19
11
  val get_name : t -> string
20
-
21
12
  val get_value : t -> string
22
-
23
13
  val external_function : int
24
-
25
14
  val external_table : int
26
-
27
15
  val external_memory : int
28
-
29
16
  val external_global : int
30
-
31
17
  val external_tag : int
32
-
33
18
  val export_get_kind : t -> int