Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
339 commits
Select commit Hold shift + click to select a range
6701ffe
Prism::ParseResult#continuable?
kddnewton Mar 2, 2026
0f47e18
Fix up endless method definition with do/end
kddnewton Mar 2, 2026
02c944c
Fix modifier rescue pattern matching
kddnewton Mar 3, 2026
0399342
Revert "Reject infix operators on command call on writes" (#3960)
Earlopain Mar 4, 2026
f5f2219
Add an MCP server for more efficient agents
kddnewton Mar 5, 2026
88cfd26
Arena allocations
kddnewton Mar 5, 2026
de78576
Recompile when prism headers change
eregon Mar 5, 2026
5a33460
Revert "Recompile when config.yml changes"
eregon Mar 5, 2026
d4575f6
Include ext/prism/extconf.rb explicitly in prism.gemspec
eregon Mar 5, 2026
5d80bc5
Correctly handle `and?` and similar on ruby 4.0
Earlopain Mar 5, 2026
b548656
Template out node creation functions
kddnewton Mar 5, 2026
7d17fd2
Fix the handling of `do` on commands
kddnewton Mar 6, 2026
35470bb
Fix precedence of infix operators after command
kddnewton Mar 6, 2026
7d21e56
Fix not without parentheses binding power
kddnewton Mar 6, 2026
17c404f
Add a simple benchmark script to bin/prism
kddnewton Mar 5, 2026
0a3b048
Merge pull request #3970 from ruby/command-call-in
kddnewton Mar 6, 2026
819a796
Merge pull request #3971 from ruby/fix-not
kddnewton Mar 6, 2026
7414a8c
Merge pull request #3965 from ruby/bench
kddnewton Mar 6, 2026
0e7fb6b
Copy and embed for serialization format
kddnewton Mar 7, 2026
94646f5
Fix link to node interface
Earlopain Mar 8, 2026
a1567ec
Merge pull request #3975 from Earlopain/node-interface-link
kddnewton Mar 8, 2026
1b492aa
Update types
kddnewton Mar 8, 2026
ffeb05d
Merge pull request #3972 from ruby/copy-and-embed
kddnewton Mar 8, 2026
2675dc0
Use ByteBuffer#get(int index, byte[] dst) in Loader.java
eregon Mar 8, 2026
697c3f1
Use javac --release to properly check compatibility with older version
eregon Mar 8, 2026
9647023
Compile Java files with compatibility 21+
eregon Mar 8, 2026
c8fd89e
Merge pull request #3977 from eregon/ConstantPool-get-do-not-alter-po…
eregon Mar 9, 2026
c28810f
Refine continuable? with algorithm in C
kddnewton Mar 9, 2026
8cc4eda
Merge pull request #3978 from ruby/continuable
kddnewton Mar 9, 2026
fd0a20f
Fix binding for `in`, `not`, and `do` on/after command calls
kddnewton Mar 10, 2026
0ee68f7
Merge pull request #3980 from ruby/fix-binding
kddnewton Mar 10, 2026
979251e
Fix pinned expression binding power
kddnewton Mar 10, 2026
9e47c83
Merge pull request #3981 from ruby/pinned-expressions
kddnewton Mar 10, 2026
7e797f5
Fix not binding power in endless methods
kddnewton Mar 10, 2026
203a520
Merge pull request #3982 from ruby/fix-not
kddnewton Mar 10, 2026
e08b47e
Make it possible to lazily deserialize DefNode in Loader.java
eregon Mar 10, 2026
0944c7f
Restructure regexp encoding validation
kddnewton Mar 11, 2026
ae5ea48
Merge pull request #3984 from ruby/regex
kddnewton Mar 11, 2026
1d6a966
Fix reading past end of target names
kddnewton Mar 11, 2026
fb8f6fa
Merge pull request #3985 from ruby/fix-overflow
kddnewton Mar 11, 2026
2e58c52
Track newlines in character escape sequences
kddnewton Mar 11, 2026
3bdd792
Improve pm_regexp_classify_property perf
kddnewton Mar 11, 2026
e2f28a6
Merge pull request #3989 from ruby/pm_regexp_classify_property-perf
kddnewton Mar 11, 2026
3c5292a
Merge pull request #3988 from ruby/track-newlines-in-escapes
kddnewton Mar 11, 2026
da37a65
Merge pull request #3983 from eregon/lazy-DefNode
kddnewton Mar 13, 2026
82cb026
Use the flags name for flags fields in JSON
kddnewton Mar 13, 2026
8e79053
Merge pull request #3992 from ruby/reverse-sync
kddnewton Mar 13, 2026
0f1500c
Expose parse options to Rust
kddnewton Mar 13, 2026
d9e359f
Merge pull request #3991 from ruby/expose-options
kddnewton Mar 13, 2026
4258b2a
feat: add `start_line`, `end_line`, `start_column`, `end_column`, and…
sei40kr Mar 4, 2026
a690c9d
Merge pull request #3890 from sei40kr/feat/rust-location-methods
kddnewton Mar 13, 2026
04b986f
feat: add `node_ext` module with `full_name` methods for constant nodes
sei40kr Jan 29, 2026
db57f23
Merge pull request #3887 from sei40kr/feat/rust-node-ext
kddnewton Mar 13, 2026
660b0f7
Bump actions/create-github-app-token in the action-deps group
dependabot[bot] Mar 16, 2026
eceb44d
Merge pull request #3995 from ruby/dependabot/github_actions/action-d…
kddnewton Mar 16, 2026
572f35f
[rust] Expose `start` offsets
reese Mar 16, 2026
fb80fe2
Do not pass source bytes to Loader.java at all
eregon Mar 16, 2026
96edaf3
Mark newlines for lazy DefNodes
eregon Mar 16, 2026
bf8be9b
Use explicit npm dist-tag to allow publishing older versions
k0kubun Mar 16, 2026
aafb1e9
Merge pull request #4004 from k0kubun/fix-npm-publish-tag
kddnewton Mar 17, 2026
787b88c
Merge pull request #3997 from reese/reese-rust-expose-start-offset
kddnewton Mar 17, 2026
dadeb7e
Use an arena for parser metadata
kddnewton Mar 7, 2026
390bdaa
Use the parser arena for the constant pool
kddnewton Mar 7, 2026
1dd9853
Speed up the constant hash function
kddnewton Mar 8, 2026
e0708c4
Small optimization for parser_lex_magic_comment
kddnewton Mar 8, 2026
c1ad25e
Scan forward through inline whitespace to avoid writing to parser->cu…
kddnewton Mar 8, 2026
fb526a8
Fast-paths for ASCII-only identifiers
kddnewton Mar 8, 2026
bfa7692
Avoid unnecessary zero-ing of memory
kddnewton Mar 9, 2026
f94fe6b
Pre-size arena to avoid unnecessary growth
kddnewton Mar 9, 2026
dfdc930
Force the allocation to be inlined
kddnewton Mar 9, 2026
83f54c2
Inline pm_node_list_append, pm_char_is_whitespace, and pm_char_is_inl…
kddnewton Mar 9, 2026
a14431c
Avoid redundant whitespace scanning in magic comment lexing
kddnewton Mar 9, 2026
b5b88ba
Potentially skip whitespace scanning for speed
kddnewton Mar 9, 2026
fbcd3fc
Inline three more functions, and lower the hash threshold for locals
kddnewton Mar 9, 2026
20e626a
Lex simple integer values as we are lexing
kddnewton Mar 10, 2026
2a1dc79
Only dispatch to lex_optional_float_suffix when it is possible
kddnewton Mar 10, 2026
a52c2bd
Optimize constant pool hash for short strings
kddnewton Mar 10, 2026
dcb2e8c
Include string in constant pool entry to avoid chasing pointer
kddnewton Mar 10, 2026
c464b29
SIMD/SWAR for strpbrk
kddnewton Mar 10, 2026
559f24f
Fix a bug where we removed the \r warning
kddnewton Mar 10, 2026
fc0ec4c
Use a bloom filter to quickly reject local lookups
kddnewton Mar 11, 2026
46656b2
Cache strpbrk lookup tables
kddnewton Mar 11, 2026
b2658d2
Fix up rebase errors
kddnewton Mar 17, 2026
5fe0448
More correctly detect SIMD on MSVC
kddnewton Mar 17, 2026
2957868
Add workflow changes from 4.0 branch
Earlopain Mar 17, 2026
f5ae7b7
Ensure allocations to the constant pool are through the arena
kddnewton Mar 17, 2026
7d7870e
Sync changelog
Earlopain Mar 17, 2026
616930e
Merge pull request #3998 from eregon/no-source-bytes-for-java
eregon Mar 17, 2026
1cabef7
Fix ASAN reading off end of strpbrk cache
Earlopain Mar 18, 2026
898241c
Do not use GCC-specific syntax for lookup tables
Earlopain Mar 18, 2026
ec2cf2e
Fix infinite loop in parser_lex_magic_comment
Earlopain Mar 18, 2026
eab6f33
Fix C coverage by moving stuff slightly around
Earlopain Mar 18, 2026
7c1927e
Fix assignments (#4012)
nobu Mar 18, 2026
93542e6
Optimizations (#4006)
Earlopain Mar 18, 2026
b44fbb8
Merge pull request #4008 from Earlopain/sync-4.0-workflows
kddnewton Mar 18, 2026
aa6bce6
Merge pull request #4007 from Earlopain/sync-changelog
kddnewton Mar 18, 2026
429672e
Move buffer out of utils
kddnewton Mar 17, 2026
bda0f88
Split up buffer headers between internal and external
kddnewton Mar 17, 2026
1039dff
Only include what is necessary for buffer
kddnewton Mar 17, 2026
e4df041
Move strncasecmp out of utils and make internal only
kddnewton Mar 17, 2026
cdf8bed
Make memchr implementation internal
kddnewton Mar 17, 2026
0862b48
Remove unnecessary PRISM_EXPORTED_FUNCTION from source files
kddnewton Mar 17, 2026
cdc9b97
Move integer out of utils
kddnewton Mar 17, 2026
16fd2bf
Split up integer between public and private headers
kddnewton Mar 17, 2026
5966ab6
Move line offset list out of util
kddnewton Mar 17, 2026
5858690
Split up line offset list into public and internal
kddnewton Mar 17, 2026
895b395
Move char to internal headers
kddnewton Mar 17, 2026
c74b7c3
Move arena out of utils
kddnewton Mar 17, 2026
c03b69b
Split up arena headers into public and internal
kddnewton Mar 17, 2026
a18e3ca
Move compiler macro definitions into include/prism/attribute
kddnewton Mar 17, 2026
104b6ab
Move strpbrk into internal
kddnewton Mar 17, 2026
af68332
Split up diagnostic headers into public and internal
kddnewton Mar 17, 2026
cc97110
Move constant pool out of utils
kddnewton Mar 17, 2026
281244f
Split up constant pool headers between public and internal
kddnewton Mar 17, 2026
b27fd82
Move strings out of util
kddnewton Mar 17, 2026
60e105f
Split up public and internal strings headers
kddnewton Mar 17, 2026
c661045
Move list out of utils
kddnewton Mar 17, 2026
4149565
Fully remove util dir
kddnewton Mar 17, 2026
2cd264f
Split up list public and internal headers
kddnewton Mar 17, 2026
f9f9cd5
Split up encoding public and internal headers
kddnewton Mar 17, 2026
d2ec362
Split up static literals public and internal
kddnewton Mar 17, 2026
abd0a83
Split up public/internal options
kddnewton Mar 17, 2026
cc93903
Put inline in its own header
kddnewton Mar 17, 2026
8d1df78
Move regexp to internal
kddnewton Mar 17, 2026
2496b01
Split out excludes into its own header
kddnewton Mar 17, 2026
4090539
Trim down parser.h
kddnewton Mar 17, 2026
7690458
Trim down node.h
kddnewton Mar 17, 2026
8ad8802
More splitting of headers
kddnewton Mar 17, 2026
400b217
Remove defines
kddnewton Mar 17, 2026
01d575a
Move compiler detection stuff into include/prism/compiler
kddnewton Mar 17, 2026
1e3ec12
Move allocator to internal headers
kddnewton Mar 17, 2026
323f7f1
Move file system into compiler headers
kddnewton Mar 17, 2026
a5dfba8
Trim down even more of internal header includes
kddnewton Mar 17, 2026
a4a44cb
Split node.h headers
kddnewton Mar 17, 2026
2b52981
pm_buffer_free -> pm_buffer_cleanup
kddnewton Mar 17, 2026
1b594e1
Make buffer an opaque pointer
kddnewton Mar 17, 2026
b1be4b4
pm_parser_free -> pm_parser_cleanup
kddnewton Mar 17, 2026
88a247a
Move string query into its own file
kddnewton Mar 17, 2026
6901e85
Trim down prism.h
kddnewton Mar 17, 2026
92b48ce
pm_string_free -> pm_string_cleanup
kddnewton Mar 17, 2026
0edaefb
pm_options_free -> pm_options_cleanup
kddnewton Mar 17, 2026
20de0e4
Do not return bool from pm_options_scope_init
kddnewton Mar 17, 2026
0167645
Make options fully opaque
kddnewton Mar 17, 2026
d315325
Give full lifetime functions to parser
kddnewton Mar 18, 2026
035061c
Update pm_parse_stream API to make parser opaque
kddnewton Mar 18, 2026
3da08fd
Make parser an opaque pointer
kddnewton Mar 18, 2026
7cb8b59
Move static literals entirely internal
kddnewton Mar 18, 2026
2b84d22
Move some serialize functions internal
kddnewton Mar 18, 2026
10ebcaf
Move encoding entirely internal
kddnewton Mar 18, 2026
da00377
Move some options internal metadata internal
kddnewton Mar 18, 2026
a29aab4
Consistency in naming
kddnewton Mar 18, 2026
0b17e49
Make pm_comment_t opaque
kddnewton Mar 18, 2026
1ddff36
Move comment into its own section
kddnewton Mar 18, 2026
84b08e2
Move more constants internal
kddnewton Mar 18, 2026
6f40516
Move diagnostics entirely internal
kddnewton Mar 18, 2026
f2e8648
Move magic comments entirely internal
kddnewton Mar 18, 2026
bbc2023
Fix up build
kddnewton Mar 18, 2026
e8606f7
Do not define a shim if the define is set
kddnewton Mar 18, 2026
e0d17eb
Remove iterators, just use callbacks
kddnewton Mar 18, 2026
1f4bf83
Code review
kddnewton Mar 18, 2026
2867c52
Move node list append internal
kddnewton Mar 18, 2026
9498322
Fix up diagnostic templates
kddnewton Mar 18, 2026
2fcab5e
Do not inline node_new functions
kddnewton Mar 18, 2026
ee6f320
Fold node_new into node/ast
kddnewton Mar 18, 2026
639da14
Move some of arena internal
kddnewton Mar 18, 2026
93085a5
Make arena fully opaque
kddnewton Mar 18, 2026
250b2c9
Make the constant pool fully opaque
kddnewton Mar 18, 2026
fb0d136
Inline comments and magic comments, they do not need their own TUs
kddnewton Mar 18, 2026
aa84fd5
Cleanup
kddnewton Mar 18, 2026
879139e
pm_parser_init and pm_parser_cleanup -> internal
kddnewton Mar 18, 2026
456167d
Move even more headers into their own spots
kddnewton Mar 18, 2026
3b09886
Move JSON to its own TU
kddnewton Mar 18, 2026
f02d270
Move parse_success_p into serialization functions
kddnewton Mar 18, 2026
d54885e
Naming conventions
kddnewton Mar 18, 2026
06a944a
Make some token logic internal
kddnewton Mar 18, 2026
7dde210
Documentation on public API functions
kddnewton Mar 18, 2026
94d16c6
Clean up documentation
kddnewton Mar 18, 2026
b66fbf9
Clean up rake build
kddnewton Mar 18, 2026
26731cc
Make sure we have at least one declaration in TUs
kddnewton Mar 18, 2026
cab3fd8
Fix up rust side of the build
kddnewton Mar 18, 2026
852bb04
Ensure wasm build is happy
kddnewton Mar 18, 2026
149cc9d
Final review
kddnewton Mar 18, 2026
665bcf3
Rebase
kddnewton Mar 18, 2026
1c1e948
Fix up bindings
kddnewton Mar 18, 2026
717e4e7
Ensure we free options before raising type errors
kddnewton Mar 19, 2026
6ba2c64
Add necessary functions for CRuby integration
kddnewton Mar 19, 2026
d4a3ef9
pm_parser_constant_find
kddnewton Mar 19, 2026
a52c481
Also expose pm_constant_id_list_init, pm_constant_id_list_append, and…
kddnewton Mar 19, 2026
f50c25b
Introduce pm_source_t
kddnewton Mar 19, 2026
603e482
Use xfree_sized everywhere possible
kddnewton Mar 19, 2026
0c6494a
pm_source_owned_new
kddnewton Mar 19, 2026
eb398af
Revert xfree_sized for integer
kddnewton Mar 19, 2026
75eb63e
Fix up gemspec build
kddnewton Mar 19, 2026
b5683c8
Fix up FFI in Ractors reading internal ivar
kddnewton Mar 19, 2026
eb1d518
Rename strings to stringy because of linux conflicts
kddnewton Mar 19, 2026
ba16ae2
Move PRISM_NODISCARD to the correct position
kddnewton Mar 19, 2026
5b523df
Remove currently deprecated functionality
Earlopain Mar 20, 2026
acb4e29
Merge pull request #4015 from ruby/restructure
kddnewton Mar 20, 2026
7820a5b
Merge pull request #4013 from Earlopain/remove-deprecations
kddnewton Mar 20, 2026
5a3198b
Ignore prism wasm build in java-wasm resources
headius Feb 23, 2026
4ab2854
Additional tweaks to get chicory-prism artifact deployed
headius Feb 23, 2026
588f41e
Use common method to construct Location here
headius Mar 5, 2026
f3bbf6c
Match formatting from js build
headius Mar 9, 2026
b12adc5
Move groupID and package to ruby-lang
headius Mar 9, 2026
9ed6032
Switch to base/stdlib dependencies
headius Mar 9, 2026
fa6f034
Switch to JRuby 10.0.4.0 dependency
headius Mar 17, 2026
cffc95c
Update description and Chicory dependency
headius Mar 17, 2026
6c9710d
Rename library to top-level artifact for now
headius Mar 17, 2026
21942dd
Add java and java-wasm dirs to CI trigger
headius Mar 19, 2026
7ac0c85
Merge pull request #3944 from headius/java-wasm-maven-release
kddnewton Mar 20, 2026
3cffc44
Lazily build offsets from a packed array
kddnewton Mar 19, 2026
bbcb569
Use an arena for building the Prism AST
kddnewton Mar 19, 2026
9df357a
Fast path for returning from parse_arguments_list
kddnewton Mar 19, 2026
56cdcbb
Provide a single-entry cache on parser for avoiding constant hashes
kddnewton Mar 20, 2026
7ffd9a5
Merge pull request #4019 from ruby/opt2
kddnewton Mar 20, 2026
992926b
Better documentation website
kddnewton Mar 20, 2026
f95bef9
Merge pull request #4020 from ruby/playground
kddnewton Mar 20, 2026
cbe91a3
Swich identifiers to byte[]
headius Mar 19, 2026
6ad180a
Tweaks for byte[] identifiers
headius Mar 20, 2026
5de5637
Remove no-longer-relevant comment
headius Mar 20, 2026
ccafd2a
Eliminate encodingCharset and bytesToName
headius Mar 20, 2026
62d51ad
Merge pull request #4016 from headius/byte_ary_identifiers
kddnewton Mar 20, 2026
efe36fb
Revert "Switch identifiers to byte[]"
kddnewton Mar 20, 2026
aa22a50
Merge pull request #4022 from ruby/revert-4016-byte_ary_identifiers
kddnewton Mar 20, 2026
02a9335
Prism.find
kddnewton Mar 20, 2026
b5f70d7
Merge pull request #4021 from ruby/node-find
kddnewton Mar 20, 2026
3f6014d
Ensure Source#offsets is set correctly in all cases
eregon Mar 16, 2026
ec3a427
Merge pull request #3996 from eregon/ensure-correct-source-offsets
kddnewton Mar 20, 2026
0ba6b31
Remove accidentally checked-in json source file
kddnewton Mar 20, 2026
8870f25
Merge pull request #4024 from ruby/fix-json
kddnewton Mar 21, 2026
6f597d3
Clean up types on node find
kddnewton Mar 21, 2026
5a04c18
Merge pull request #4025 from ruby/clean-up-types
kddnewton Mar 21, 2026
32028c5
Swich identifiers to byte[]
headius Mar 19, 2026
5f29860
Tweaks for byte[] identifiers
headius Mar 20, 2026
b529af8
Remove no-longer-relevant comment
headius Mar 20, 2026
4c28604
Eliminate encodingCharset
headius Mar 20, 2026
e6e73ad
Fix toString output for byte[] fields
headius Mar 20, 2026
901a784
Verify the TruffleRuby backend for Java API
headius Mar 20, 2026
6ae9b21
Handle two other forms of identifier field
headius Mar 20, 2026
da4325c
Escape all byte[] strings for toString
headius Mar 20, 2026
54b25c0
Add a test for MBC identifiers
headius Mar 20, 2026
70155e0
Move TruffleRuby compile test to main.yml
headius Mar 21, 2026
e182867
JRuby uses the default byte[] identifiers now
headius Mar 21, 2026
e41d17e
Merge pull request #4023 from headius/byte_ary_identifiers
kddnewton Mar 21, 2026
67f4155
Remove compile-time dependency on JRuby
headius Mar 21, 2026
edde544
Add URL, licenses, devs, and SCM info for Maven Central
headius Mar 22, 2026
2a6178d
Release prism-parser 0.0.1
headius Mar 22, 2026
8506d14
Bump version for dev
headius Mar 22, 2026
fe6252d
Add other primary developers of Java API
headius Mar 23, 2026
fc6901d
Begin splitting the Java artifact into components
headius Mar 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ test/prism/fixtures/unparser/**/*.txt linguist-vendored
test/prism/fixtures/whitequark/**/*.txt linguist-vendored
test/prism/snapshots/**/*.txt linguist-generated

rbi/generated/**/*.rbi linguist-generated
sig/generated/**/*.rbs linguist-generated

# All .rb files should have LF line ending, even on Windows, regardless of the git config core.autocrlf value.
# All .txt should have their line endings as committed in the repository (there are some intentional CR in there),
# regardless of the git config core.autocrlf value.
Expand Down
2 changes: 1 addition & 1 deletion .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ updates:
patterns:
- "*"
- package-ecosystem: 'maven'
directory: '/java-wasm'
directory: '/java/wasm'
schedule:
interval: 'weekly'
groups:
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/cpp-bindings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ on:
- "*akefile*"
branches:
- main
- ruby-4.0
pull_request:

jobs:
Expand All @@ -28,6 +29,6 @@ jobs:
- name: Compile prism
run: bundle exec rake compile
- name: Compile C++
run: g++ -o ./cpp_test cpp/test.cpp build/static/*.o build/static/util/*.o -Iinclude
run: g++ -o ./cpp_test cpp/test.cpp build/static/*.o -Iinclude
- name: Run C++
run: ./cpp_test
2 changes: 2 additions & 0 deletions .github/workflows/cruby-bindings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ on:
branches:
- main
pull_request:
branches:
- main

jobs:
test-all:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ on:
push:
branches:
- main
- ruby-4.0
pull_request:

jobs:
Expand Down
13 changes: 8 additions & 5 deletions .github/workflows/java-wasm-bindings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,15 @@ on:
- "include/"
- "src/"
- "*akefile*"
- "java/"
- "java/wasm/"
branches:
- main
- ruby-4.0
pull_request:

jobs:
build:
build-wasm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
Expand All @@ -38,14 +41,14 @@ jobs:
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '17'
java-version: '21'
cache: maven

- name: Run the tests
run: mvn -B install
working-directory: java-wasm
working-directory: java/wasm

- uses: actions/upload-artifact@v6
- uses: actions/upload-artifact@v7
with:
name: prism.wasm
path: java-wasm/src/test/resources/prism.wasm
path: java/wasm/src/test/resources/prism.wasm
3 changes: 2 additions & 1 deletion .github/workflows/javascript-bindings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ on:
- "*akefile*"
branches:
- main
- ruby-4.0
pull_request:

jobs:
Expand All @@ -34,7 +35,7 @@ jobs:
- name: Build the project
run: make wasm WASI_SDK_PATH=$(pwd)/wasi-sdk-25.0-x86_64-linux

- uses: actions/upload-artifact@v6
- uses: actions/upload-artifact@v7
with:
name: prism.wasm
path: javascript/src/prism.wasm
Expand Down
19 changes: 16 additions & 3 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ on:
push:
branches:
- main
- ruby-4.0
pull_request:

jobs:
Expand Down Expand Up @@ -79,7 +80,7 @@ jobs:
shell: bash

build-ibm:
if: github.repository == 'ruby/prism' && false
if: github.repository == 'ruby/prism'
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -187,6 +188,18 @@ jobs:
- name: Run Java Loader test
run: PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS=1 JRUBY_OPTS="-J-ea" bundle exec rake test:java_loader

build-java-truffleruby:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up JRuby
uses: ruby/setup-ruby@v1
with:
ruby-version: jruby
bundler-cache: true
- name: Run Java Loader test
run: PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS=1 PRISM_JAVA_BACKEND=truffleruby bundle exec rake compile

lex-ruby:
runs-on: ubuntu-latest
steps:
Expand Down Expand Up @@ -257,7 +270,7 @@ jobs:
bundler-cache: true
- run: bundle config --local frozen false
- run: bundle exec rake build:dev
- uses: actions/upload-artifact@v6
- uses: actions/upload-artifact@v7
with:
name: gem-package
path: pkg
Expand Down Expand Up @@ -308,7 +321,7 @@ jobs:
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.target.ruby }}
- uses: actions/download-artifact@v7
- uses: actions/download-artifact@v8
with:
name: gem-package
path: pkg
Expand Down
14 changes: 13 additions & 1 deletion .github/workflows/publish-npm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,17 @@ jobs:
- name: Update npm
run: npm install -g npm@latest

- run: npm publish
- name: Determine npm tag
id: npm-tag
run: |
PACKAGE_VERSION=$(node -p "require('./javascript/package.json').version")
LATEST_VERSION=$(npm view @ruby/prism version 2>/dev/null || echo "0.0.0")
if npx semver "$PACKAGE_VERSION" -r ">$LATEST_VERSION"; then
echo "tag=latest" >> "$GITHUB_OUTPUT"
else
MINOR=$(echo "$PACKAGE_VERSION" | cut -d. -f1,2)
echo "tag=stable-$MINOR" >> "$GITHUB_OUTPUT"
fi

- run: npm publish --tag ${{ steps.npm-tag.outputs.tag }}
working-directory: javascript
1 change: 1 addition & 0 deletions .github/workflows/rust-bindings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ on:
- "*akefile*"
branches:
- main
- ruby-4.0
pull_request:

env:
Expand Down
16 changes: 13 additions & 3 deletions .github/workflows/sync-ruby.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
name: Sync ruby
on:
push:
branches: [main]
branches:
- main
- ruby-4.0
jobs:
sync:
name: Sync ruby
Expand All @@ -10,9 +12,17 @@ jobs:
steps:
- uses: actions/checkout@v6

- name: Set ruby/ruby target branch
id: target
run: |
case "$GITHUB_REF_NAME" in
main) echo "ref=master" >> "$GITHUB_OUTPUT" ;;
ruby-4.0) echo "ref=ruby_4_0" >> "$GITHUB_OUTPUT" ;;
esac

- name: Create GitHub App token
id: app-token
uses: actions/create-github-app-token@v2
uses: actions/create-github-app-token@v3
with:
app-id: 2060836
private-key: ${{ secrets.RUBY_SYNC_DEFAULT_GEMS_PRIVATE_KEY }}
Expand All @@ -26,7 +36,7 @@ jobs:
repo: ruby
workflow_file_name: sync_default_gems.yml
github_token: ${{ steps.app-token.outputs.token }}
ref: master
ref: ${{ steps.target.outputs.ref }}
client_payload: |
{"gem":"${{ github.event.repository.name }}","before":"${{ github.event.before }}","after":"${{ github.event.after }}"}
propagate_failure: true
Expand Down
20 changes: 9 additions & 11 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,18 @@ out.svg
/fuzz/output/
/gemfiles/typecheck/bin/
/include/prism/ast.h
/include/prism/diagnostic.h
/include/prism/internal/diagnostic.h
/javascript/node_modules/
/javascript/package-lock.json
/javascript/src/deserialize.js
/javascript/src/nodes.js
/javascript/src/visitor.js
/javascript/src/prism.wasm
/javascript/src/*.d.ts
/java/org/prism/AbstractNodeVisitor.java
/java/org/prism/Loader.java
/java/org/prism/Nodes.java
/java/org/ruby_lang/prism/AbstractNodeVisitor.java
/java/org/ruby_lang/prism/Loader.java
/java/org/ruby_lang/prism/Nodes.java
/java/wasm/src/test/resources/prism.wasm
/lib/prism/compiler.rb
/lib/prism/dispatcher.rb
/lib/prism/dot_visitor.rb
Expand All @@ -54,17 +55,12 @@ out.svg
/lib/prism/visitor.rb
/sorbet/
/src/diagnostic.c
/src/json.c
/src/node.c
/src/prettyprint.c
/src/serialize.c
/src/token_type.c
/src/tokens.c
/src/**/*.o
/sig/prism.rbs
/sig/prism/dsl.rbs
/sig/prism/mutation_compiler.rbs
/sig/prism/node.rbs
/sig/prism/visitor.rbs
/sig/prism/_private/dot_visitor.rbs
/rbi/prism/dsl.rbi
/rbi/prism/node.rbi
/rbi/prism/visitor.rbi
Expand All @@ -74,3 +70,5 @@ compile_commands.json
.vscode/

tags

wasi-sdk*
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,15 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
- Fixed location of opening tokens when invalid syntax is parsed.
- Fix RBI for parsing options.

## [1.8.1] - 2026-03-16 (Ruby 4.0.2 maintenance release)

### Changed

- Fix `not` binding power in endless methods.
- Correctly handle `and?` and similar on Ruby 4.0.
- Fix error message for block/lambda with `...` argument.
- Fix `in` handling.

## [1.8.0] - 2026-01-12

### Added
Expand Down Expand Up @@ -746,6 +755,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a

[unreleased]: https://github.com/ruby/prism/compare/v1.9.0...HEAD
[1.9.0]: https://github.com/ruby/prism/compare/v1.8.0...v1.9.0
[1.8.1]: https://github.com/ruby/prism/compare/v1.8.0...v1.8.1
[1.8.0]: https://github.com/ruby/prism/compare/v1.7.0...v1.8.0
[1.7.0]: https://github.com/ruby/prism/compare/v1.6.0...v1.7.0
[1.6.0]: https://github.com/ruby/prism/compare/v1.5.2...v1.6.0
Expand Down
3 changes: 2 additions & 1 deletion Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ PROJECT_NAME = "Prism Ruby parser"
OUTPUT_DIRECTORY = doc
JAVADOC_AUTOBRIEF = YES
OPTIMIZE_OUTPUT_FOR_C = YES
INPUT = src src/util include include/prism include/prism/util
INPUT = include/prism.h include/prism
EXCLUDE = include/prism/internal
HTML_OUTPUT = c
SORT_MEMBER_DOCS = NO
GENERATE_LATEX = NO
Expand Down
17 changes: 9 additions & 8 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,25 @@ GEM
benchmark-ips (2.14.0)
date (3.5.1)
date (3.5.1-java)
erb (6.0.1)
erb (6.0.1-java)
erb (6.0.2)
erb (6.0.2-java)
ffi (1.17.3)
io-console (0.8.2)
io-console (0.8.2-java)
irb (1.16.0)
irb (1.17.0)
pp (>= 0.6.0)
prism (>= 1.3.0)
rdoc (>= 4.0.0)
reline (>= 0.4.2)
jar-dependencies (0.5.5)
mini_portile2 (2.8.9)
nokogiri (1.19.0)
nokogiri (1.19.1)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
nokogiri (1.19.0-java)
nokogiri (1.19.1-java)
racc (~> 1.4)
onigmo (0.1.0)
parser (3.3.10.0)
parser (3.3.10.2)
ast (~> 2.4.1)
racc
power_assert (3.0.1)
Expand All @@ -45,7 +46,7 @@ GEM
rake (13.3.1)
rake-compiler (1.3.1)
rake
rdoc (7.0.3)
rdoc (7.2.0)
erb
psych (>= 4.0.0)
tsort
Expand All @@ -58,7 +59,7 @@ GEM
sexp_processor (~> 4.16)
sexp_processor (4.17.5)
stringio (3.2.0)
test-unit (3.7.6)
test-unit (3.7.7)
power_assert
tsort (0.2.0)

Expand Down
Loading
Loading