Skip to content

Commit b481b67

Browse files
committed
[Feature #19719] Universal Parser
Introduce Universal Parser mode for the parser. This commit includes these changes: * Introduce `UNIVERSAL_PARSER` macro. All of CRuby related functions are passed via `struct rb_parser_config_struct` when this macro is enabled. * Add CI task with 'cppflags=-DUNIVERSAL_PARSER' for ubuntu.
1 parent b308f7c commit b481b67

36 files changed

+9042
-2435
lines changed

.github/workflows/ubuntu.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ jobs:
4343
- test_task: check
4444
configure: '--enable-shared --enable-load-relative'
4545
- test_task: test-all TESTS=--repeat-count=2
46+
- test_task: test-all TESTS=--repeat-count=2
47+
configure: 'cppflags=-DUNIVERSAL_PARSER'
4648
- test_task: test-bundler-parallel
4749
- test_task: test-bundled-gems
4850
fail-fast: false

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,8 +205,10 @@ lcov*.info
205205

206206
# /ext/ripper/
207207
/ext/ripper/eventids1.c
208+
/ext/ripper/eventids1.h
208209
/ext/ripper/.eventids2-check
209210
/ext/ripper/eventids2table.c
211+
/ext/ripper/ripper_init.c
210212
/ext/ripper/ripper.*
211213
/ext/ripper/ids1
212214
/ext/ripper/ids2

ast.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* indent-tabs-mode: nil */
22
#include "internal.h"
3-
#include "internal/parse.h"
3+
#include "internal/ruby_parser.h"
44
#include "internal/symbol.h"
55
#include "internal/warnings.h"
66
#include "iseq.h"

common.mk

Lines changed: 486 additions & 2 deletions
Large diffs are not rendered by default.

ext/coverage/depend

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ coverage.o: $(hdrdir)/ruby/backward/2/long_long.h
1515
coverage.o: $(hdrdir)/ruby/backward/2/stdalign.h
1616
coverage.o: $(hdrdir)/ruby/backward/2/stdarg.h
1717
coverage.o: $(hdrdir)/ruby/defines.h
18+
coverage.o: $(hdrdir)/ruby/encoding.h
1819
coverage.o: $(hdrdir)/ruby/intern.h
1920
coverage.o: $(hdrdir)/ruby/internal/abi.h
2021
coverage.o: $(hdrdir)/ruby/internal/anyargs.h
@@ -87,6 +88,15 @@ coverage.o: $(hdrdir)/ruby/internal/core/rtypeddata.h
8788
coverage.o: $(hdrdir)/ruby/internal/ctype.h
8889
coverage.o: $(hdrdir)/ruby/internal/dllexport.h
8990
coverage.o: $(hdrdir)/ruby/internal/dosish.h
91+
coverage.o: $(hdrdir)/ruby/internal/encoding/coderange.h
92+
coverage.o: $(hdrdir)/ruby/internal/encoding/ctype.h
93+
coverage.o: $(hdrdir)/ruby/internal/encoding/encoding.h
94+
coverage.o: $(hdrdir)/ruby/internal/encoding/pathname.h
95+
coverage.o: $(hdrdir)/ruby/internal/encoding/re.h
96+
coverage.o: $(hdrdir)/ruby/internal/encoding/sprintf.h
97+
coverage.o: $(hdrdir)/ruby/internal/encoding/string.h
98+
coverage.o: $(hdrdir)/ruby/internal/encoding/symbol.h
99+
coverage.o: $(hdrdir)/ruby/internal/encoding/transcode.h
90100
coverage.o: $(hdrdir)/ruby/internal/error.h
91101
coverage.o: $(hdrdir)/ruby/internal/eval.h
92102
coverage.o: $(hdrdir)/ruby/internal/event.h
@@ -156,6 +166,8 @@ coverage.o: $(hdrdir)/ruby/internal/variable.h
156166
coverage.o: $(hdrdir)/ruby/internal/warning_push.h
157167
coverage.o: $(hdrdir)/ruby/internal/xmalloc.h
158168
coverage.o: $(hdrdir)/ruby/missing.h
169+
coverage.o: $(hdrdir)/ruby/onigmo.h
170+
coverage.o: $(hdrdir)/ruby/oniguruma.h
159171
coverage.o: $(hdrdir)/ruby/ruby.h
160172
coverage.o: $(hdrdir)/ruby/st.h
161173
coverage.o: $(hdrdir)/ruby/subst.h
@@ -184,6 +196,7 @@ coverage.o: $(top_srcdir)/method.h
184196
coverage.o: $(top_srcdir)/node.h
185197
coverage.o: $(top_srcdir)/ruby_assert.h
186198
coverage.o: $(top_srcdir)/ruby_atomic.h
199+
coverage.o: $(top_srcdir)/rubyparser.h
187200
coverage.o: $(top_srcdir)/shape.h
188201
coverage.o: $(top_srcdir)/thread_pthread.h
189202
coverage.o: $(top_srcdir)/vm_core.h

ext/objspace/depend

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ object_tracing.o: $(hdrdir)/ruby/backward/2/stdalign.h
1515
object_tracing.o: $(hdrdir)/ruby/backward/2/stdarg.h
1616
object_tracing.o: $(hdrdir)/ruby/debug.h
1717
object_tracing.o: $(hdrdir)/ruby/defines.h
18+
object_tracing.o: $(hdrdir)/ruby/encoding.h
1819
object_tracing.o: $(hdrdir)/ruby/intern.h
1920
object_tracing.o: $(hdrdir)/ruby/internal/abi.h
2021
object_tracing.o: $(hdrdir)/ruby/internal/anyargs.h
@@ -87,6 +88,15 @@ object_tracing.o: $(hdrdir)/ruby/internal/core/rtypeddata.h
8788
object_tracing.o: $(hdrdir)/ruby/internal/ctype.h
8889
object_tracing.o: $(hdrdir)/ruby/internal/dllexport.h
8990
object_tracing.o: $(hdrdir)/ruby/internal/dosish.h
91+
object_tracing.o: $(hdrdir)/ruby/internal/encoding/coderange.h
92+
object_tracing.o: $(hdrdir)/ruby/internal/encoding/ctype.h
93+
object_tracing.o: $(hdrdir)/ruby/internal/encoding/encoding.h
94+
object_tracing.o: $(hdrdir)/ruby/internal/encoding/pathname.h
95+
object_tracing.o: $(hdrdir)/ruby/internal/encoding/re.h
96+
object_tracing.o: $(hdrdir)/ruby/internal/encoding/sprintf.h
97+
object_tracing.o: $(hdrdir)/ruby/internal/encoding/string.h
98+
object_tracing.o: $(hdrdir)/ruby/internal/encoding/symbol.h
99+
object_tracing.o: $(hdrdir)/ruby/internal/encoding/transcode.h
90100
object_tracing.o: $(hdrdir)/ruby/internal/error.h
91101
object_tracing.o: $(hdrdir)/ruby/internal/eval.h
92102
object_tracing.o: $(hdrdir)/ruby/internal/event.h
@@ -156,6 +166,8 @@ object_tracing.o: $(hdrdir)/ruby/internal/variable.h
156166
object_tracing.o: $(hdrdir)/ruby/internal/warning_push.h
157167
object_tracing.o: $(hdrdir)/ruby/internal/xmalloc.h
158168
object_tracing.o: $(hdrdir)/ruby/missing.h
169+
object_tracing.o: $(hdrdir)/ruby/onigmo.h
170+
object_tracing.o: $(hdrdir)/ruby/oniguruma.h
159171
object_tracing.o: $(hdrdir)/ruby/ruby.h
160172
object_tracing.o: $(hdrdir)/ruby/st.h
161173
object_tracing.o: $(hdrdir)/ruby/subst.h
@@ -178,6 +190,7 @@ object_tracing.o: $(top_srcdir)/method.h
178190
object_tracing.o: $(top_srcdir)/node.h
179191
object_tracing.o: $(top_srcdir)/ruby_assert.h
180192
object_tracing.o: $(top_srcdir)/ruby_atomic.h
193+
object_tracing.o: $(top_srcdir)/rubyparser.h
181194
object_tracing.o: $(top_srcdir)/thread_pthread.h
182195
object_tracing.o: $(top_srcdir)/vm_core.h
183196
object_tracing.o: $(top_srcdir)/vm_opts.h
@@ -365,11 +378,6 @@ objspace.o: $(top_srcdir)/ccan/container_of/container_of.h
365378
objspace.o: $(top_srcdir)/ccan/list/list.h
366379
objspace.o: $(top_srcdir)/ccan/str/str.h
367380
objspace.o: $(top_srcdir)/constant.h
368-
objspace.o: $(hdrdir)/ruby/thread_native.h
369-
objspace.o: $(top_srcdir)/ccan/check_type/check_type.h
370-
objspace.o: $(top_srcdir)/ccan/container_of/container_of.h
371-
objspace.o: $(top_srcdir)/ccan/list/list.h
372-
objspace.o: $(top_srcdir)/ccan/str/str.h
373381
objspace.o: $(top_srcdir)/id_table.h
374382
objspace.o: $(top_srcdir)/internal.h
375383
objspace.o: $(top_srcdir)/internal/array.h
@@ -389,6 +397,7 @@ objspace.o: $(top_srcdir)/method.h
389397
objspace.o: $(top_srcdir)/node.h
390398
objspace.o: $(top_srcdir)/ruby_assert.h
391399
objspace.o: $(top_srcdir)/ruby_atomic.h
400+
objspace.o: $(top_srcdir)/rubyparser.h
392401
objspace.o: $(top_srcdir)/shape.h
393402
objspace.o: $(top_srcdir)/symbol.h
394403
objspace.o: $(top_srcdir)/thread_pthread.h
@@ -597,6 +606,7 @@ objspace_dump.o: $(top_srcdir)/method.h
597606
objspace_dump.o: $(top_srcdir)/node.h
598607
objspace_dump.o: $(top_srcdir)/ruby_assert.h
599608
objspace_dump.o: $(top_srcdir)/ruby_atomic.h
609+
objspace_dump.o: $(top_srcdir)/rubyparser.h
600610
objspace_dump.o: $(top_srcdir)/shape.h
601611
objspace_dump.o: $(top_srcdir)/symbol.h
602612
objspace_dump.o: $(top_srcdir)/thread_pthread.h

0 commit comments

Comments
 (0)