summaryrefslogtreecommitdiff
path: root/prelude.rb
Commit message (Collapse)AuthorAgeFilesLines
* Define IO#read/write_nonblock with builtins.Koichi Sasada2019-11-081-123/+0
| | | | | | | IO#read/write_nonblock methods are defined in prelude.rb with special private method __read/write_nonblock to reduce keyword parameters overhead. We can move them into io.rb with builtin functions.
* use builtin for TracePoint.Koichi Sasada2019-11-081-63/+0
| | | | Define TracePoint in trace_point.rb and use __builtin_ syntax.
* Use `warn` with `uplevel:` instead of `caller`Kazuhiro NISHIYAMA2019-10-121-1/+1
|
* Document that non-blocking mode isn't always supported on Windows [ci skip]Jesús Burgos Maciá2019-07-231-0/+4
|
* [DOC] update target_thread to TracePoint#enableNobuyoshi Nakada2019-06-301-5/+6
|
* Fix typos, grammar, and styleMarcus Stollsteimer2019-05-041-12/+11
|
* Improve TracePoint docs.hsbt2019-03-201-0/+57
| | | | | | | | | | | | * Mention new :script_compiled event; * Deduplicate __enable/enable methods; * Document target: and target_line: arguments. [Bug #15484][ruby-core:90801] Co-authored-by: zverok <zverok.offline@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67313 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `TracePoint#enable(target_thraed:)` [Feature #15473]ko12018-12-291-2/+2
| | | | | | | | | * vm_trace.c (tracepoint_enable_m): `TracePoint#enable` supports `target_thread:` keyword to filter a target thread. [Feature #15473] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66640 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* `TracePoint#enable(target_line:)` is supported. [Feature #15289]ko12018-11-261-2/+2
| | | | | | | | | * vm_trace.c: `TracePoint#enable(target_line:)` is supported. This option enables a hook only at specified target_line. target_line should be combination with target and :line event. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66008 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Support targetting TracePoint [Feature #15289]ko12018-11-261-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * vm_trace.c (rb_tracepoint_enable_for_target): support targetting TracePoint. [Feature #15289] Tragetting TracePoint is only enabled on specified method, proc and so on, example: `tp.enable(target: code)`. `code` should be consisted of InstructionSeuqnece (iseq) (RubyVM::InstructionSeuqnece.of(code) should not return nil) If code is a tree of iseq, TracePoint is enabled on all of iseqs in a tree. Enabled tragetting TracePoints can not enabled again with and without target. * vm_core.h (rb_iseq_t): introduce `rb_iseq_t::local_hooks` to store local hooks. `rb_iseq_t::aux::trace_events` is renamed to `global_trace_events` to contrast with `local_hooks`. * vm_core.h (rb_hook_list_t): add `rb_hook_list_t::running` to represent how many Threads/Fibers are used this list. If this field is 0, nobody using this hooks and we can delete it. This is why we can remove code from cont.c. * vm_core.h (rb_vm_t): because of above change, we can eliminate `rb_vm_t::trace_running` field. Also renamed from `rb_vm_t::event_hooks` to `global_hooks`. * vm_core.h, vm.c (ruby_vm_event_enabled_global_flags): renamed from `ruby_vm_event_enabled_flags. * vm_core.h, vm.c (ruby_vm_event_local_num): added to count enabled targetting TracePoints. * vm_core.h, vm_trace.c (rb_exec_event_hooks): accepts hook list. * vm_core.h (rb_vm_global_hooks): added for convinience. * method.h (rb_method_bmethod_t): added to maintain Proc and `rb_hook_list_t` for bmethod (defined by define_method). * prelude.rb (TracePoint#enable): extracet a keyword parameter (because it is easy than writing in C). It calls `TracePoint#__enable` internal method written in C. * vm_insnhelper.c (vm_trace): check also iseq->local_hooks. * vm.c (invoke_bmethod): check def->body.bmethod.hooks. * vm.c (hook_before_rewind): check iseq->local_hooks and def->body.bmethod.hooks before rewind by exception. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66003 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Do not :stopdoc: entire classes/modulesnobu2018-10-261-1/+1
| | | | | | | | It disables cross-references to the classes/modules, even if those are defined in other places. I suspect this is not an intentional behavior, however make a workaround for the time being. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65380 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.rb (Kernel#pp): make it privatemame2018-10-111-0/+2
| | | | | | It was a bug. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64994 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.rb: eliminate a private constantnobu2018-01-071-6/+5
| | | | | | | * prelude.rb (Thread.exclusive): eliminate a private constant, MUTEX_FOR_THREAD_EXCLUSIVE. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61644 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.rb: block passingnobu2017-12-251-4/+2
| | | | | | | * prelude.rb (Thread.exclusive): pass the block as a block argument. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.rb: remove duplicate rdocnobu2017-12-141-3/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61222 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.rb: suppress redefinition warningsnobu2017-12-011-0/+6
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60952 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.rb (Kernel#pp): Fix a delegation bugmame2017-11-301-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.rb: Add Kernel#pp, a trigger for lib/pp.rbmame2017-11-301-0/+10
| | | | | | [Feature #14123] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60944 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Revert r57690 except for read_nonblocknobu2017-02-231-2/+1
| | | | | | https://github.com/ruby/ruby/pull/1527#issuecomment-281867551 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57694 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* [DOC] mark up literalsnobu2017-02-231-4/+4
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* [DOC] keyword argument _exception_nobu2017-02-231-2/+2
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57692 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* [DOC] {read,write}_nonblock with exception: falsenobu2017-02-231-2/+4
| | | | | | | | | | Update docs to reflect EOF behavior change of read_nonblock and write_nonblock when using `exception: false`. [Fix GH-1527] Author: Russell Davis <russell-stripe@users.noreply.github.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57690 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.rb: Binding#irb [ci skip]nobu2017-01-061-0/+7
| | | | | | | * prelude.rb (Binding#irb): [EXPERIMENTAL] automatically require irb and run. [ruby-core:78960] [Bug #13099] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57274 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* fix typo in `IO#write_nonblock` example [ci skip]kazu2016-12-071-1/+1
| | | | | | | | | | | | This example explains when writing a value greater than 65536, so the value specify must be greater than 65536. This seems to be wrong in cee7f69 Patch by: Yuji Yaginuma <yuuji.yaginuma@gmail.com> [Fix GH-1496] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57018 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Use qualified namesnobu2016-08-301-2/+3
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56037 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* add missing options to call-seq of IO#read_nonblockkazu2015-12-071-2/+6
| | | | | | | * prelude.rb (IO#read_nonblock): [DOC] add missing options to call-seq. [ruby-core:71627] [Bug #11730] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* prelude.rb: deprecate Thread.exclusivenobu2015-11-131-0/+1
| | | | | | * prelude.rb (Thread.exclusive): warn as deprecated. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52554 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* io.c: avoid kwarg parsing in C APInormal2015-11-121-0/+114
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * benchmark/bm_io_nonblock_noex2.rb: new benchmark based on bm_io_nonblock_noex.rb * io.c (io_read_nonblock): move documentation to prelude.rb (io_write_nonblock): ditto (Init_io): private, internal methods for prelude.rb use only * prelude.rb (IO#read_nonblock): wrapper + documentation (IO#write_nonblock): ditto [ruby-core:71439] [Feature #11339] rb_scan_args and hash lookups for kwargs in the C API are clumsy and slow. Instead of improving the C API for performance, use Ruby instead :) Implement IO#read_nonblock and IO#write_nonblock in prelude.rb to avoid argument parsing via rb_scan_args and hash lookups. This speeds up IO#write_nonblock and IO#read_nonblock benchmarks in both cases, including the original non-idiomatic case where the `exception: false' hash is pre-allocated to avoid GC pressure. Now, writing the kwargs in natural, idiomatic Ruby is fastest. I've added the noex2 benchmark to show this. 2015-11-12 01:41:12 +0000 target 0: a (ruby 2.3.0dev (2015-11-11 trunk 52540) [x86_64-linux]) target 1: b (ruby 2.3.0dev (2015-11-11 avoid-kwarg-capi 52540) ----------------------------------------------------------- benchmark results: minimum results in each 10 measurements. Execution time (sec) name a b io_nonblock_noex 2.508 2.382 io_nonblock_noex2 2.950 1.882 Speedup ratio: compare with the result of `a' (greater is better) name b io_nonblock_noex 1.053 io_nonblock_noex2 1.567 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52541 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * prelude.rb: [DOC] Update Thread::exclusive docs by @stevenharman.hsbt2014-04-171-3/+3
| | | | | | [ci skip][fix GH-589] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45612 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * prelude.rb: Moved Mutex#synchronize tokosaki2012-11-191-16/+0
| | | | | | | | * thread.c (rb_mutex_synchronize_m): here. [Bug #4266] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37724 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * remove trailing spaces.nobu2011-05-151-1/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Fix :nodoc: definition. [ruby-dev:40949]naruse2010-04-101-2/+1
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27287 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * prelude.rb, .document: Stuff in prelude.rb should be documentedknu2010-03-291-5/+13
| | | | | | | | as well. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27092 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * compile.c, iseq.c, ruby.c, vm.c, vm_core.h, vm_eval.c: add absolutemame2010-03-161-14/+0
| | | | | | | | | | | | | | | path field into rb_iseq_t. The field contains a string representing a path to corresponding source file. or nil when the iseq is created from -e, stdin, eval, etc. This field is used for require_relative. [ruby-dev:40004] * load.c (rb_f_require_relative): add C implementation of require_relative. * prelude.rb (require_relative): get rid of Ruby implementation of require_relative. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26959 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * prelude.rb (require_relative): use File.realpath. [ruby-dev:40040]akr2010-01-121-1/+1
| | | | | | | | | | | | | | | | | * include/ruby/intern.h: declare rb_dir_getwd. * dir.c (rb_dir_getwd): copied from dir_s_getwd to export. (dir_s_getwd): use rb_dir_getwd. * file.c (rb_file_s_realpath): new method File.realpath. (rb_file_s_realdirpath): new method File.realdirpath. * lib/pathname.rb (Pathname#realpath): use File.realpath. (Pathname#realdirpath): use File.realdirpath. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26290 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * prelude.rb (require_relative): defined as a module function ofakr2009-10-161-8/+11
| | | | | | | Kernel. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25376 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * prelude.rb (require_relative): move require_relative frommatz2008-04-121-0/+10
| | | | | | | | lib/require_relative.rb. [ruby-core:16356] * lib/require_relative.rb: removed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15985 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * prelude.rb (Mutex::synchronize): capture exception from unlock.matz2008-01-101-1/+1
| | | | | | [ruby-dev:32935] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14977 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * thread.c: fix Mutex to be interruptable lock.ko12007-08-271-3/+5
| | | | | | | | | | | | | | | | | | | * thread_win32.ci, thread_win32.h, thread_pthread.ci, thread_pthread.h: prepare native_cond_*() which are based on pthread_cond_*() spec. * prelude.rb: fix Mutex#synchronize method. * vm_core.h, include/ruby/intern.h: change unblock function interface (to pass some user data). * file.c, process.c: ditto. * benchmark/bm_vm2_mutex.rb: add a benchmark for mutex. * benchmark/bm_vm3_thread_mutex.rb: add a benchmark for mutex with contension. * benchmark/run.rb: fix to remove ENV['RUBYLIB'] for matzruby. * test/ruby/test_thread.rb: add a test. * common.mk: fix benchmark options. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13290 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * prelude.rb: add Thread.exclusive. This class methodko12007-08-251-0/+11
| | | | | | | | | is different from 1.8's. Thread.exclusive only does synchronize with VM global mutex. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * prelude.rb: fix Mutex#synchronize definition.ko12007-08-241-7/+5
| | | | git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13252 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * prelude.rb: added. run this script on startup.ko12007-08-241-0/+14
* tool/compile_prelude.rb: compile prelude.rb to C string. (prelude.rb -> prelude.c) * common.mk: fix to build with prelude.c. * inits.c (rb_call_inits): ditto. * thread.c (Init_Thread): move definition of Mutex#synchronize to prelude.rb. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e