diff --git a/darwin/ninja.exe b/darwin/ninja.exe index 622ce64dbc..07b7d91ce9 100755 Binary files a/darwin/ninja.exe and b/darwin/ninja.exe differ diff --git a/jscomp/bsb/bsb_ninja_check.ml b/jscomp/bsb/bsb_ninja_check.ml index 9458f01c94..67d57ab29a 100644 --- a/jscomp/bsb/bsb_ninja_check.ml +++ b/jscomp/bsb/bsb_ninja_check.ml @@ -24,12 +24,6 @@ [@@@warning "+9"] -type t = - { - dir_or_files : string array ; - st_mtimes : float array; - source_directory : string ; - } (* float_of_string_opt *) external hexstring_of_float : float -> int -> char -> string = "caml_hexstring_of_float" @@ -41,54 +35,6 @@ let hex_of_float f = hexstring_of_float f (-1) '-' float_of_string (hex_of_float f) = f *) -let encode ( {source_directory ; st_mtimes; dir_or_files} : t ) - (buf: Ext_buffer.t)= - Ext_buffer.add_string_char buf Bs_version.version '\n'; - Ext_buffer.add_string_char buf source_directory '\n'; - let dir_or_files_len = Array.length dir_or_files in - (if dir_or_files_len <> 0 then begin - Ext_buffer.add_string buf dir_or_files.(0); - for i = 1 to dir_or_files_len - 1 do - Ext_buffer.add_char_string buf '\t' dir_or_files.(i) - done - end); - Ext_buffer.add_char buf '\n'; - let st_mtimes_len = Array.length st_mtimes in - (if st_mtimes_len <> 0 then begin - Ext_buffer.add_string buf (hex_of_float st_mtimes.(0)); - for i = 1 to st_mtimes_len - 1 do - Ext_buffer.add_char_string buf '\t' (hex_of_float st_mtimes.(i)) - done - end); - Ext_buffer.add_char buf '\n' - -let decode_exn ic = - let source_directory = input_line ic in - let dir_or_files = input_line ic in - let dir_or_files = - Array.of_list - (Ext_string.split dir_or_files '\t') in - let st_mtimes_line = - input_line ic in - let st_mtimes = - Ext_array.of_list_map - (Ext_string.split st_mtimes_line '\t') - (fun x -> float_of_string x) in - close_in ic ; - {dir_or_files; st_mtimes; source_directory} - - -(* TODO: for such small data structure, maybe text format is better *) - -let write (fname : string) (x : t) = - let buf = Ext_buffer.create 1_000 in - encode x buf; - let oc = open_out_bin fname in - Ext_buffer.output_buffer oc buf ; - close_out oc - - - type check_result = @@ -113,35 +59,66 @@ let pp_check_result fmt (check_resoult : check_result) = "Bsb forced rebuild" | Other s -> s) -let rec check_aux cwd (xs : string array) (ys: float array) i finish = - if i = finish then Good - else - let current_file = Array.unsafe_get xs i in - - let stat = Unix.stat (Filename.concat cwd current_file) in - if stat.st_mtime <= Array.unsafe_get ys i then - check_aux cwd xs ys (i + 1 ) finish - else Other current_file - - +let rec check_aux cwd (xs : string list) = + match xs with + | [] -> Good + | "===" :: rest -> + check_global rest + | item :: rest + -> + match Ext_string.split item '\t' with + | [file; stamp] -> + let stamp = float_of_string stamp in + let cur_file = (Filename.concat cwd file) in + let stat = Unix.stat cur_file in + if stat.st_mtime <= stamp then + check_aux cwd rest + else Other cur_file + | _ -> Bsb_file_corrupted +and check_global rest = + match rest with + | [] -> Good + | item :: rest -> + match Ext_string.split item '\t' with + | [file; stamp] -> + let stamp = float_of_string stamp in + let cur_file = file in + let stat = Unix.stat cur_file in + if stat.st_mtime <> stamp then + check_global rest + else Other cur_file + | _ -> Bsb_file_corrupted +(* TODO: for such small data structure, maybe text format is better *) -let record ~per_proj_dir ~file (file_or_dirs : string list) : unit = - let dir_or_files = Array.of_list file_or_dirs in - let st_mtimes = - Ext_array.map dir_or_files - (fun x -> - (Unix.stat (Filename.concat per_proj_dir x )).st_mtime - ) - in - write file - { - st_mtimes ; - dir_or_files; - source_directory = per_proj_dir ; - } +let record + ~per_proj_dir ~file + ~(config:Bsb_config_types.t) (file_or_dirs : string list) : unit = + let _ = config in + let buf = Ext_buffer.create 1_000 in + Ext_buffer.add_string_char buf Bs_version.version '\n'; + Ext_buffer.add_string_char buf per_proj_dir '\n'; + Ext_list.iter file_or_dirs (fun f -> + Ext_buffer.add_string_char buf f '\t'; + Ext_buffer.add_string_char buf + (hex_of_float (Unix.stat (Filename.concat per_proj_dir f)).st_mtime) '\n'; + ); + begin match config.ppx_files with + | [] -> () + | files -> + Ext_buffer.add_string buf "===\n"; + Ext_list.iter files (fun {name ; args = _} -> + try + let stamp = (Unix.stat name).st_mtime in + Ext_buffer.add_string_char buf name '\t'; + Ext_buffer.add_string_char buf (hex_of_float stamp) '\n' + with _ -> ()) + end; + let oc = open_out_bin file in + Ext_buffer.output_buffer oc buf ; + close_out oc (** check time stamp for all files TODO: those checks system call can be saved later @@ -153,18 +130,16 @@ let check ~(per_proj_dir:string) ~forced ~file : check_result = match open_in_bin file with (* Windows binary mode*) | exception _ -> Bsb_file_not_exist | ic -> - if input_line ic <> Bs_version.version then Bsb_bsc_version_mismatch - else - match decode_exn ic with - | exception _ -> Bsb_file_corrupted (* corrupted file *) - | { - dir_or_files ; source_directory; st_mtimes - } -> + match List.rev (Ext_io.rev_lines_of_chann ic) with + | exception _ -> Bsb_file_corrupted + | version :: source_directory :: dir_or_files -> + if version <> Bs_version.version then Bsb_bsc_version_mismatch + else if per_proj_dir <> source_directory then Bsb_source_directory_changed else if forced then Bsb_forced (* No need walk through *) - else + else begin try - check_aux per_proj_dir dir_or_files st_mtimes 0 (Array.length dir_or_files) + check_aux per_proj_dir dir_or_files with e -> begin Bsb_log.info @@ -172,4 +147,6 @@ let check ~(per_proj_dir:string) ~forced ~file : check_result = (Printexc.to_string e); Bsb_file_not_exist end + end + | _ -> Bsb_file_corrupted diff --git a/jscomp/bsb/bsb_ninja_check.mli b/jscomp/bsb/bsb_ninja_check.mli index df4bbc25de..21fa0679a4 100644 --- a/jscomp/bsb/bsb_ninja_check.mli +++ b/jscomp/bsb/bsb_ninja_check.mli @@ -62,6 +62,7 @@ val pp_check_result : val record : per_proj_dir:string -> file:string -> + config:Bsb_config_types.t -> string list -> unit diff --git a/jscomp/bsb/bsb_ninja_gen.ml b/jscomp/bsb/bsb_ninja_gen.ml index 4a5fea0716..2e65a373b3 100644 --- a/jscomp/bsb/bsb_ninja_gen.ml +++ b/jscomp/bsb/bsb_ninja_gen.ml @@ -117,8 +117,7 @@ let output_ninja_and_namespace_map } : Bsb_config_types.t) : unit = let lib_artifacts_dir = Bsb_config.lib_bs in - let cwd_lib_bs = per_proj_dir // lib_artifacts_dir in - let ppx_flags = Bsb_build_util.ppx_flags ppx_files in + let cwd_lib_bs = per_proj_dir // lib_artifacts_dir in let oc = open_out_bin (cwd_lib_bs // Literals.build_ninja) in let warnings = Bsb_warning.to_bsb_string ~toplevel warning in let bsc_flags = (get_bsc_flags bsc_flags) in @@ -180,7 +179,7 @@ let output_ninja_and_namespace_map ~bsc:bsc_path ~warnings ~bs_dep - ~ppx_flags + ~ppx_files ~bsc_flags ~dpkg_incls (* dev dependencies *) ~lib_incls (* its own libs *) diff --git a/jscomp/bsb/bsb_ninja_regen.ml b/jscomp/bsb/bsb_ninja_regen.ml index 519e0a8a61..f02a1a65b3 100644 --- a/jscomp/bsb/bsb_ninja_regen.ml +++ b/jscomp/bsb/bsb_ninja_regen.ml @@ -58,7 +58,7 @@ let regenerate_ninja Bsb_clean.clean_self per_proj_dir; end ; - let config = + let config : Bsb_config_types.t = Bsb_config_parse.interpret_json ~toplevel_package_specs ~per_proj_dir in @@ -80,7 +80,7 @@ let regenerate_ninja ~per_proj_dir ~toplevel config ; (* PR2184: we still need record empty dir since it may add files in the future *) - Bsb_ninja_check.record ~per_proj_dir ~file:output_deps + Bsb_ninja_check.record ~per_proj_dir ~config ~file:output_deps (Literals.bsconfig_json::config.file_groups.globbed_dirs) ; Some config diff --git a/jscomp/bsb/bsb_ninja_rule.ml b/jscomp/bsb/bsb_ninja_rule.ml index 46bf1146ac..52660efa90 100644 --- a/jscomp/bsb/bsb_ninja_rule.ml +++ b/jscomp/bsb/bsb_ninja_rule.ml @@ -127,7 +127,7 @@ let make_custom_rules ~bsc ~warnings ~bs_dep - ~ppx_flags + ~(ppx_files : Bsb_config_types.ppx list) ~bsc_flags ~dpkg_incls ~lib_incls @@ -186,6 +186,16 @@ let make_custom_rules Ext_buffer.add_char_string buf ' ' warnings; Ext_buffer.add_string buf " -bs-v "; Ext_buffer.add_string buf Bs_version.version; + (match ppx_files with + | [ ] -> () + | _ -> + Ext_list.iter ppx_files (fun x -> + match string_of_float (Unix.stat x.name).st_mtime with + | exception _ -> () + | st -> Ext_buffer.add_char_string buf ',' st + ); + Ext_buffer.add_char_string buf ' ' + (Bsb_build_util.ppx_flags ppx_files)); (match refmt with | None -> () | Some x -> @@ -205,7 +215,6 @@ let make_custom_rules -> Ext_buffer.add_string buf " -bs-jsx 3" ); - Ext_buffer.add_char_string buf ' ' ppx_flags; Ext_buffer.add_char_string buf ' ' bsc_flags; Ext_buffer.add_string buf " -bs-ast -o $out $in"; Ext_buffer.contents buf diff --git a/jscomp/bsb/bsb_ninja_rule.mli b/jscomp/bsb/bsb_ninja_rule.mli index afda480402..b3bd671bfe 100644 --- a/jscomp/bsb/bsb_ninja_rule.mli +++ b/jscomp/bsb/bsb_ninja_rule.mli @@ -82,7 +82,7 @@ val make_custom_rules : bsc:string -> warnings:string -> bs_dep:string -> - ppx_flags:string -> + ppx_files:Bsb_config_types.ppx list -> bsc_flags:string -> dpkg_incls:string -> lib_incls:string -> diff --git a/jscomp/common/bs_version.ml b/jscomp/common/bs_version.ml index d738a4ffc6..91cf0d020a 100644 --- a/jscomp/common/bs_version.ml +++ b/jscomp/common/bs_version.ml @@ -22,7 +22,7 @@ * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -let version = "8.3.0-dev.2" +let version = "8.4.0-dev.1" let header = "// Generated by ReScript, PLEASE EDIT WITH CARE" let package_name = "bs-platform" diff --git a/lib/4.06.1/bsb.ml b/lib/4.06.1/bsb.ml index 10c45ef659..d7b2e97d1e 100644 --- a/lib/4.06.1/bsb.ml +++ b/lib/4.06.1/bsb.ml @@ -55,7 +55,7 @@ end = struct * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -let version = "8.3.0-dev.2" +let version = "8.4.0-dev.1" let header = "// Generated by ReScript, PLEASE EDIT WITH CARE" let package_name = "bs-platform" @@ -12441,6 +12441,7 @@ val pp_check_result : val record : per_proj_dir:string -> file:string -> + config:Bsb_config_types.t -> string list -> unit @@ -12480,12 +12481,6 @@ end = struct [@@@warning "+9"] -type t = - { - dir_or_files : string array ; - st_mtimes : float array; - source_directory : string ; - } (* float_of_string_opt *) external hexstring_of_float : float -> int -> char -> string = "caml_hexstring_of_float" @@ -12497,54 +12492,6 @@ let hex_of_float f = hexstring_of_float f (-1) '-' float_of_string (hex_of_float f) = f *) -let encode ( {source_directory ; st_mtimes; dir_or_files} : t ) - (buf: Ext_buffer.t)= - Ext_buffer.add_string_char buf Bs_version.version '\n'; - Ext_buffer.add_string_char buf source_directory '\n'; - let dir_or_files_len = Array.length dir_or_files in - (if dir_or_files_len <> 0 then begin - Ext_buffer.add_string buf dir_or_files.(0); - for i = 1 to dir_or_files_len - 1 do - Ext_buffer.add_char_string buf '\t' dir_or_files.(i) - done - end); - Ext_buffer.add_char buf '\n'; - let st_mtimes_len = Array.length st_mtimes in - (if st_mtimes_len <> 0 then begin - Ext_buffer.add_string buf (hex_of_float st_mtimes.(0)); - for i = 1 to st_mtimes_len - 1 do - Ext_buffer.add_char_string buf '\t' (hex_of_float st_mtimes.(i)) - done - end); - Ext_buffer.add_char buf '\n' - -let decode_exn ic = - let source_directory = input_line ic in - let dir_or_files = input_line ic in - let dir_or_files = - Array.of_list - (Ext_string.split dir_or_files '\t') in - let st_mtimes_line = - input_line ic in - let st_mtimes = - Ext_array.of_list_map - (Ext_string.split st_mtimes_line '\t') - (fun x -> float_of_string x) in - close_in ic ; - {dir_or_files; st_mtimes; source_directory} - - -(* TODO: for such small data structure, maybe text format is better *) - -let write (fname : string) (x : t) = - let buf = Ext_buffer.create 1_000 in - encode x buf; - let oc = open_out_bin fname in - Ext_buffer.output_buffer oc buf ; - close_out oc - - - type check_result = @@ -12569,35 +12516,66 @@ let pp_check_result fmt (check_resoult : check_result) = "Bsb forced rebuild" | Other s -> s) -let rec check_aux cwd (xs : string array) (ys: float array) i finish = - if i = finish then Good - else - let current_file = Array.unsafe_get xs i in - - let stat = Unix.stat (Filename.concat cwd current_file) in - if stat.st_mtime <= Array.unsafe_get ys i then - check_aux cwd xs ys (i + 1 ) finish - else Other current_file - - +let rec check_aux cwd (xs : string list) = + match xs with + | [] -> Good + | "===" :: rest -> + check_global rest + | item :: rest + -> + match Ext_string.split item '\t' with + | [file; stamp] -> + let stamp = float_of_string stamp in + let cur_file = (Filename.concat cwd file) in + let stat = Unix.stat cur_file in + if stat.st_mtime <= stamp then + check_aux cwd rest + else Other cur_file + | _ -> Bsb_file_corrupted +and check_global rest = + match rest with + | [] -> Good + | item :: rest -> + match Ext_string.split item '\t' with + | [file; stamp] -> + let stamp = float_of_string stamp in + let cur_file = file in + let stat = Unix.stat cur_file in + if stat.st_mtime <> stamp then + check_global rest + else Other cur_file + | _ -> Bsb_file_corrupted +(* TODO: for such small data structure, maybe text format is better *) -let record ~per_proj_dir ~file (file_or_dirs : string list) : unit = - let dir_or_files = Array.of_list file_or_dirs in - let st_mtimes = - Ext_array.map dir_or_files - (fun x -> - (Unix.stat (Filename.concat per_proj_dir x )).st_mtime - ) - in - write file - { - st_mtimes ; - dir_or_files; - source_directory = per_proj_dir ; - } +let record + ~per_proj_dir ~file + ~(config:Bsb_config_types.t) (file_or_dirs : string list) : unit = + let _ = config in + let buf = Ext_buffer.create 1_000 in + Ext_buffer.add_string_char buf Bs_version.version '\n'; + Ext_buffer.add_string_char buf per_proj_dir '\n'; + Ext_list.iter file_or_dirs (fun f -> + Ext_buffer.add_string_char buf f '\t'; + Ext_buffer.add_string_char buf + (hex_of_float (Unix.stat (Filename.concat per_proj_dir f)).st_mtime) '\n'; + ); + begin match config.ppx_files with + | [] -> () + | files -> + Ext_buffer.add_string buf "===\n"; + Ext_list.iter files (fun {name ; args = _} -> + try + let stamp = (Unix.stat name).st_mtime in + Ext_buffer.add_string_char buf name '\t'; + Ext_buffer.add_string_char buf (hex_of_float stamp) '\n' + with _ -> ()) + end; + let oc = open_out_bin file in + Ext_buffer.output_buffer oc buf ; + close_out oc (** check time stamp for all files TODO: those checks system call can be saved later @@ -12609,18 +12587,16 @@ let check ~(per_proj_dir:string) ~forced ~file : check_result = match open_in_bin file with (* Windows binary mode*) | exception _ -> Bsb_file_not_exist | ic -> - if input_line ic <> Bs_version.version then Bsb_bsc_version_mismatch - else - match decode_exn ic with - | exception _ -> Bsb_file_corrupted (* corrupted file *) - | { - dir_or_files ; source_directory; st_mtimes - } -> + match List.rev (Ext_io.rev_lines_of_chann ic) with + | exception _ -> Bsb_file_corrupted + | version :: source_directory :: dir_or_files -> + if version <> Bs_version.version then Bsb_bsc_version_mismatch + else if per_proj_dir <> source_directory then Bsb_source_directory_changed else if forced then Bsb_forced (* No need walk through *) - else + else begin try - check_aux per_proj_dir dir_or_files st_mtimes 0 (Array.length dir_or_files) + check_aux per_proj_dir dir_or_files with e -> begin Bsb_log.info @@ -12628,6 +12604,8 @@ let check ~(per_proj_dir:string) ~forced ~file : check_result = (Printexc.to_string e); Bsb_file_not_exist end + end + | _ -> Bsb_file_corrupted end @@ -13030,7 +13008,7 @@ val make_custom_rules : bsc:string -> warnings:string -> bs_dep:string -> - ppx_flags:string -> + ppx_files:Bsb_config_types.ppx list -> bsc_flags:string -> dpkg_incls:string -> lib_incls:string -> @@ -13170,7 +13148,7 @@ let make_custom_rules ~bsc ~warnings ~bs_dep - ~ppx_flags + ~(ppx_files : Bsb_config_types.ppx list) ~bsc_flags ~dpkg_incls ~lib_incls @@ -13229,6 +13207,16 @@ let make_custom_rules Ext_buffer.add_char_string buf ' ' warnings; Ext_buffer.add_string buf " -bs-v "; Ext_buffer.add_string buf Bs_version.version; + (match ppx_files with + | [ ] -> () + | _ -> + Ext_list.iter ppx_files (fun x -> + match string_of_float (Unix.stat x.name).st_mtime with + | exception _ -> () + | st -> Ext_buffer.add_char_string buf ',' st + ); + Ext_buffer.add_char_string buf ' ' + (Bsb_build_util.ppx_flags ppx_files)); (match refmt with | None -> () | Some x -> @@ -13248,7 +13236,6 @@ let make_custom_rules -> Ext_buffer.add_string buf " -bs-jsx 3" ); - Ext_buffer.add_char_string buf ' ' ppx_flags; Ext_buffer.add_char_string buf ' ' bsc_flags; Ext_buffer.add_string buf " -bs-ast -o $out $in"; Ext_buffer.contents buf @@ -13923,8 +13910,7 @@ let output_ninja_and_namespace_map } : Bsb_config_types.t) : unit = let lib_artifacts_dir = Bsb_config.lib_bs in - let cwd_lib_bs = per_proj_dir // lib_artifacts_dir in - let ppx_flags = Bsb_build_util.ppx_flags ppx_files in + let cwd_lib_bs = per_proj_dir // lib_artifacts_dir in let oc = open_out_bin (cwd_lib_bs // Literals.build_ninja) in let warnings = Bsb_warning.to_bsb_string ~toplevel warning in let bsc_flags = (get_bsc_flags bsc_flags) in @@ -13986,7 +13972,7 @@ let output_ninja_and_namespace_map ~bsc:bsc_path ~warnings ~bs_dep - ~ppx_flags + ~ppx_files ~bsc_flags ~dpkg_incls (* dev dependencies *) ~lib_incls (* its own libs *) @@ -14418,7 +14404,7 @@ let regenerate_ninja Bsb_clean.clean_self per_proj_dir; end ; - let config = + let config : Bsb_config_types.t = Bsb_config_parse.interpret_json ~toplevel_package_specs ~per_proj_dir in @@ -14440,7 +14426,7 @@ let regenerate_ninja ~per_proj_dir ~toplevel config ; (* PR2184: we still need record empty dir since it may add files in the future *) - Bsb_ninja_check.record ~per_proj_dir ~file:output_deps + Bsb_ninja_check.record ~per_proj_dir ~config ~file:output_deps (Literals.bsconfig_json::config.file_groups.globbed_dirs) ; Some config diff --git a/lib/4.06.1/unstable/js_compiler.ml b/lib/4.06.1/unstable/js_compiler.ml index d3b8d85fca..a4de45c7ed 100644 --- a/lib/4.06.1/unstable/js_compiler.ml +++ b/lib/4.06.1/unstable/js_compiler.ml @@ -17876,7 +17876,7 @@ end = struct * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -let version = "8.3.0-dev.2" +let version = "8.4.0-dev.1" let header = "// Generated by ReScript, PLEASE EDIT WITH CARE" let package_name = "bs-platform" diff --git a/lib/4.06.1/unstable/js_refmt_compiler.ml b/lib/4.06.1/unstable/js_refmt_compiler.ml index dd44533d65..2db83befb2 100644 --- a/lib/4.06.1/unstable/js_refmt_compiler.ml +++ b/lib/4.06.1/unstable/js_refmt_compiler.ml @@ -17876,7 +17876,7 @@ end = struct * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -let version = "8.3.0-dev.2" +let version = "8.4.0-dev.1" let header = "// Generated by ReScript, PLEASE EDIT WITH CARE" let package_name = "bs-platform" diff --git a/lib/4.06.1/whole_compiler.ml b/lib/4.06.1/whole_compiler.ml index 37c850eacc..8513c8c849 100644 --- a/lib/4.06.1/whole_compiler.ml +++ b/lib/4.06.1/whole_compiler.ml @@ -304348,7 +304348,7 @@ end = struct * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *) -let version = "8.3.0-dev.2" +let version = "8.4.0-dev.1" let header = "// Generated by ReScript, PLEASE EDIT WITH CARE" let package_name = "bs-platform" diff --git a/linux/ninja.exe b/linux/ninja.exe index e7e44fad36..46335e2e62 100755 Binary files a/linux/ninja.exe and b/linux/ninja.exe differ diff --git a/ninja b/ninja index 1701af9ac7..23e51a1477 160000 --- a/ninja +++ b/ninja @@ -1 +1 @@ -Subproject commit 1701af9ac71d8e8c68c4d3e0ef37feec6fc2c792 +Subproject commit 23e51a1477cb018ec778a75c5ba585df8d6d860c diff --git a/package.json b/package.json index a0383f11ac..57c6cb8ade 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "coverage": "nyc --timeout=3000 --reporter=html mocha jscomp/test/*test.js && open ./coverage/index.html" }, "name": "bs-platform", - "version": "8.3.0-dev.2", + "version": "8.4.0-dev.1", "description": "ReScript compiler, OCaml standard libary by ReScript and its required runtime support", "repository": { "type": "git", diff --git a/win32/ninja.exe b/win32/ninja.exe index ccee8f0270..6a2407082b 100644 Binary files a/win32/ninja.exe and b/win32/ninja.exe differ