aboutsummaryrefslogtreecommitdiffstats
path: root/common.mk
Commit message (Collapse)AuthorAgeFilesLines
* dtoa.c: make thread-safe by using atomic CASNobuyoshi Nakada2021-01-101-0/+2
|
* set RUBY_ON_BUG on runruby rule.Koichi Sasada2021-01-051-1/+1
| | | | | set RUBY_ON_BUG='gdb -x $(srcdir)/.gdbinit -p' to catch SEGV on `make runruby` rule.
* Commented out the sh-specific code, in cmd.exeNobuyoshi Nakada2021-01-051-1/+2
|
* Add a missing dependencyTakashi Kokubun2021-01-031-1/+1
|
* Add -v to make benchmarkTakashi Kokubun2021-01-011-1/+1
| | | | I simply can't tell which of compare-ruby and built-ruby is what.
* Improve performance some Float methods [Feature #17498] (#4018)S.H2021-01-011-4/+4
|
* Moved time.rb to timev.rbNobuyoshi Nakada2020-12-311-3/+3
|
* Add time.rb as builtinNobuyoshi Nakada2020-12-311-0/+4
|
* Make more silent when -s on GNU makeNobuyoshi Nakada2020-12-291-1/+1
|
* transcode-tblgen.rb: make silent a little when just -vNobuyoshi Nakada2020-12-291-0/+1
|
* Update help of sync-default-gemsTakashi Kokubun2020-12-281-1/+1
|
* Bypass check for warning_category on internal callsNobuyoshi Nakada2020-12-281-0/+1
|
* Do not include external library sources into packagesNobuyoshi Nakada2020-12-271-1/+2
|
* Expose atomic operation macros with RUBY prefixNobuyoshi Nakada2020-12-241-0/+36
| | | | | Now we need atomic operations, which are lighter than mutex, more widely for extension libraries because of Ractor.
* TracePoint.new(&block) should be ractor-localKoichi Sasada2020-12-221-0/+1
| | | | | TracePoint should be ractor-local because the Proc can violate the Ractor-safe.
* should use owned_p instead of locked_pKoichi Sasada2020-12-211-0/+1
| | | | | It should raise an error if the same thread tris to call receive/receive_if.
* make RB_DEBUG_COUNTER_INC()_thread-safeKoichi Sasada2020-12-171-0/+1
|
* [memory_view] Make MemoryView API Ractor-safe (#3911)Kenta Murata2020-12-161-0/+4
| | | | | | | | | | | * memory_view.c: make Ractor-safe * test/ruby/test_memory_view.rb: Add test_ractor * memory_view: fix typo * memory_view.c: Use st_update in unregster_exported_object * memory_view: update dependency
* add vm_sync debug countersKoichi Sasada2020-12-161-0/+4
| | | | | | | | * vm_sync_lock * vm_sync_lock_enter * vm_sync_lock_enter_nb * vm_sync_lock_enter_cr * vm_sync_barrier
* Update dependenciesAlan Wu2020-12-141-0/+3
|
* trap on non-main ractorKoichi Sasada2020-12-121-0/+4
| | | | | trap can accept blopck/Proc and it can violate Rator isolation, so the Proc should be isolatable when trap is used on non-main ractor.
* add RUNOPT and RUNOPT0 for dev rules.Koichi Sasada2020-12-111-6/+6
| | | | | | | | | | run, runruby, ... accept RUNOPT and RUNOPT0 configuration to pass some commandline argument like that: $(BTESTRUBY) $(RUNOPT0) $(TESTRUN_SCRIPT) $(RUNOPT) RUNOPT0 is options for ruby interpreter (-w, -v, ...) RUNOPT is options for the script (ARGV/ARGF)
* Added tool/lib into test-spec loadpathHiroshi SHIBATA2020-12-101-1/+1
|
* Fix ArithmeticSequence#last and ArithmeticSequence#each for non-integer ↵Kenta Murata2020-12-091-0/+2
| | | | | | sequences (#3870) [Bug #17218] [ruby-core:100312]
* Add support for non-blocking `Process.wait`.Samuel Williams2020-12-091-0/+1
|
* cancel theap on multi-ractorsKoichi Sasada2020-12-071-0/+1
| | | | | | | accessing theap needs complicating synchronization but it reduce performance on multi-ractor mode. So simply stop using theap on multi-ractor mode. In future, theap should be replaced with more cleaver memory strategy.
* Moved update-bundled_gems code to a toolNobuyoshi Nakada2020-12-061-10/+1
|
* Proposed method for dealing with stack locals which have non-local lifetime.Samuel Williams2020-12-051-0/+1
|
* test-bundled-gems: select bundled gems to test by BUNDLED_GEMSNobuyoshi Nakada2020-12-021-1/+2
|
* ractor local storage C-APIKoichi Sasada2020-12-011-0/+1
| | | | | | | | | | | | | | | | | | | | | | To manage ractor-local data for C extension, the following APIs are defined. * rb_ractor_local_storage_value_newkey * rb_ractor_local_storage_value * rb_ractor_local_storage_value_set * rb_ractor_local_storage_ptr_newkey * rb_ractor_local_storage_ptr * rb_ractor_local_storage_ptr_set At first, you need to create a key of storage by rb_ractor_local_(value|ptr)_newkey(). For ptr storage, it accepts the type of storage, how to mark and how to free with ractor's lifetime. rb_ractor_local_storage_value/set are used to access a VALUE and rb_ractor_local_storage_ptr/set are used to access a pointer. random.c uses this API.
* Clean temproray directory created by test-specNobuyoshi Nakada2020-11-301-0/+1
|
* Clean static-rubyNobuyoshi Nakada2020-11-301-1/+1
|
* Keep references of memory-view-exported objects (#3816)Kenta Murata2020-11-301-0/+1
| | | | | | | | | * memory_view.c: remove a reference in view->obj at rb_memory_view_release * memory_view.c: keep references of memory-view-exported objects * Update common.mk * memory_view.c: Use st_update
* Make --disable-jit-support compileTakashi Kokubun2020-11-221-0/+1
| | | | | | vm_core.h needs to be included to know rb_execution_context_t, etc. I also added a trivial refactoring in mjit.c and missing dependency for process.c.
* Combine mjit.h and internal/mjit.hTakashi Kokubun2020-11-221-5/+1
| | | | It's very hard to remember which mjit.h has what.
* dist: added DISTOPTS and PKGSDIRNobuyoshi Nakada2020-11-221-1/+2
|
* fix public interfaceKoichi Sasada2020-11-181-15/+13
| | | | | | | | | | | | | | | | | | To make some kind of Ractor related extensions, some functions should be exposed. * include/ruby/thread_native.h * rb_native_mutex_* * rb_native_cond_* * include/ruby/ractor.h * RB_OBJ_SHAREABLE_P(obj) * rb_ractor_shareable_p(obj) * rb_ractor_std*() * rb_cRactor and rm ractor_pub.h and rename srcdir/ractor.h to srcdir/ractor_core.h (to avoid conflict with include/ruby/ractor.h)
* Update dependenciesSamuel Williams2020-11-071-0/+24
|
* Include c_escape.rb in COMPILE_PRELUDENobuyoshi Nakada2020-10-261-1/+2
| | | | template/prelude.c.tmpl requires tool/ruby_vm/helpers/c_escape.rb.
* Ractor.make_shareable(obj)Koichi Sasada2020-10-211-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | Introduce new method Ractor.make_shareable(obj) which tries to make obj shareable object. Protocol is here. (1) If obj is shareable, it is shareable. (2) If obj is not a shareable object and if obj can be shareable object if it is frozen, then freeze obj. If obj has reachable objects (rs), do rs.each{|o| Ractor.make_shareable(o)} recursively (recursion is not Ruby-level, but C-level). (3) Otherwise, raise Ractor::Error. Now T_DATA is not a shareable object even if the object is frozen. If the method finished without error, given obj is marked as a sharable object. To allow makng a shareable frozen T_DATA object, then set `RUBY_TYPED_FROZEN_SHAREABLE` as type->flags. On default, this flag is not set. It means user defined T_DATA objects are not allowed to become shareable objects when it is frozen. You can make any object shareable by setting FL_SHAREABLE flag, so if you know that the T_DATA object is shareable (== thread-safe), set this flag, at creation time for example. `Ractor` object is one example, which is not a frozen, but a shareable object.
* Some global variables can be accessed from ractorsKoichi Sasada2020-10-201-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some global variables should be used from non-main Ractors. [Bug #17268] ```ruby # ractor-local (derived from created ractor): debug '$DEBUG' => $DEBUG, '$-d' => $-d, # ractor-local (derived from created ractor): verbose '$VERBOSE' => $VERBOSE, '$-w' => $-w, '$-W' => $-W, '$-v' => $-v, # process-local (readonly): other commandline parameters '$-p' => $-p, '$-l' => $-l, '$-a' => $-a, # process-local (readonly): getpid '$$' => $$, # thread local: process result '$?' => $?, # scope local: match '$~' => $~.inspect, '$&' => $&, '$`' => $`, '$\'' => $', '$+' => $+, '$1' => $1, # scope local: last line '$_' => $_, # scope local: last backtrace '$@' => $@, '$!' => $!, # ractor local: stdin, out, err '$stdin' => $stdin.inspect, '$stdout' => $stdout.inspect, '$stderr' => $stderr.inspect, ```
* Bundle typeprof gem as bundled gemsYusuke Endoh2020-10-201-1/+1
|
* sync RClass::ext::iv_index_tblKoichi Sasada2020-10-171-0/+1
| | | | | | | | | | | | iv_index_tbl manages instance variable indexes (ID -> index). This data structure should be synchronized with other ractors so introduce some VM locks. This patch also introduced atomic ivar cache used by set/getinlinecache instructions. To make updating ivar cache (IVC), we changed iv_index_tbl data structure to manage (ID -> entry) and an entry points serial and index. IVC points to this entry so that cache update becomes atomically.
* sync generic_ivtblKoichi Sasada2020-10-141-0/+1
| | | | | | | | | generic_ivtbl is a process global table to maintain instance variables for non T_OBJECT/T_CLASS/... objects. So we need to protect them for multi-Ractor exection. Hint: we can make them Ractor local for unshareable objects, but now it is premature optimization.
* sync enc_table and rb_encoding_listKoichi Sasada2020-10-141-0/+4
| | | | | | | | | | | | | | | | | enc_table which manages Encoding information. rb_encoding_list also manages Encoding objects. Both are accessed/modified by ractors simultaneously so that they should be synchronized. For enc_table, this patch introduced GLOBAL_ENC_TABLE_ENTER/LEAVE/EVAL to access this table with VM lock. To make shortcut, three new global variables global_enc_ascii, global_enc_utf_8, global_enc_us_ascii are also introduced. For rb_encoding_list, we split it to rb_default_encoding_list (256 entries) and rb_additional_encoding_list. rb_default_encoding_list is fixed sized Array so we don't need to synchronized (and most of apps only needs it). To manage 257 or more encoding objects, they are stored into rb_additional_encoding_list. To access rb_additional_encoding_list., VM lock is needed.
* Fixed installation failure [Bug #17191]Nobuyoshi Nakada2020-09-291-1/+1
| | | | | | | Try update and extract bundled gems only when baseruby is available. It should be done only when installing from developemental build and not from the tarball, but it is not obvious to differentiate them.
* Fix up dependencies on internal/sanitizers.hNobuyoshi Nakada2020-09-291-0/+1
|
* update-depsNARUSE, Yui2020-09-261-0/+3
| | | | https://github.com/ruby/ruby/runs/1169621878
* Buffer protocol proposal (#3261)Kenta Murata2020-09-251-0/+162
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add buffer protocol * Modify for some review comments * Per-object buffer availability * Rename to MemoryView from Buffer and make compilable * Support integral repeat count in memory view format * Support 'x' for padding bytes * Add rb_memory_view_parse_item_format * Check type in rb_memory_view_register * Update dependencies in common.mk * Add test of MemoryView * Add test of rb_memory_view_init_as_byte_array * Add native size format test * Add MemoryView test utilities * Add test of rb_memory_view_fill_contiguous_strides * Skip spaces in format string * Support endianness specifiers * Update documentation * Support alignment * Use RUBY_ALIGNOF * Fix format parser to follow the pack format * Support the _ modifier * Parse count specifiers in get_format_size function. * Use STRUCT_ALIGNOF * Fix test * Fix test * Fix total size for the case with tail padding * Fix rb_memory_view_get_item_pointer * Fix rb_memory_view_parse_item_format again
* Update dependenciesKazuhiro NISHIYAMA2020-09-251-0/+1
|