"NOTE:" are changes to be aware of.
- Brace-less variable interpolation in strings:
"#$global","#@ivar"and"#@@cvar"(d4aad5d) - NOTE:
protectedmethods are called with the caller'sselfchecked against the receiver's class, as CRuby does (534efe0) - NOTE: a private
method_missingno longer breaks dynamic dispatch, andKernel.<method>calls reach their methods again (#6974, #6975, #6976) - Strings can be used in pattern matching (#6830)
- Array splatting in patterns matches what CRuby matches (#6854)
breakwith an argument behaves as it does in CRuby (#6927)- Numbered parameters no longer read as
nil(#6921) nil?as a condition behaves asself.nil?does (#6874)- NOTE:
Array,HashandStructtake a pair already being compared as equal in#==and#eql?, so a container that holds itself equals another built the same way, as in CRuby; the other elements still decide (#7425) - Under word boxing, an Integer too wide to sit in the value itself is
compared and sorted as the Integer it is:
<=>read such a pair throughFloatand answered0for two that differ, andArray#sortwrote their bits back as inline values (#7480, #7481)
mruby has regular expressions. mruby-regexp is a new gem, in the stdlib
gembox, carrying an engine written for this tree rather than a bundled Onigmo:
a Pike VM answers a pattern whose shape allows it, and a backtracker answers
the rest. It is not in default, so a build asks for it.
RegexpandMatchData, and the literal syntax the compiler already read- On
Regexp:=~,===,match,match?,source,options,casefold?,to_s,inspect,names,named_captures,union,escapeandlast_match - On
MatchData:[](by index, name, or a start and length or Range),begin,end,offset,captures,named_captures,names,pre_match,post_match,values_at,to_a,stringandregexp - On
String: the regexp forms of=~,[],[]=,slice,slice!,index,rindex,byteindex,byterindex,match,match?,scan,split,sub,sub!,gsub,gsub!,partition,rpartitionandstart_with? - On
Symbol:match,match?and=~ - The match globals
$~,$`,$',$&and$1to$9
- Character classes, POSIX brackets, and nested classes read as the union
they are (#7469), narrowed by the
intersection
&&separates (#7471) - Greedy, lazy and possessive quantifiers, and atomic groups
(?>...) - Lookahead
(?=...),(?!...)and lookbehind(?<=...),(?<!...), the latter with each branch of the body carrying its own width (#7456) - Named groups, backreferences
\k<name>and subexpression calls\g<name> - The absent repeater
(?~...)(#7464) and the conditional(?(cond)yes|no)(#7467), which complete the(?...)forms CRuby reads - Comment groups
(?#...)(#7055), inline options and free-spacing mode - UTF-8 subjects are matched by character where the build indexes by character, and by byte where it does not
mrbgems/mruby-regexp/README.md lists these in full. The ones worth knowing:
- A collating element
[[.a.]]and an equivalence class[[=a=]]raise - A pattern that recurses past what the engine can carry raises rather than answering wrongly (#7280)
- NOTE: how deeply a pattern may nest is one number for every build:
the parser keeps the levels on a stack of its own rather than descending a
C frame per level, so
MRB_REGEXP_PARSE_DEPTH_LIMITno longer has to be sized to the C stack the build runs on (#7485) - The
tools/difftestcorpus records where this engine and CRuby's differ on purpose, and checks the rest against a running CRuby
- NOTE: what a string's bytes read as is held as a two-bit coderange beside a one-bit encoding index, rather than as three separate flags (#7158, #7169, #7170, #7173)
- NOTE:
MRB_STR_SINGLE_BYTEmeans every byte is ASCII, and no longer leaks intoscrub,ordorcodepoints(#7131) - A binary string is measured, inspected and chopped by byte (#7080, #7081, #7083, #7084)
- UTF-8 sequences forbidden by RFC 3629 are rejected (#7093)
String#succcarries across characters and steps the Unicode letters (#7288)String#scrubwas added (#6859)Regexp.escapeescapes whitespace,#and-(#7047)
mruby-regexp:RegexpandMatchDataover an engine written for this tree, in thestdlibgembox. See "Regular expressions" abovemruby-process: aProcessmodule over a process HAL, withProcess.clock_gettime,Process.clock_getres,Process.times,Process::Tms,Process::Status,Process.killand thewaitfamily; in thestdlib-iogembox (#7301, #7421, #7447)mruby-signal: aSignalmodule and the platform's signal table, whichProcess.killandProcess::Status#to_sboth read; instdlib-iomruby-env:ENVfor environment variable access; instdlib-iomruby-string-bitops: bit operations onStringmruby-bin-mrb: an mruby runtime command with no compiler in it, for running bytecode where the compiler is not wanted
NOTE: the compiler is Prism. mruby-compiler, mruby-eval and
mruby-bin-{mrbc,mruby,mirb} are built on it, and the lrama-based compiler is
gone with the parser generator that fed it, the parse.y grammar, the
lrama and full-core-lrama gemboxes and build_config/lrama.rb
(aad25e7). A build that named
any of those needs updating.
mruby-taskgained a GLib HAL, atimeout_mskeyword onTask::Queue#popandmrb_hal_task_switch_hook(#6834, #6918, #6942)mruby-iohandles UTF-8 output on Windows consoles and definesIO.pipewhere the port has one (#6996, #7314)mruby-dirsupports UTF-8 directory paths on Windows (#6967)- A port of
mruby-dir,mruby-ioormruby-socketdeclares in a header of its own which methods it implements, where the gem used to decide from the platform macros the host happened to spell. The port is what a build names, so a cross build and an out-of-treehal-<gem>-<conf>now answer for themselves; a method no port implements ismrb_notimplement_m, whichrespond_to?answers false for, as before (#7472, #7476, #7477) BasicSocket#getpeereidis implemented on macOS and the BSDs, where before no build defined it (#7477)mruby-processdeclares what a port implements the same way, and the Windows port declares no wait: Win32 opens a process ID into a handle for any process it may open, so a wait on one could report a stranger's exit code as a child's (#7484)- The
mruby-ioHAL numbers a file mode itself, so a port maps its host'sst_modeand permission bits both ways rather than handing them up as they are (#7476) mruby-benchmarkmeasures CPU time throughProcess.times(#7452)
MRB_API mrb_task_queue_push()(#6955)- NOTE:
mrb_gc_register()counts its registrations, so a second unregister no longer drops another owner's pin (#7277) mrb_load_irep_cxt()andmrb_generate_code()report a refused irep (#7202, #7204)- Deprecated
mrb_data_check_and_get()is no longer used internally (#6774)
- Special variables of a frame are held beside the callinfo stack rather than
in it, keeping
mrb_callinfoat its size (5993adb) - The symbol GC marks the symbols an irep holds (38d4283)
- Incremental GC is never driven from a
realloc(#6932)
- A build compiles by the names the sources have from the tree, so two checkouts of one commit produce the same binary (#7374, #7439)
- Prism's generated sources are written under the build directory rather than into the submodule (#7462)
- Every build writes a
size.jsonof its artifacts (#7450) rake definesreports where every define came from (#7453)rake compile_commands.jsonwrites the compilation database from the build rules, so a checkout has one before its first compile (#7395, #7475)check_funclinks what it found declared, so a host whose headers declare a function its C library does not define is told apart from one that has it (#7482)rake sizeprints thesize.jsona build wrote as a table, and every CI job runs it (#7489)- A build can ask the compiler whether a header is there (#7432)
- A generated output another configuration left behind is rebuilt (#7236)
- CI gained 32-bit x86 (2fd16f3),
32-bit Arm (5ee3bfc) and
AArch64 (43450e9) jobs, and
builds without
Floatand without bigint (#7454)
- Use-after-free in
String#lstrip!,#rstrip!and#strip!(#7082) - Use-after-free driving incremental GC from a
realloc(#6932) - Heap-buffer-overflow read in
MatchData#[]for an over-long group name (#7002) - Out-of-bounds write in a regexp character class range (#6937)
- Out-of-bounds reads in
casesplat from a callback replacing the array (#7092) - Storage pointers retained across Ruby callbacks in
Hash#__except,Struct#==andStruct#eql?(#7100, #7101) - Signed overflow in
pack_uuline count (#6978) mrb_intoverflow inary_insertandary_fill_exec(#6986)- Integer overflows and out-of-bounds accesses in
read_debug_record(#6949, #6950, #6951) - Unbounded
trunccounter inmrb_read_float()(#6958) - NULL-pointer dereference in
assign_class_name(#6842) - NULL dereference in
mt_putwhenprotectedcopies an inherited method (#7293) - Double free and use-after-free in
mrb_debug_set_break_method(#6851) - Double free during GC sweep (#6316)
- Undefined behaviour in
mpn_zerofrom Montgomery modpow squaring (#6849) ary_make_shared()operator precedence in its allocation size (#7422)
- #6239 Build option to build a shared library and link it with the resulting binaries
- #6316 Double free during GC sweep
- #6345 If the original block of a non-orphan block becomes an orphan block, the copy object does not become an orphan block (incompatibility with CRuby).
- #6764 Proc#arity and Proc#parameters for cfunc methods: storing aspec on RProc
- #6815
MRB_NAN_BOXINGcannot be built on 32-bit systems - #6819 Usage of GetLastError where WSAGetLastError must be used
- #6830 Strings cannot be used in pattern matching.
- #6831 Failed unit tests for mruby-bin-mrbc
- #6832 Failed unit tests for mruby-bin-mruby
- #6842 NULL-pointer deref in assign_class_name
- #6849 UB nonnull violation in mpn_zero from Montgomery modpow squaring
- #6851 [mrdb] Missing return in mrb_debug_set_break_method leads to Double Free / UAF
- #6853 mruby-regexp: /\Aa(b)?c?\z/ does not match "a"
- #6854 Incompatibility in pattern matching between CRuby and mruby with array splatting
- #6858 Is the exposure of linkage symbols without the
mrb_prefix intentional? - #6859 Add String#scrub to mruby-string-ext
- #6860 The unit tests for mruby-string-ext are failing
- #6862 Assertion failed: (c->ci == c->cibase || (c->ci - c->cibase) == cioff - 1), function mrb_vm_run
- #6863 mruby-task: segmentation fault
- #6865 mruby-task: segmentation fault
- #6868 Assertion failed: (c->ci == c->cibase || (c->ci - c->cibase) == cioff - 1), function mrb_vm_run, file .../mruby/src/vm.c, line 1664.
- #6870 Assertion failed: ((obj)->tt != MRB_TT_FREE), function mrb_gc_mark
- #6874
nil?condition does not behave the same asself.nil? - #6883 Regexp#=== does not capture groups
- #6886 Assertion failed: ((obj)->tt != MRB_TT_FREE), function mrb_gc_mark
- #6887 mrb_vm_run assert after Task.pass from root
- #6889 Rake Task to only load deps
- #6892
String#sub/#gsubwith\'replacement token crashes on subjects containing embedded NUL bytes - #6921 numbered parameter can become nil
- #6927 Incompatibility between CRuby and mruby when break has an argument
- #6929 building amalgamation with mruby-compiler
- #6937 [BUG] regexp_class_add_range_oob_write
- #6940 problem with mruby 4.0.0 on gcc 16
- #6944 When the C++ ABI is enabled in mruby-compiler, a macro redefinition warning is output
- #6948 Potential signed integer overflow in mrb_str_len_to_integer radix normalization
- #6949 Potential integer overflow causing out-of-bounds accesses in read_debug_record
- #6950 Potential out-of-bounds access in read_debug_record array line decoding
- #6951 Potential out-of-bounds reads of debug record headers in read_debug_record
- #6958 mrb_read_float(): unbounded signed
trunccounter can overflow on extremely long digit strings - #6959 mruby-test
str_match_p()recurses on brace patterns with no depth limit (C stack exhaustion) - #6960 Addrinfo.getaddrinfo silently truncates mrb_int family/socktype/protocol/flags to int
- #6969 When running
build/host/bin/mruby -vce ..., the AST is not displayed, and irep is output twice - #6971 Excessive compilation of the
build/host/mrbctask - #6972 A build error occurs if the setup block for
mruby-compileris not called beforemruby-bin-mrbc - #6974 A user-defined private
method_missingbreaks every dynamic dispatch on the receiver - #6975 Since 3.4.0,
protectedmethods cannot be called with an explicit receiver, even from the same class - #6976 Since 3.4.0,
Kernel.putsand most otherKernel.<method>calls raise NoMethodError - #7003 mruby-regexp: String#split dispatches to_int where the rest of mruby does not, and the respond_to? guarding it is redefinable
- #7012 mruby-compiler: generator error, Can't find local variables
- #7014 An argument that defines
__to_intis accepted whereto_intis rejected - #7015
Enumerable#takedispatchesto_ion the result of__to_int - #7032 [Bug]mruby-compiler/Prism parser passes NULL to nonnull string functions (UBSan undefined behavior, CWE-476)
- #7044
OP_ADDILVandOP_SUBILVset the method call fallback up on the local variables, corrupting them - #7090 mruby-io: partial IO#dup failure leaves a stale descriptor owner
- #7092 [BUG] Array replacement from callbacks causes out-of-bounds reads in case splats and IO#puts
- #7100
Hash#__exceptretains Array and Hash storage across Ruby callbacks - #7101 Struct#== and Struct#eql? retain member-storage pointers across Ruby callbacks
- #7111 mrbgems/mruby-test fails to link without mruby-compiler
- #7112 mrbgems/mruby-rational fails to compile without mruby-bigint
- #7277 Proposal: per-object pin flag for leaf objects (Strings/Data)
- #7290 Compiling top-level 'super' produces invalid OP_GETUPVAR bytecode
- #7293 NULL dereference in
mt_putwhenprotectedcopies an inherited method onto a singleton class with no method table - #7346
mrb_gc_(un)registerhangs after a few iterations - #7422 Bug:
ary_make_shared()allocatessizeof(mrb_value)*len+1, operator precedence adds 1 byte instead of 1 element - #7462 Build process writes Prism related files to source directory with out-of-source build
- #2479 Implement
Symbol#sliceandSymbol#[]in mruby-symbol-ext. - #6218 Reduced description of
mrb_init_core() - #6334 Remove
iteratingvariable frommrb_objspace_each_objects() - #6576 Share array entities if possible with
ary.replace(frozen_ary) - #6577 Sharing arrays with
ary_dup() - #6580 Improve
File.basename - #6596 pre-commit add official meta hook
check-useless-excludes - #6691 pre-commit: add hook to ensure Makefiles are indented with tabs
- #6774 Avoid using the deprecated function
mrb_data_check_and_get() - #6775 Improve the calculation of the next index for
Array#__combination_next - #6776 Return nil if a number less than 1 is passed to
Array#__combination_init - #6777 Make
Array#__combination_nextreturn an array of elements - #6785 Store compressed aspec on cfunc RProc for correct arity/parameters
- #6786 Early conversion of
mesgto a string object inmrb_sys_fail() - #6787 Supplement to #6781
- #6790 class.h: avoid C99 designated initializers in MRB_MT_ENTRY
- #6791 mruby-bigint: avoid C99 compound literal in MPZ_CTX_INIT
- #6792 host-cxx: use distinct build directory from host-debug
- #6793 readfloat: correctly round fraction via division by exact 10^n
- #6794 readfloat: keep one extra fraction digit (17 -> 18)
- #6799 Define the typedef for
mrb_stateearlier - #6800 mruby 4.0.0 released
- #6803 Disable some gems on build_config for playstationportable
- #6812 Add new fuzzing harness to be consumed by OSS-Fuzz
- #6814 Don't use
#putsin bintest for "mruby-bin-mrb" - #6816 Rename the members of the
mrb_combination_statestructure - #6817 Integrate
Array#{permutation,combination}intoArray#__combination - #6820 Fix Class inherited hook ordering
- #6822 Run prek; remove trailing whitespace; cleanup markdown
- #6823 Pin remaining actions to hash
- #6829 add IO#autoclose= and IO#autoclose?
- #6833 Improve wakeup tick condition check
- #6834 mruby-task GLib HAL
- #6835 Introduce Task::Queue
- #6836 Fix mruby-task: keep join waiter wakeup under one IRQ critical section
- #6837 Avoid surrounding
#ifwhen usingmrb_const_cache_clear() - #6838 Use
MRB_SYM()ingc_stat() - #6841 Small refactor for
incremental_sweep_phase() - #6856 test/bintest.rb: tokenize ENV['EMULATOR'] via Shellwords.split
- #6866 task: return
nilwhen given a nested call toTask.run - #6869 Separate the union of timeslice and result in struct mrb_task
- #6871 Fix execute_task() so unhandled task exceptions become task results
- #6876 [stable] backport: cap IO#puts recursion depth on cyclic arrays (mruby-io)
- #6877 Free the index array immediately at the end of
ary_combination_next() - #6879 Add alias support for mruby-method and mruby-proc-ext
- #6884 regexp: support capture groups in Regexp#===
- #6891 mruby-task: return task result when mrb_task_run_once stops a task
- #6893 mruby-regexp: Fix String#gsub block handling for zero-width matches
- #6895 Fix build when
MRB_NO_FLOATis defined - #6896 Add opt-in
mruby-*-prismmgem family - #6898 mruby-task: Use MRB_IVSYM instead of mrb_intern_lit
- #6902 mruby-bin-mrbc: define global_mrb for non-mruby targets
- #6909 Fix Documentation and Comments
- #6912 mruby-regexp: Fix String#split compatibility
- #6913 mruby-regexp: improve Regexp match compatibility
- #6915 mruby-regexp: correct regexp offset conversion for UTF-8 and binary strings
- #6917 Add new actions runner images to
build.yml - #6918 mruby-task: Introduce timeout_ms keyword to Task::Queue#pop
- #6926 gc.c: Add gc->collecting flag and gc_drive()
- #6928 vm.c: defer pending task switch while an exception is in flight
- #6930 mruby-task: survive OOM during task context initialization
- #6931 mruby-task: exclude the tick IRQ while GC marks the task queues
- #6932 Fix: never drive incremental GC from a realloc (use-after-free)
- #6933 gc: try to reclaim before growing the object heap
- #6934 mruby-task: don't accumulate a GC arena entry per execution slice
- #6935 mruby-task: assert that task.irq_nesting < UINT8_MAX before increment
- #6938 Feature: Scheduler Driven GC
- #6941 Fix maybe-uninitialized warning
- #6942 mruby-task: add mrb_hal_task_switch_hook to the HAL contract
- #6943 Fix Task::Queue backing array growth after long FIFO use
- #6947 Feature: Task#close
- #6952 Make scheduler-driven GC pending less conservative
- #6953 optimize
mrb_typeinto a LUT-based approach - #6955 Add MRB_API mrb_task_queue_push()
- #6957 load.c: bounds-check symbol length in read_section_lv
- #6966 vm.c: fix envadjust rebasing stack pointers off a freed pointer
- #6967 mruby-dir: support UTF-8 directory paths on Windows
- #6978 mruby-pack: avoid signed overflow in pack_uu line count
- #6979 Fix a build error occurs if the setup block for mruby-compiler is not called before mruby-bin-mrbc
- #6981 Omitting mruby-compiler in
MRuby::Build#build_mrbc_exec - #6982 Add
mrb_task_set_scheduler_hookfor pre-scheduling deferred work. Removemrb_hal_task_switch_hookinstead - #6983 mruby-task: Detach envs from a task stack before freeing it
- #6984 Restore
gc.disabledwhen even out of memory - #6986 guard mrb_int overflow in ary_insert and ary_fill_exec
- #6987 Omit the backtrace if a pre-generated
NoMemoryErroris raised - #6988 mruby-regexp: raise TypeError for a String argument to String#=~
- #6989 mruby-regexp: fix String#sub/#gsub argument handling
- #6991 mruby-regexp: pass the block through String#match
- #6992 mruby-regexp: test break out of the Regexp#match block
- #6993 mruby-regexp: add Symbol#match, #match? and #=~
- #6994 mruby-regexp: reject non-Regexp patterns in
String#matchand#match? - #6995 mruby-regexp: accept a Symbol on the Regexp side of a match
- #6996 mruby-io: fix UTF-8 output on Windows consoles
- #6997 ci: skip CIFuzz on forks
- #6999 Add
NilClass#=~ - #7000 mruby-regexp: fix
MatchData#[]for a negative index and an unknown name - #7001 mruby-regexp: type-check the
sub,gsub,scan,splitand=~pattern - #7002 mruby-regexp: fix a heap-buffer-overflow read in MatchData#[] for an over-long group name
- #7004 mruby-regexp: read the real type of
String#split's limit - #7005 mruby-regexp: rename
__match_patternto__check_pattern - #7008 Remove broken Star History from README
- #7009 Update for editorconfig-checker
- #7011 Add mruby-string-bitops gem
- #7013 CONTRIBUTING.md: name a protocol that
convert_type()still dispatches - #7016 mruby-range-ext: pass the converted argument to
Array#last - #7017 array.c: type check the argument of
Array#last - #7018 symbol.c: skip tombstones when migrating to the hash table
- #7019 mruby-regexp: bound the numeric \k backreference accumulator
- #7020 symbol.c: copy the name of a symbol that symbol GC can free
- #7021 mruby-regexp: reject an empty group name
- #7022 vm.c: restore the GC arena in the allocating inline opcodes
- #7023 vm.c: refresh regs before storing the OP_GETIDX0 Hash result
- #7024 mruby-regexp: do not truncate a POSIX bracket class name length
- #7025 mruby-regexp: set
$&,$`,$'and$+after a match - #7026 mruby-regexp: return Arrays from
Regexp#named_captures - #7027 mruby-regexp: add
Regexp#namesandMatchData#names - #7031 mruby-regexp: quote the pattern as written in
RegexpErrormessages - #7034 Add WASI toolchain & build_config
- #7035 mruby-regexp: do not truncate a stored capture name length
- #7037 Fix
Integer#==reading a Bigint receiver asmrb_int - #7038 string.c: check the append size before mrb_str_cat() modifies
- #7039 string.c: append into a shared buffer instead of copying it
- #7040 vm.c: answer str[0] from C in OP_GETIDX0
- #7041 mruby-regexp: keep a character class open past
[:name:]and a leading] - #7042 vm.c: restore the GC arena where the Integer boxing macro allocates
- #7043 string.c: record the source overlap before str_modify_cat() runs
- #7045 mruby-regexp: convert a Bigint
String#splitlimit - #7046 mruby-regexp: apply
/ito the backreference comparison - #7047 mruby-regexp: escape whitespace,
#and-inRegexp.escape - #7048 mruby-regexp: fix
MatchData#begin/#endfor a group name and an out-of-range index - #7049 mruby-regexp: apply
/ito character classes - #7050 mruby-regexp: keep
$~afterString#gsubwith a block - #7051 string.c: compare the append source as an address, not as a pointer
- #7052 mruby-regexp: split a character class range at the ASCII boundary
- #7053 mruby-regexp: snapshot the subject string in
create_matchdata() - #7054 mruby-regexp: add the regexp form of
String#[]andString#slice - #7055 mruby-regexp: support
(?#...)comment groups - #7056 mruby-regexp: make a multibyte literal one atom
- #7057 mruby-regexp: stop capturing plain groups once a pattern has a named group
- #7058 mruby-regexp: Unicode simple case folding for /i behind an option
- #7059 mruby-regexp: let a byte that starts no character begin a match
- #7060 mruby-regexp: let mrbtest exercise
Symbol#[]with a regexp - #7061 mruby-regexp: add the regexp form of
String#sub!andString#gsub! - #7062 mruby-regexp: write the disabled flags in Regexp#to_s
- #7063 mruby-regexp: add the regexp form of String#[]= and String#slice!
- #7064 mruby-regexp: refuse a pattern too large for its jump targets
- #7065 mruby-regexp: fix wrong comments on the String#split override
- #7066 mruby-regexp: make an escaped multibyte literal one atom
- #7067 mruby-regexp: document what a pattern still decides in the String overrides
- #7068 mruby-regexp: reject overlong and out-of-range UTF-8 sequences
- #7069 mruby-regexp: reject a lookbehind over a multibyte character class
- #7070 mruby-regexp: a match may not end inside a character
- #7071 mruby-regexp: stop a repetition on its empty iteration
- #7072 mruby-regexp: test the F4 upper bound of the four-byte UTF-8 range
- #7073 mruby-regexp: keep the pike VM's visited keys from wrapping
- #7074 mruby-regexp: read the \u escape
- #7075 mruby-regexp: accept a Regexp in String#index, #partition, #start_with? and their siblings
- #7076 mruby-regexp: list
String#sub!and#gsub!in the README - #7078 mruby-regexp: a byte that starts no character is a byte in a class
- #7079 mruby-regexp: close the pattern dispatch in the String overrides
- #7080 string.c: a copy of a binary string is binary
- #7081 string.c: a binary string is measured in bytes
- #7082 fix use-after-free in String#lstrip!/rstrip!/strip!
- #7083 string.c: a binary string is inspected byte by byte
- #7084 string.c:
String#chop!takes a byte off a binary string - #7085 mruby-regexp:
String#splitsteps by a byte through a binary subject - #7086 style/performance fixes
- #7087 mruby-regexp: rewind a lookbehind by characters
- #7088 mruby-regexp: split the test file by subject
- #7089 mruby-socket: skip the AF_INET6 test where IPv6 is unavailable
- #7093 string.c: reject UTF-8 sequences forbidden by RFC 3629
- #7094 mruby-regexp: drop the private UTF-8 encoder in favor of
mrb_utf8_to_buf - #7095 mruby-encoding: drop the unused
utf8_isleadmacro - #7096 string.c:
String#lengthstops at the end of a shared substring - #7097 Share character/byte offset conversion between core and mruby-regexp
- #7098 string.c: bound check
mrb_str_byte_to_charbefore use - #7099 string.c: search bytes in
String#byterindexand inString#rindexon a binary string - #7102 Move the
String#valid_encoding?body into core asmrb_str_valid_encoding_p - #7103 mruby-string-ext:
String#slice!cuts a multibyte string by characters - #7104 Share the character count between core and mruby-string-ext
- #7105 mruby-string-ext: validate UTF-8 sequences with
mrb_utf8len - #7106
String#charssplits whereString#lengthcounts - #7107 string.c: step
String#rindexby the charactersString#lengthcounts - #7108 internal.h: shorten the
mrb_str_valid_encoding_pcomment - #7109 Share UTF-8 byte lengths and character heads between core and mruby-regexp
- #7113 mruby-sprintf: reject a
%cargument with no UTF-8 encoding - #7114 mruby-pack: check the
pack("U")range before the cast touint32_t - #7115 mruby-regexp: ask the engine's byte questions of a byte-indexed subject too
- #7116 mruby-regexp: ask the malformed sequence cases of a byte-indexed subject too
- #7117 test: build wide shifts from a variable so the file still compiles
- #7118 mruby-socket: reject a big integer getaddrinfo hint instead of ignoring it
- #7120 mruby-regexp: ask the byte cases of a byte-indexed subject alone
- #7121 mruby-regexp: say at each block why only a byte-indexed subject can answer
- #7122 string.c: read String#chop! back from the last byte
- #7123 mruby-bin-mirb: read UTF-8 through the core scanner
- #7124 boxing_nan.h: keep
nilout ofmrb_false_p - #7125 mruby-regexp: measure a lookbehind in the characters its bytes spell
- #7127 mruby-regexp: exempt a quoted String pattern from the subject check
- #7128 Share the UTF-8 decoder between core, mruby-regexp and mruby-string-ext
- #7129 Check the Unicode range in
mrb_utf8_to_bufinstead of in its four callers - #7131 Stop a broken string from being read one byte at a time
- #7132 Stop
Integer#chrfrom calling a stray byte a character - #7133 mruby-regexp: refuse a broken subject at the entry to
split - #7135 Add a .clangd so headers resolve their own types when opened directly
- #7136 Read a copy of a byte-read string's bytes the way they were read
- #7137 Read a string built out of two strings off both of them
- #7138 ci: cover a build without MRB_UTF8_STRING
- #7139 mruby-string-ext: skip four UTF-8 tests where they cannot run
- #7140 ci: name the bintest build in
ci/gcc-clang - #7141 coverage: keep same-named functions from different builds apart
- #7143 Read what sprintf builds the way its bytes were read
- #7144 string.c: remember that a string was read as broken
- #7145 Write a byte escape in upper case hex, as CRuby does
- #7146 Read the pieces
partitioncuts the way the whole was read - #7147 string.h: drop the unused
MRB_STR_STATE_MASK - #7148 Walk the backward regexp search by byte
- #7149 Publish only the match a backward search answers with
- #7150 Write
MRB_STR_BINARYthrough accessors, as the other flags are - #7151 test: seed the group a backward search miss has to clear
- #7152 mruby-regexp: refuse a byte search offset inside a character
- #7153 mruby-regexp: answer a byte search before the subject with a miss
- #7154 mrbgems: let a build take a gem back out of a gembox
- #7155 ci: read the byte-indexed side on full-core minus mruby-encoding
- #7156 string.c: write
MRB_STR_SINGLE_BYTEthrough the accessors it has - #7157 string.c: ask a string what encoding it is, not whether a bit is set
- #7158 string.c: keep one answer about a string's bytes, not three flags
- #7159 build: give
spec.build.definesa reader that cannot lie - #7160 mruby-test: regenerate the per-gem test wrapper when a
mrbgem.rakeit is generated from changes - #7161 mruby-regexp: read a pattern the way the build reads a String
- #7162 vm.c: remove the unexpanded integer case macros
- #7163 numeric.c: make
Integer#eql?answer false for a Float, big integers included - #7164 mruby-compiler: reject a failed
ftellbefore sizing the input buffer - #7165 mruby-regexp: share the pattern-skipping rules between the two prescans
- #7166 mruby-regexp: always allocate the capture name arena
- #7167 test: growing a shared string detaches its buffer
- #7168 vm.c: restore the GC arena where the Float boxing macro allocates
- #7169 string.h: hold a string's encoding as an index, not as one bit
- #7170 string.h: fold the coderange's three bits into a two-bit field
- #7171 mruby-regexp, mruby-task: ask the build what it defines
- #7172 mruby-bin-mrbc: take the target define from the compiler gem
- #7173 string.h: give the flags word its final field order
- #7174 mruby-sprintf: set the result's length through RSTR_SET_LEN()
- #7175 build: hold the build's own defines in a separate list
- #7176 amalgam: write the build's defines into the generated header
- #7177 mruby-string-ext: read
String#casecmp's bytes as unsigned - #7178 string.h: name what makes a character index a byte index
- #7179 internal.h: move writing a string's encoding and coderange inside
- #7180 string.c: keep what a string reads as across a write that cannot change it
- #7181 string.h: drop
mrb_str_modify_keep_ascii() - #7182 string.c: convert case the way the string is read, not the way bytes are
- #7183 unicase.c: keep one Unicode case table rather than two
- #7184 presym: generate valid C when the scan finds no symbols
- #7185 string.c: follow an ASCII run only as far as the index asks
- #7186 string.c: compare the first byte before
memcmp()searching backward - #7187 string.c: walk to a substring's range rather than count the string
- #7188 tools: build the Unicode tables from the character database
- #7189 mruby-string-ext: read a
String#casecmp?operand, not a copy of it - #7190 string.c: let a build index by character and convert case by ASCII
- #7191 string.c: drop a case walk's check that nothing reaches
- #7192 tools: give the generated Unicode headers an include guard
- #7193 Prevent switch statement warning for
MRB_TT_SET - #7194 mruby-regexp: take away the MatchData constructor
- #7195 build_config: give each host build config a name of its own
- #7196 mruby-bigint: compare a big integer against a Float exactly
- #7197 build_config: give the clang-asan config a name of its own
- #7198 vm.c: honor a
[]redefinition installed on a core class - #7199 build_config: give the mrbc config a name of its own
- #7200 build_config: give the glib_hal_test config a name of its own
- #7201 mruby-compiler: make
mrc_intas wide as the VM'smrb_int - #7202 load.c: report a refused irep from
mrb_load_irep_cxt() - #7203 build: keep the linker options of a gem that is in libmruby.a
- #7204 mruby-compiler: report a failed irep round trip in
mrb_generate_code() - #7205 mruby-compiler: check the three RITE counts the codegen does not
- #7206 load.c: reject undersized binary_size in read_binary_header
- #7207 mruby-regexp: hold a character class's ranges sorted and free of overlaps
- #7208 string.c: write the case walk's answer into the buffer it is building
- #7209 string.c: take the single-byte path for a string of nothing but ASCII
- #7210 mruby-bigint: normalize the result of
mrb_bint_pow() - #7211 numeric.c: make
Numeric#eql?require the same type - #7212 mruby-bigint: let
mpz_get_int()answer the smallest Integer - #7213 mruby-regexp: relocate the lookaround offsets with the code they name
- #7214 mruby-compiler: compare integers of the same signedness
- #7215 vm.c: answer
str[i] = xfromOP_SETIDX - #7216 numeric.c: compare an Integer with a Float without rounding either one
- #7217 mruby-bigint: count the limbs an mrb_int needs in mpz_set_int()
- #7218 boxing_word.h: let one flag answer whether floats are inlined
- #7219 mruby-regexp: test a lookbehind over a class that holds a stray byte
- #7220 build_config: let the asan config use the compiler that is present
- #7221 mruby-compiler, mruby-bin-mruby: refuse a program file that cannot be read
- #7222 string.c: answer an ASCII-case build from the header's fallback
- #7223 test: ask what case conversion answers where it follows ASCII
- #7224 string.c: keep what the bytes read as across
String#reverse! - #7225 unicase.c: unfold an ASCII character without reading a table
- #7226 string.c: ask a broken string again after
String#reverse! - #7227 mruby-regexp: declare a named group as
(?'name'...)too - #7228 mruby-regexp: say which
\kreference failure it was - #7230 build: give a cross build's
mrbcthe target's answer on floats - #7231 doc: say what a build converting case by ASCII stops refusing
- #7232 mruby-regexp: give the pattern its buffers before the compile starts
- #7233 mruby-regexp: answer the backward search from the end of the subject
- #7234 mruby-regexp: ask the backward search about a long multibyte subject
- #7235 build_config: drop the stale asan.rb reference from gcc-asan.rb
- #7236 build: rebuild an output another configuration left in the build directory
- #7238 build: ask the build too whether a cross target compiles without floats
- #7239 build: let a build config declare
hostafter a cross build - #7240 build: pass over a
hostthat has nomrbcto lend - #7241 mruby-compiler: read a float literal as Integer 0 under
MRB_NO_FLOAT - #7243 build: give the presym preprocess the header dependencies of its object
- #7244 build: write the archive from the objects of now
- #7245 build_config: give the cosmopolitan config a name of its own
- #7246 build_config: give the msvc build a name of its own
- #7247 build_config: drop the host build from the IntelEdison config
- #7248 build: build the Prism objects through the rules
- #7249 mruby-bin-mirb: drop the readline and linenoise completion adapters
- #7250 build: build the gem loader object through the rules
- #7251 presym: skip the table of a build without libmruby
- #7252 mruby-regexp: scope the inline x option the way i and m are scoped
- #7253 build: build the test objects through the rules
- #7254 build: keep a generated source that a new
mrbcwrites the same - #7255 build: write a generated source again when the list of its inputs changes
- #7256 mruby-regexp: support the atomic group
(?>...) - #7257 mruby-regexp: match
\Zunder the backtracking engine - #7258 vm.c: end
mrb_vm_exec()with a return the retry loop never reaches - #7259 win32: add code page conversion helpers
- #7260 mruby-regexp: reject a hex escape with no digit
- #7261 mruby-string-ext: strip leading NUL in
stripandlstrip - #7262 mruby-regexp: share one class per codepoint for /i literals
- #7263 mruby-regexp: close a class range at the first codepoint of a
\u{...}list - #7264 mruby-regexp: fold a byte-indexed subject by ASCII under a
/ibackreference - #7265 mruby-regexp: keep the word class inside ASCII under /i
- #7267 mruby-regexp: follow a block that changes the receiver in
gsub,sub!andscan - #7268 mruby-regexp: read a digit escape as octal when it names no group
- #7269 mruby-regexp: stop a repetition on an empty iteration in the backtracker
- #7270 string.c: name the ASCII option for what it narrows
- #7271 mruby-regexp: stop looking up
MatchData,$~and theRegexpivars by string on every match - #7272 mruby-regexp: skip free-spacing whitespace in the parser and leave the pre-pass with comments and escape widths
- #7273 mruby-regexp: undo what a lookaround captured when the match backtracks past it
- #7274 mruby-regexp: speed up String#sub and #gsub
- #7275 mruby-regexp: let an empty group take a quantifier
- #7276 mruby-regexp: number atomic groups so a possessive repeat cuts as its own
- #7278 mruby-regexp: classify a POSIX bracket by Unicode above ASCII
- #7279 mruby-task: fix VM stack overflow when a larger proc is set on an existing task
- #7280 mruby-regexp: raise RegexpError where a search gives up at a limit
- #7281 mruby-regexp: publish
$~alone and derive$&,$`,$',$+and$1onward on read - #7282 mruby-regexp: read
\k<name>in a sub or gsub replacement - #7283 mruby-regexp: turn
\1through\9off in a replacement that names a group - #7284 mruby-numeric-ext: guard the bigint arm of
Integer#remainderunderMRB_NO_FLOAT - #7285 mruby-rational: build under MRB_NO_FLOAT with MRB_USE_BIGINT, and compare bigint-backed Rationals exactly
- #7286 Simplify some control flow in
vm.c - #7287 load.c: bounds-check length fields in debug/lv section readers
- #7288 mruby-string-ext: carry
String#succacross characters and step the Unicode letters and digits - #7289 mruby-regexp: take every search's capture buffer from the stack
- #7291 unify implementations of
mrb_ary_unshift* - #7294 Remove unused functions from mruby-eval
- #7295 Added the internal function
mrb_args_pack_positional() - #7296 mruby-regexp: cover
a{n}?as an optional wrapper around the interval - #7297 mruby-regexp: read an option group that names no letter
- #7298 mruby-regexp: refuse a group name that is a number or holds a
) - #7299 mruby-regexp: cover the interval whose braces hold free-spacing whitespace
- #7300 mruby-regexp: raise when a repeat range's upper bound is below its lower
- #7301 mruby-process: add a Process module over a process HAL
- #7302 mruby-regexp: fail a backreference to a group that has not closed
- #7303 mruby-io: let go of the write descriptor IO#close_write closed
- #7304 mruby-process: separate two sentences with a single space
- #7305 vm.c: make stack_extend_alloc cover the frame offset
- #7306 build_config: make the MinGW wine test config build and pass its tests
- #7307 mruby-regexp: move the backtracking stack off the C stack
- #7308 mruby-task: size the proc_set stack from the task's frame
- #7309 mruby-task: mark the main task's values during GC
- #7310 mruby-regexp: give back what a refused search took, and stop the capture pool growing with the subject
- #7311 mruby-regexp: take a MatchData in one block, into an object that owns it
- #7312 gc.c (gc_mark_children): drop the duplicate method table mark
- #7313 mruby-io: leave the stream not open for writing after IO#close_write
- #7314 mruby-io: define IO.pipe where the port has one
- #7315 mruby-io: name the errors these tests are about
- #7316 mruby-process: wait for a child under the names Ruby has for it
- #7317 build_config: name the Windows port in the MinGW config
- #7318 build_config: rewrite only the
z:that is a path - #7319 build_config: collect Wine output through files
- #7320 mruby-io: run these Windows-skipped tests on Windows
- #7321 headers: unify C linkage guards on MRB_BEGIN_DECL
- #7322 mruby-rational: cross-multiply exactly in rational_eq()'s overflow fallback
- #7323 mruby-rational: demote a reduced Rational's halves that fit
mrb_int - #7324 object.c: gate only the Float arm of
mrb_ensure_integer_type()behindMRB_NO_FLOAT - #7325 mruby-io: close the child's stream where IO#close_write has no write end
- #7326 test: cover three untested behaviours of Unicode case conversion
- #7327 class.c: fix mrb_mod_visibility()'s copy into a prepended class's method table
- #7328 mruby-regexp: append the flag suffix to a RegexpError message
- #7329 symbol.c: mark the globals, a fiber's stack and a Range's ends
- #7330 mruby-regexp: let a refused capture block be
backtrack_exec()'s answer - #7331 build_config: let the program under test have the runner's stdin
- #7332 ci: give the mingw jobs timeout headroom
- #7333 mruby-io: let a closed stream be closed again
- #7334 class.c: check frozen before mrb_define_method_raw() walks to the origin
- #7335 promote
ary_unshift_valuestoMRB_API - #7336 gc.c: let byte pressure advance an in-progress collection cycle
- #7337 string.c: let growth at the end of a shared string append in place
- #7338 gc.c: schedule collection on malloc growth by default
- #7339 gc.h, mruby-task: say what mrb_gc_scheduler_pending() actually tests
- #7340 string, array, hash: check a frozen receiver where a destructive call writes nothing
- #7341 mruby-compiler: report a source file that cannot be read
- #7342 mruby-bin-mrb, mruby-bin-mruby: fail when a -r library does not load
- #7343 mruby-bin-mirb, mruby-bin-debugger: refuse a source file that cannot be read
- #7344 test: invoke the tools in the bintests without a shell, and report one that does not run
- #7345 mruby-regexp: check the engine against CRuby over a pattern corpus
- #7347 string.c: make each write answer for what the bytes it leaves read as
- #7348 numeric.c: answer a comparison against a NaN as unordered
- #7349 vm.c: answer
==against a NaN by value, not by representation - #7350 range.c: refuse a range bounded by a NaN
- #7351 object.c: skip the send when
eql?is the identity - #7352 mruby-array-ext: compare with
eql?on the linear set-operation paths - #7353 enum.rb: ask for the block once rather than once an element
- #7355 mruby-compiler: give an assignment to a captured local its value
- #7356 fp_uscale.c: measure the shortest round trip against
mrb_float - #7357 test: state the sprintf and bigint float expectations for the build's own width
- #7359 array.c: take an
Arrayelement for equal to itself in#== - #7360 mruby-array-ext: walk an Array in C for
include?andmember? - #7361 mruby-enum-ext: count an Array in C
- #7362 object.c: compare what a Float holds bit for bit under
MRB_NO_BOXING - #7363 etc.c: give every NaN an identity of its own
- #7364 version.c: define MRUBY_REVISION from the source repository
- #7365 mruby-regexp: keep a Regexp's source and compiled pattern in step
- #7366 mruby-regexp: give an inline toggle the alternatives after it
- #7367 mruby-regexp: look the match up in a Hash replacement
- #7368 mruby-array-ext: narrow
Array#intersectionby every argument - #7369 array.c: take a comparison block's answer in every form it has
- #7370 mruby-regexp: fold a leading option group into what
Regexp#to_sprints - #7371 mruby-array-ext: build
-a set only when both sides can repay it - #7372 mruby-array-ext: write
uniq!,|and&once againstary_memb, with the threshold at 8 - #7373 mruby-array-ext: write
-andintersect?once, against a membership oracle - #7374 build: keep the paths of the build out of what it compiles
- #7375 build: write the same archive from the same objects
- #7376 mruby-regexp: let
\k<n>name a group written after it - #7377 mruby-regexp: range-check
\k<-n>before refusing it as numbered - #7378 mruby-signal: add a
Signalmodule and retireProcess::Status._signame - #7379 doc: list
ENVin the standard library tables - #7380 mruby-process: refuse a non-signal by its class
- #7381 compar.rb: order through
<=>inbetween?and the_byfamily - #7382 mruby-rational: guard the tests a narrow
mrb_intcannot answer - #7383 numeric.rb: negate through a product so
-xcan reach a-0.0 - #7384 mruby-regexp: refuse the nest level a
\kreference may carry - #7386 mruby-complex: take the
to_sseparator from the rendered part - #7387 mruby-complex: hold the exact parts the numeric tower hands over
- #7388 mruby-regexp: implement
\gsubexpression calls - #7389 vm.c: move
$~into the owning scope - #7390 mruby-compiler: avoid pushing discarded local assignment values
- #7391 mruby-process: file the
waitrow with the implemented methods - #7392 clangd: read the tree without a compile_commands.json
- #7393 mruby-regexp: move the String and Symbol overrides from mrblib to C
- #7394 mruby-regexp: tell an omitted
last_matchargument from an explicit nil - #7395 build: write a compile_commands.json from the records of the compiles
- #7396 string: snapshot shared append sources
- #7397 kernel.c: negate
=~from C rather than from a Ruby frame of its own - #7398 mruby-symbol-ext: slice a symbol's name from C rather than from a Ruby frame of its own
- #7399 mruby-process: read a
Process::Statussubclass as a status in#== - #7400 string: copy a static string before checking its terminator
- #7401 mruby-regexp: read a mutual recursion from the body that ends
- #7402 mruby-process: freeze a
Process::Statusonce it is built - #7403 mruby-process: undefine
Process::Status.new, as CRuby does - #7404 mruby-regexp: read a pattern byte that spells no character as a byte
- #7405 mruby-regexp: collapse repeated capture-free assertions
- #7406 kernel.c: answer
respond_to?false for a method unimplemented here - #7407 class.c: raise from
mrb_notimplement()even with no method name - #7408 mruby-socket: name the two methods that only refuse as unimplemented
- #7409 mruby-io: name the four methods that only refuse as unimplemented
- #7410 vm.c: gather the stack teardown's env closing into one walk
- #7411 mruby-socket: test the two methods that only refuse, Windows included
- #7412 error.c: report the errno when SystemCallError is missing
- #7413 mruby-process: name nothing in the error
killandwaitpidraise - #7414 amalgam: leave out the port an external HAL provider replaced
- #7415 mruby-regexp: state the README as the answers a reader comes for
- #7416 mruby-process: name the signal in a
killrefusal past the lookup width - #7417 mruby-process: keep pid and status out of
instance_variables - #7419 numeric.c: round an Integer to a negative number of digits correctly
- #7420 mruby-bigint: initialize the mpz
mrb_bint_new_int64()fills in - #7421 mruby-process: add
Process.clock_gettimeandProcess.clock_getres - #7423 ci: add 32-bit x86 and Arm builds
- #7424 guard mrb_int overflow in String#slice!
- #7425 mruby-struct: take a recursive pair as equal in Struct#== and #eql?
- #7426 Use
mrb_args_pack_positional()inprepare_missing() - #7427 mruby-regexp: add MatchData#values_at
- #7428 mruby-regexp: read the last participating group for a duplicate name
- #7429 Change
mrb_callinfo::nktokw - #7430 mruby-struct: let a bare Struct.new answer a memberless struct
- #7431 mruby-struct: raise the ordinary arity error for a keyword_init struct
- #7432 build: ask the compiler whether a header is there
- #7433 mruby-dir: drop a guard that has never let its header in
- #7434 mruby-regexp: add
MatchData#offset - #7436 mruby-struct: add Struct.keyword_init? and follow CRuby keyword argument handling
- #7437 mruby-regexp: slice
MatchData#[]with a start and length or a Range - #7438 mruby-process, mruby-task: one definition of NSEC_PER_SEC
- #7439 build: compile by the names the sources have from the tree
- #7440 mruby-regexp: combine patterns with
Regexp.union - #7441 mruby-compiler: make Prism
#linedirectives resolve from the tree - #7442 mruby-regexp: scan for first-byte candidates with memchr
- #7443 ci: split each job's build and test into separate steps
- #7444 appveyor: fetch the queued commit instead of the branch tip
- #7445 mruby-process: trim README prose duplicated in source comments
- #7446 mruby-regexp: report every group of a duplicate name in
named_captures - #7447 mruby-process: add Process.times and Process::Tms
- #7448 mruby-regexp: scan only the positions an anchored pattern can start at
- #7449 mruby-struct: take a C fast path through
.newfor the defaultinitialize - #7450 build: write a size.json of every build's artifacts
- #7451 mruby-regexp: show the groups in
MatchData#inspect - #7452 mruby-benchmark: measure CPU time through
Process.times - #7453 build: log where every define came from as a build starts
- #7454 ci: add a build without Float and one without bigint
- #7455 string.c: start the byte-at-a-time tail where the word loop stopped
- #7456 mruby-regexp: give each lookbehind branch its own rewind
- #7457 mruby-process: work until the CPU time reading moves
- #7458 mruby-regexp: scan for both ends of a literal prefix
- #7459 amalgam: emit the baked defines ahead of the system includes
- #7460 ci: check out Prism with the source and log each build's defines
- #7461 ci: bound the cross-toolchain installs at 5 minutes
- #7463 mruby-compiler: exclude arm64 from mingw64 builtin setjmp/longjmp
- #7464 mruby-regexp: implement the absent repeater
(?~...) - #7466 mruby-regexp: read the subject in one place
- #7467 mruby-regexp: implement the conditional
(?(cond)yes|no) - #7468 mruby-regexp: read the subject before the pattern in every search
- #7469 mruby-regexp: read a nested character class as the union it is
- #7470 mruby-process: split the sources by subject
- #7471 mruby-regexp: read
&&as the character class intersection it is - #7472 build: let a port hand headers to the gem it serves, and let mruby-dir use them
- #7473 NEWS.md: keep prettier from rewriting the 4.1 entries
- #7474 build_config: let
nintendo_switch.rbload - #7475 build: write
compile_commands.jsonwithout a build - #7476 mruby-io: let the port say what it implements
- #7477 mruby-socket: let the port say what it implements
- #7478 mruby-regexp: shorten the README and list what it missed
- #7480 numeric.c: compare a pair of Integers as Integers however each is stored
- #7481 array.c: sort an array holding an Integer too wide to store inline
- #7482 build: have check_func ask the linker as well
- #7483 mruby-io: drop the compat layer the HAL replaced
- #7484 mruby-process: let the port say what it implements
- #7485 mruby-regexp: keep the levels a pattern nests on a stack of the parser's own
- #7486 string.c: stop unsharing the buffer the Unicode case walk only reads
- #7487 unicase.c: binary-search the folding difference from the range walks
- #7488 mruby-io: drop the callback behind
IO#sysreadandIO#syswrite - #7489 build: print the size.json of each build with
rake size