@@ -27,14 +27,19 @@ jobs:
2727        include :
2828          - os : macos-13  #  x64
2929            rust-target : x86_64-apple-darwin 
30+             node-target : darwin-x64 
3031          - os : macos-14  #  ARM
3132            rust-target : aarch64-apple-darwin 
33+             node-target : darwin-arm64 
3234          - os : ubuntu-24.04  #  x64
3335            rust-target : x86_64-unknown-linux-musl 
36+             node-target : linux-x64 
3437          - os : ubuntu-24.04-arm  #  ARM
3538            rust-target : aarch64-unknown-linux-musl 
39+             node-target : linux-arm64 
3640          - os : windows-latest 
3741            rust-target : x86_64-pc-windows-gnu 
42+             node-target : win32-x64 
3843
3944    runs-on : ${{matrix.os}} 
4045
@@ -66,25 +71,24 @@ jobs:
6671        uses : dtolnay/rust-toolchain@master 
6772        with :
6873          toolchain : stable 
69-           targets : ${{matrix.rust-target}} 
74+           targets : ${{  matrix.rust-target  }} 
7075
7176      - name : Build rewatch 
7277        if : steps.build-cache.outputs.cache-hit != 'true' 
73-         run : cargo build --manifest-path rewatch/Cargo.toml --target ${{matrix.rust-target}} --release 
74- 
75-       - name : Copy rewatch exe to platform bin dir 
7678        run : | 
77-           cp rewatch/target/${{matrix.rust-target}}/release/rewatch${{ runner.os == 'Windows' && '.exe' || '' }} rewatch 
78-           node ./scripts/copyExes.js -rewatch 
79+           cargo build --manifest-path rewatch/Cargo.toml --target ${{ matrix.rust-target }} --release 
7980
80- name : Get artifact dir name 
81-         run : node .github/workflows/get_artifact_dir_name.js 
81+ name : Copy rewatch binary 
82+         run : | 
83+           cp rewatch/target/${{ matrix.rust-target }}/release/rewatch${{ runner.os == 'Windows' && '.exe' || '' }} rewatch.exe 
84+ shell : bash 
8285
8386      - name : " Upload artifact: rewatch binary" 
8487        uses : actions/upload-artifact@v4 
8588        with :
86-           name : rewatch-${{env.artifact_dir_name}} 
87-           path : ${{ env.artifact_dir_name }} 
89+           name : rewatch-${{ matrix.node-target }} 
90+           path : rewatch.exe 
91+           if-no-files-found : error 
8892
8993  build-compiler :
9094    strategy :
@@ -95,21 +99,26 @@ jobs:
9599            ocaml_compiler : ocaml-variants.5.3.0+options,ocaml-option-static 
96100            upload_binaries : true 
97101            upload_libs : true 
102+             node-target : linux-x64 
98103          - os : ubuntu-24.04-arm  #  ARM
99104            ocaml_compiler : ocaml-variants.5.3.0+options,ocaml-option-static 
100105            upload_binaries : true 
101106            #  Build the playground compiler and run the benchmarks on the fastest runner
102107            build_playground : true 
103108            benchmarks : true 
109+             node-target : linux-arm64 
104110          - os : macos-13  #  x64
105111            ocaml_compiler : 5.3.0 
106112            upload_binaries : true 
113+             node-target : darwin-x64 
107114          - os : macos-14  #  ARM
108115            ocaml_compiler : 5.3.0 
109116            upload_binaries : true 
117+             node-target : darwin-arm64 
110118          - os : windows-latest 
111119            ocaml_compiler : 5.3.0 
112120            upload_binaries : true 
121+             node-target : win32-x64 
113122
114123          #  Verify that the compiler still builds with older OCaml versions
115124          - os : ubuntu-24.04 
@@ -144,9 +153,6 @@ jobs:
144153          cache : yarn 
145154          node-version-file : .nvmrc 
146155
147-       - name : Get artifact dir name 
148-         run : node .github/workflows/get_artifact_dir_name.js 
149- 
150156      - name : Install dependencies (Linux) 
151157        if : runner.os == 'Linux' 
152158@@ -303,13 +309,13 @@ jobs:
303309        run : yarn install 
304310
305311      - name : Copy compiler exes to platform bin dir 
306-         run : node ./ scripts/copyExes.js -compiler 
312+         run : node scripts/copyExes.js - -compiler 
307313
308314      - name : Restore ninja build cache 
309315        id : ninja-build-cache 
310316        uses : actions/cache@v4 
311317        with :
312-           path : ${{ env.artifact_dir_name  }}/ninja.exe 
318+           path : packages/@rescript/ ${{ matrix.node-target  }}/bin /ninja.exe
313319          key : ninja-build-v1-${{ matrix.os }}-${{ hashFiles('ninja/src/**') }} 
314320
315321      - name : Setup Python for ninja build 
@@ -336,7 +342,7 @@ jobs:
336342
337343      - name : Copy ninja exe to platform bin dir 
338344        if : steps.ninja-build-cache.outputs.cache-hit != 'true' 
339-         run : node ./ scripts/copyExes.js -ninja 
345+         run : node scripts/copyExes.js - -ninja 
340346
341347      - name : " Syntax: Run roundtrip tests" 
342348        if : ${{ runner.os != 'Windows' }} 
@@ -423,8 +429,8 @@ jobs:
423429        if : matrix.upload_binaries 
424430        uses : actions/upload-artifact@v4 
425431        with :
426-           name : binaries-${{ env.artifact_dir_name  }} 
427-           path : ${{ env.artifact_dir_name  }} 
432+           name : binaries-${{ matrix.node-target  }} 
433+           path : packages/@rescript/ ${{ matrix.node-target  }}/bin 
428434
429435      - name : " Upload artifacts: lib/ocaml" 
430436        if : matrix.upload_libs 
@@ -438,7 +444,7 @@ jobs:
438444      - build-compiler 
439445      - build-rewatch 
440446
441-     runs-on : ubuntu-24.04 
447+     runs-on : ubuntu-24.04-arm  
442448
443449    steps :
444450      - name : Checkout 
@@ -447,29 +453,22 @@ jobs:
447453      - name : Use Node.js 
448454        uses : actions/setup-node@v4 
449455        with :
450-           cache : yarn 
451456          node-version-file : .nvmrc 
452457
453-       - name : NPM install 
454-         run : yarn install 
455- 
456458      - name : Download artifacts 
457459        uses : actions/download-artifact@v4 
458460        with :
459461          pattern : " @(binaries-*|rewatch-*|lib-ocaml)" 
460462
461-       - name : Move artifacts 
462-         run : ./scripts/moveArtifacts.sh 
463+       - name : Move artifacts into packages 
464+         run : .github/workflows/moveArtifacts.sh 
465+         shell : bash 
463466
464-       - name : npm pack (rescript) + check  artifact list
467+       - name : Check  artifact list
465468        run : node ./scripts/npmPack.js 
466469
467-       - name : Copy JS files to stdlib package 
468-         run : mkdir -p packages/std/lib && cp -R lib/es6 lib/js packages/std/lib 
469- 
470-       - name : npm pack (@rescript/std) 
471-         run : npm pack 
472-         working-directory : packages/std 
470+       - name : yarn pack @rescript/* subpackages 
471+         run : yarn workspaces foreach -W --no-private --exclude rescript pack 
473472
474473      - name : Prepare package upload 
475474        #  For pull requests, pass the correct commit SHA explicitly as GITHUB_SHA points to the wrong commit.
@@ -482,6 +481,11 @@ jobs:
482481          path : | 
483482            rescript-${{ env.rescript_version }}.tgz 
484483            rescript-std-${{ env.rescript_version }}.tgz 
484+             rescript-linux-x64-${{ env.rescript_version }}.tgz 
485+             rescript-linux-arm64-${{ env.rescript_version }}.tgz 
486+             rescript-darwin-x64-${{ env.rescript_version }}.tgz 
487+             rescript-darwin-arm64-${{ env.rescript_version }}.tgz 
488+             rescript-win32-x64-${{ env.rescript_version }}.tgz 
485489
486490outputs :
487491      rescript_version : ${{ env.rescript_version }} 
@@ -491,15 +495,19 @@ jobs:
491495    strategy :
492496      fail-fast : false 
493497      matrix :
494-         os : [ 
495-             macos-13,  #  x64
496-             macos-14,  #  ARM
497-             ubuntu-24.04, 
498-             ubuntu-24.04-arm, 
499-             windows-latest, 
500-           ] 
498+         include :
499+           - os : macos-13 
500+             node-target : darwin-x64 
501+           - os : macos-14 
502+             node-target : darwin-arm64 
503+           - os : ubuntu-24.04 
504+             node-target : linux-x64 
505+           - os : ubuntu-24.04-arm 
506+             node-target : linux-arm64 
507+           - os : windows-latest 
508+             node-target : win32-x64 
501509
502-     runs-on : ${{matrix.os}} 
510+     runs-on : ${{  matrix.os  }} 
503511
504512    steps :
505513      - name : Checkout 
@@ -532,7 +540,8 @@ jobs:
532540      - name : Install ReScript package 
533541        run : | 
534542          npm i --ignore-scripts --no-audit \ 
535-             rescript-${{ needs.package.outputs.rescript_version }}.tgz 
543+             rescript-${{ needs.package.outputs.rescript_version }}.tgz \ 
544+             rescript-${{ matrix.node-target }}-${{ needs.package.outputs.rescript_version }}.tgz 
536545shell : bash 
537546        working-directory : ${{ steps.tmp-dir.outputs.path }} 
538547
@@ -546,7 +555,7 @@ jobs:
546555
547556    if : startsWith(github.ref, 'refs/tags/v') 
548557
549-     runs-on : ubuntu-24.04 
558+     runs-on : ubuntu-24.04-arm  
550559
551560    steps :
552561      - name : Checkout 
@@ -568,8 +577,13 @@ jobs:
568577        env :
569578          NODE_AUTH_TOKEN : ${{ secrets.NPM_ACCESS_TOKEN }} 
570579        run : | 
571-           npm publish rescript-${{ needs.package.outputs.rescript_version }}.tgz --tag ci 
572-           npm publish rescript-std-${{ needs.package.outputs.rescript_version }}.tgz --tag ci 
580+           npm publish --tag ci rescript-${{ needs.package.outputs.rescript_version }}.tgz 
581+           npm publish --tag ci rescript-std-${{ needs.package.outputs.rescript_version }}.tgz 
582+           npm publish --tag ci rescript-linux-x64-${{ needs.package.outputs.rescript_version }}.tgz 
583+           npm publish --tag ci rescript-linux-arm64-${{ needs.package.outputs.rescript_version }}.tgz 
584+           npm publish --tag ci rescript-darwin-x64-${{ needs.package.outputs.rescript_version }}.tgz 
585+           npm publish --tag ci rescript-darwin-arm64-{{ needs.package.outputs.rescript_version }}.tgz 
586+           npm publish --tag ci rescript-win32-x64-${{ needs.package.outputs.rescript_version }}.tgz 
573587
574588name : Update Website Playground 
575589        env :
0 commit comments