Skip to content

The two symbols this file needs come from public headers now - #4

Merged
Asmod4n merged 1 commit into
mainfrom
claude/byte-subseq-public
Sep 8, 2026
Merged

Asmod4n merged 1 commit into
mainfrom
claude/byte-subseq-public

Conversation

@Asmod4n

@Asmod4n Asmod4n commented Sep 8, 2026

Copy link
Copy Markdown
Owner

mruby made mrb_str_byte_subseq() public in d7bf6bcb: it left internal.h, which is for the callers inside the mruby tree, and it is in mruby/string.h with MRB_API. This file already included that header.

MRB_PRESYM_MAX is the second one, and it moved the other way on the same day. f9fc1ff numbers presyms by layer, and it took the count out of presym/id.h - which mruby/presym.h includes, so every gem could read it - into presym/table.h. Tag 39 names a symbol by its presym number when it has one, so this file needs the count, and it now asks the table header for it.

That include carries the guard mruby/presym.h and src/symbol.c both use. The build preprocesses every source to find the symbol literals in it, and writes these headers from what it finds, so during that pass the header does not exist yet. Without the guard the build cannot bootstrap: the header is a prerequisite of the pass that writes it.

internal.h is gone from this gem.

Tests: rake test against mruby master 662ba51, on a clean tree. 3225 total, 3201 OK, 0 KO, 0 crashes, 24 skipped.

mruby made mrb_str_byte_subseq() public in d7bf6bcb: it left
internal.h, which is for the callers inside the mruby tree, and it is
in mruby/string.h with MRB_API. This file already included that header.

MRB_PRESYM_MAX is the second one, and it moved the other way on the
same day. f9fc1ff numbers presyms by layer, and it took the count out
of presym/id.h - which mruby/presym.h includes, so every gem could read
it - into presym/table.h. Tag 39 names a symbol by its presym number
when it has one, so this file needs the count, and it now asks the
table header for it.

That include carries the guard mruby/presym.h and src/symbol.c both
use. The build preprocesses every source to find the symbol literals in
it, and writes these headers from what it finds, so during that pass
the header does not exist yet. Without the guard the build cannot
bootstrap: the header is a prerequisite of the pass that writes it.

internal.h is gone from this gem.

Tests: rake test against mruby master 662ba51, on a clean tree.
3225 total, 3201 OK, 0 KO, 0 crashes, 24 skipped.
@Asmod4n
Asmod4n merged commit c45ea8b into main Sep 8, 2026
2 checks passed
@Asmod4n
Asmod4n deleted the claude/byte-subseq-public branch September 8, 2026 18:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants