summaryrefslogtreecommitdiff
path: root/common.mk
AgeCommit message (Collapse)Author
2023-12-23Make rbconfig.rb loadable from exe/rubyNobuyoshi Nakada
So that it can run without `--disable=gems` option.
2023-12-23Control the precheck for test-all by `PRECHECK_TEST_ALL`Nobuyoshi Nakada
2023-12-17Fix ext/socket/constdefs.c dependency [ci skip]Nobuyoshi Nakada
2023-12-17Add `undocumnted` target [ci skip]Nobuyoshi Nakada
2023-12-15Introduce --parser runtime flagHParker
Introduce runtime flag for specifying the parser, ``` ruby --parser=prism ``` also update the description: ``` $ ruby --parser=prism --version ruby 3.3.0dev (2023-12-08T04:47:14Z add-parser-runtime.. 0616384c9f) +PRISM [x86_64-darwin23] ``` [Bug #20044]
2023-12-14rb_ext_resolve_symbol: C API to resolve and return externed symbols [Feature ↵Satoshi Tagomori
#20005] This is a C API for extensions to resolve and get function symbols of other extensions. Extensions can check the expected symbol is correctly loaded and accessible, and use it if it is available. Otherwise, extensions can raise their own error to guide users to setup their environments correctly and what's missing.
2023-12-11Use dedicated functions to check terminatorsNobuyoshi Nakada
2023-12-10Change the semantics of rb_postponed_job_registerKJ Tsanaktsidis
Our current implementation of rb_postponed_job_register suffers from some safety issues that can lead to interpreter crashes (see bug #1991). Essentially, the issue is that jobs can be called with the wrong arguments. We made two attempts to fix this whilst keeping the promised semantics, but: * The first one involved masking/unmasking when flushing jobs, which was believed to be too expensive * The second one involved a lock-free, multi-producer, single-consumer ringbuffer, which was too complex The critical insight behind this third solution is that essentially the only user of these APIs are a) internal, or b) profiling gems. For a), none of the usages actually require variable data; they will work just fine with the preregistration interface. For b), generally profiling gems only call a single callback with a single piece of data (which is actually usually just zero) for the life of the program. The ringbuffer is complex because it needs to support multi-word inserts of job & data (which can't be atomic); but nobody actually even needs that functionality, really. So, this comit: * Introduces a pre-registration API for jobs, with a GVL-requiring rb_postponed_job_prereigster, which returns a handle which can be used with an async-signal-safe rb_postponed_job_trigger. * Deprecates rb_postponed_job_register (and re-implements it on top of the preregister function for compatability) * Moves all the internal usages of postponed job register pre-registration
2023-12-07Free everything at shutdownAdam Hess
when the RUBY_FREE_ON_SHUTDOWN environment variable is set, manually free memory at shutdown. Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> Co-authored-by: Peter Zhu <peter@peterzhu.ca>
2023-12-06Re-embed when removing Object instance variablesPeter Zhu
Objects with the same shape must always have the same "embeddedness" (either embedded or heap allocated) because YJIT assumes so. However, using remove_instance_variable, it's possible that some objects are embedded and some are heap allocated because it does not re-embed heap allocated objects. This commit changes remove_instance_variable to re-embed Object instance variables when it becomes small enough.
2023-12-06Revert "allow enabling Prism via flag or env var"HParker
This reverts commit 9b76c7fc89460ed8e9be40e4037c1d68395c0f6d.
2023-12-05allow enabling Prism via flag or env varHParker
Enable Prism using either --prism ruby --prism test.rb or via env var RUBY_PRISM=1 ruby test.rb
2023-12-04[PRISM] Fix dependenciesPeter Zhu
2023-11-30[ruby/prism] Correctly pass around const pm_encoding_t *Kevin Newton
https://github.com/ruby/prism/commit/ce4c67fb3a
2023-11-30[PRISM] Fix up prism encoding targetsKevin Newton
2023-11-29[prism] Add MacJapanese encodings to common.mkKevin Newton
2023-11-29[prism] Add pm_cp950 to make targetsKevin Newton
2023-11-22[prism] Add cp949 targets to common.mkKevin Newton
2023-11-20[prism] Remove pm_big5_hkscs from common.mk targetsKevin Newton
2023-11-20Don't try compacting ivars on Classes that are "too complex"Aaron Patterson
Too complex classes use a hash table to store ivs, and should always pin their IVs. We shouldn't touch those classes in compaction.
2023-11-18[prism] Update common.mk for prism big5 hkscsKevin Newton
2023-11-16[prism] Add cp51932 to common.mkKevin Newton
2023-11-09[Bug #18286] Show checksum of builtin_binary.inc for confirmationNobuyoshi Nakada
2023-11-09[Bug #18286] Make builtin binary if sharable in universal binariesNobuyoshi Nakada
2023-11-09Revert "Disable iseq-dumped builtin module for universal x86_64/arm64 binaries"Nobuyoshi Nakada
This reverts commit 1d5598fe0d3470e7cab06a756d40a9221fcd501b.
2023-11-09Disable iseq-dumped builtin module for universal x86_64/arm64 binariesBen Hamilton
During the build, Ruby has special logic to serialize its own builtin module to disk using the binary iseq format during the build (I assume for speed so it doesn't have to parse builtin every time it starts up). However, since iseq format is architecture-specific, when building on x86_64 for universal x86_64 + arm64, the serialized builtin module is written with the x86_64 architecture of the build machine, which fails this check whenever ruby imports the builtin module on arm64: https://github.com/ruby/ruby/blob/1fdaa0666086529b3aae2d509a2e71c4247c3a12/compile.c#L13243 Thankfully, there's logic to disable this feature for cross-compiled builds: https://github.com/ruby/ruby/blob/1fdaa0666086529b3aae2d509a2e71c4247c3a12/builtin.c#L6 This disables the iseq logic for universal builds as well. Fixes [Bug #18286]
2023-11-03[prism] Update to use new options APIsKevin Newton
2023-11-01[prism] Updates for syncKevin Newton
2023-10-26[prism] Update prettyprint depsKevin Newton
2023-10-25[PRISM] Move scope_node itself to CRuby, create prism_compile.hJemma Issroff
2023-10-23Use `-H` option instead of `-h` optionydah
Follow up: https://github.com/ruby/lrama/pull/139
2023-10-21[Bug #19967] Reset `LIBPATHENV` env after startedNobuyoshi Nakada
Not to affect other tools invoked as child processes.
2023-10-18YJIT: Add a live ISeq counter Alan Wu
It's an estimator for application size and could be used as a compilation heuristic later. Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com> Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
2023-10-17Separate `test-precheck` targetNobuyoshi Nakada
So that the tests can run without updating other than the programs.
2023-10-17Wait for `showflag` to finish to prevent interspersed outputsNobuyoshi Nakada
2023-10-17Remove duplicated optionyui-knk
`-d` option is basically same with `-h` (`--header`). The difference is `-h` accept header file name. Therefore remove `-d` option.
2023-10-13[prism] Remove unused make targetKevin Newton
2023-10-13[prism] Remove unescape targetsKevin Newton
2023-10-13[PRISM] Add --dump=prism mode (#8643)Jemma Issroff
2023-10-12M:N thread scheduler for RactorsKoichi Sasada
This patch introduce M:N thread scheduler for Ractor system. In general, M:N thread scheduler employs N native threads (OS threads) to manage M user-level threads (Ruby threads in this case). On the Ruby interpreter, 1 native thread is provided for 1 Ractor and all Ruby threads are managed by the native thread. From Ruby 1.9, the interpreter uses 1:1 thread scheduler which means 1 Ruby thread has 1 native thread. M:N scheduler change this strategy. Because of compatibility issue (and stableness issue of the implementation) main Ractor doesn't use M:N scheduler on default. On the other words, threads on the main Ractor will be managed with 1:1 thread scheduler. There are additional settings by environment variables: `RUBY_MN_THREADS=1` enables M:N thread scheduler on the main ractor. Note that non-main ractors use the M:N scheduler without this configuration. With this configuration, single ractor applications run threads on M:1 thread scheduler (green threads, user-level threads). `RUBY_MAX_CPU=n` specifies maximum number of native threads for M:N scheduler (default: 8). This patch will be reverted soon if non-easy issues are found. [Bug #19842]
2023-09-28Move CRuby-specific prism files to top levelKevin Newton
2023-09-27Rename YARP symbols to prismKevin Newton
2023-09-27Update YARP build targetsKevin Newton
2023-09-27Clean also YARP build directory [ci skip]Nobuyoshi Nakada
2023-09-25Invoke the command when RUBY_BUGREPORT_PATH starts with `|`Nobuyoshi Nakada
2023-09-21Move YARP_BUILD_DIR to common.mkNobuyoshi Nakada
It does not need to be an absolute path.
2023-09-21`.NOTPARALLEL` with prerequisites needs recent GNU MakeNobuyoshi Nakada
GNU Make prior to 4.4 just ignores the prerequisites, and runs everything in serial.
2023-09-17[Bug #19778] Pass additional include options to INCFLAGS in common.mkNobuyoshi Nakada
2023-09-13Enable `.NOTPARALLEL` on `ripper_srcs`Nobuyoshi Nakada
And add special treats only for old GNU make.
2023-09-11Use the keyword for output and omit default arguments [ci skip]Nobuyoshi Nakada