diff options
| author | Kevin Newton <kddnewton@gmail.com> | 2023-10-24 14:23:39 -0400 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2023-10-26 13:33:22 +0000 |
| commit | feb1427ad8f3d6448d9f8d0c7009dfdf711b7f48 (patch) | |
| tree | b2a512367cd7346ca08816de4620bced03d16023 | |
| parent | bfb9b5e69921c91901cce820f54e79907a5ae829 (diff) | |
[ruby/prism] Compile with WASI
https://github.com/ruby/prism/commit/73c44b0b9c
| -rw-r--r-- | .github/workflows/javascript-bindings.yml | 48 | ||||
| -rw-r--r-- | lib/prism/prism.gemspec | 1 | ||||
| -rw-r--r-- | prism/templates/src/serialize.c.erb | 4 | ||||
| -rwxr-xr-x | prism/templates/template.rb | 2 |
4 files changed, 53 insertions, 2 deletions
diff --git a/.github/workflows/javascript-bindings.yml b/.github/workflows/javascript-bindings.yml new file mode 100644 index 0000000000..c381b4d5c6 --- /dev/null +++ b/.github/workflows/javascript-bindings.yml @@ -0,0 +1,48 @@ +name: JavaScript Bindings + +on: + push: + paths: + - ".github/workflows/javascript-bindings.yml" + - "include/" + - "src/" + - "*akefile*" + branches: + - main + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: head + bundler-cache: true + + - name: rake templates + run: bundle exec rake templates + + - name: Set up WASI-SDK + run: | + wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0-linux.tar.gz + tar xvf wasi-sdk-20.0-linux.tar.gz + + - name: Build the project + run: make wasm WASI_SDK_PATH=$(pwd)/wasi-sdk-20.0 + + - uses: actions/setup-node@v3 + with: + node-version: 20.x + + - name: Run the tests + run: npm test + working-directory: javascript + + - uses: actions/upload-artifact@v3 + with: + name: prism.wasm + path: javascript/src/prism.wasm diff --git a/lib/prism/prism.gemspec b/lib/prism/prism.gemspec index 2629262c4a..63c6702561 100644 --- a/lib/prism/prism.gemspec +++ b/lib/prism/prism.gemspec @@ -28,6 +28,7 @@ Gem::Specification.new do |spec| "docs/encoding.md", "docs/fuzzing.md", "docs/heredocs.md", + "docs/javascript.md", "docs/mapping.md", "docs/prism.png", "docs/ripper.md", diff --git a/prism/templates/src/serialize.c.erb b/prism/templates/src/serialize.c.erb index e985e72ec3..9528496c7d 100644 --- a/prism/templates/src/serialize.c.erb +++ b/prism/templates/src/serialize.c.erb @@ -150,11 +150,11 @@ static void pm_serialize_magic_comment(pm_parser_t *parser, pm_magic_comment_t *magic_comment, pm_buffer_t *buffer) { // serialize key location pm_buffer_append_u32(buffer, pm_ptrdifft_to_u32(magic_comment->key_start - parser->start)); - pm_buffer_append_u32(buffer, pm_ptrdifft_to_u32(magic_comment->key_length)); + pm_buffer_append_u32(buffer, pm_sizet_to_u32(magic_comment->key_length)); // serialize value location pm_buffer_append_u32(buffer, pm_ptrdifft_to_u32(magic_comment->value_start - parser->start)); - pm_buffer_append_u32(buffer, pm_ptrdifft_to_u32(magic_comment->value_length)); + pm_buffer_append_u32(buffer, pm_sizet_to_u32(magic_comment->value_length)); } static void diff --git a/prism/templates/template.rb b/prism/templates/template.rb index 79ad84c732..4435333900 100755 --- a/prism/templates/template.rb +++ b/prism/templates/template.rb @@ -361,6 +361,8 @@ module Prism TEMPLATES = [ "ext/prism/api_node.c", "include/prism/ast.h", + "javascript/src/deserialize.js", + "javascript/src/nodes.js", "java/org/prism/Loader.java", "java/org/prism/Nodes.java", "java/org/prism/AbstractNodeVisitor.java", |
