aboutsummaryrefslogtreecommitdiffstats
path: root/ext
Commit message (Collapse)AuthorAgeFilesLines
* ObjectSpace.dump_all: dump shapes as wellJean Boussier2022-12-083-13/+171
| | | | | | | | | | | | | | | | | | | | | | | | | I see several arguments in doing so. First they use a non trivial amount of memory, so for various memory profiling/mapping tools it is relevant to have visibility of the space occupied by shapes. Then, some pathological code can create a tons of shape, so it is valuable to have a way to have a way to observe shapes without having to compile Ruby with `SHAPE_DEBUG=1`. And additionally it's likely much faster to dump then this way than to use `RubyVM::Shape`. There are however a few open questions: - Shapes can't respect the `since:` argument. Not sure what to do when it is provided. Would probably make sense to not dump them. - Maybe it would make more sense to have a separate `ObjectSpace.dump_shapes`? - Maybe instead `dump_all` should take a `shapes: false` argument? Additionally, `ObjectSpace.dump_shapes` is added for the use case of debugging the evolution of the shape tree.
* [ruby/stringio] bump up to 3.0.4Sutou Kouhei2022-12-081-1/+1
| | | | https://github.com/ruby/stringio/commit/5ba853d6ff
* [ruby/psych] Bump version to 5.0.1Hiroshi SHIBATA2022-12-081-1/+1
| | | | https://github.com/ruby/psych/commit/bdf20e6042
* Update dependenciesDaniel Colson2022-12-062-0/+2
|
* Add shape_id to heap dumpJemma Issroff2022-12-051-0/+3
|
* [ruby/bigdecimal] Bump version to 3.1.3Hiroshi SHIBATA2022-12-051-1/+1
| | | | https://github.com/ruby/bigdecimal/commit/25a75c2033
* [ruby/zlib] Bump version to 3.0.0Hiroshi SHIBATA2022-12-051-1/+1
| | | | https://github.com/ruby/zlib/commit/f1ce5e3e8d
* [ruby/win32ole] Bump version to 1.8.9Hiroshi SHIBATA2022-12-051-1/+1
| | | | https://github.com/ruby/win32ole/commit/e4a1f3a2bf
* [ruby/stringio] Revert "Bump version to 3.0.4"Hiroshi SHIBATA2022-12-051-1/+1
| | | | | | This reverts commit https://github.com/ruby/stringio/commit/aeb7e1a0bde6. https://github.com/ruby/stringio/commit/003dd0d003
* [ruby/stringio] Bump version to 3.0.4Hiroshi SHIBATA2022-12-051-1/+1
| | | | https://github.com/ruby/stringio/commit/aeb7e1a0bd
* [ruby/psych] Bump version to 5.0.0Hiroshi SHIBATA2022-12-051-1/+1
| | | | https://github.com/ruby/psych/commit/4fed0941b9
* [ruby/pathname] Bump version to 0.2.1Hiroshi SHIBATA2022-12-051-1/+1
| | | | https://github.com/ruby/pathname/commit/7e796cc78e
* [ruby/nkf] Bump version to 0.1.2Hiroshi SHIBATA2022-12-051-1/+1
| | | | https://github.com/ruby/nkf/commit/98607bd2be
* [ruby/io-nonblock] Bump version to 0.2.0Hiroshi SHIBATA2022-12-051-1/+1
| | | | https://github.com/ruby/io-nonblock/commit/46c0ec245e
* [ruby/fcntl] Bump version to 1.0.2Hiroshi SHIBATA2022-12-051-1/+1
| | | | https://github.com/ruby/fcntl/commit/20fd776303
* [ruby/etc] Bump version to 1.4.1Hiroshi SHIBATA2022-12-051-1/+1
| | | | https://github.com/ruby/etc/commit/b3e9d9ceb0
* [ruby/digest] Bump version to 3.1.1Hiroshi SHIBATA2022-12-051-1/+1
| | | | https://github.com/ruby/digest/commit/fad16582ea
* [ruby/date] Bump version to 3.3.0Hiroshi SHIBATA2022-12-051-1/+1
| | | | https://github.com/ruby/date/commit/ac1642cf39
* [ruby/pathname] [Misc #19155] [DOC] Addion of absolute pathsNobuyoshi Nakada2022-12-031-0/+4
| | | | https://github.com/ruby/pathname/commit/3cb5ed2576
* [ruby/io-console] Check rawmode option names strictlyNobuyoshi Nakada2022-12-021-10/+30
| | | | https://github.com/ruby/io-console/commit/aa8fc7e947
* Introduce encoding check macroS-H-GAMELINKS2022-12-021-0/+1
|
* Removed documentation for incomplete option about [Feature #17134]Hiroshi SHIBATA2022-11-301-1/+0
|
* [ruby/erb] Skip using the extension for truffleruby as wellTakashi Kokubun2022-11-271-1/+6
| | | | | | | | | | | | | | | | | | | | (https://github.com/ruby/erb/pull/39) * Skip using the extension for truffleruby as well * Just skip building the C extension for TruffleRuby * Skip rake compile for truffleruby * Use resolve_feature_path * Revert "Use resolve_feature_path" This reverts commit https://github.com/ruby/erb/commit/acc1e0c0ffaf. * Use resolve_feature_path with LoadError guard https://github.com/ruby/erb/commit/85dcb08439
* [ruby/erb] Define ERB::Escape moduleTakashi Kokubun2022-11-261-3/+3
| | | | | (https://github.com/ruby/erb/pull/38) Close #32
* [ruby/erb] Keep ERB::Util#html_escape privateTakashi Kokubun2022-11-251-1/+1
| | | | | | | ERB::Util.html_escape has been public, but ERB::Util#html_escape had been private. https://github.com/ruby/erb/commit/e62210bf56
* Use `rb_sprintf` instead of deprecated `sprintf`Nobuyoshi Nakada2022-11-251-13/+13
|
* [ruby/erb] Rename erb.so to erb/escape.soTakashi Kokubun2022-11-243-3/+3
| | | | | | (https://github.com/ruby/erb/pull/35) https://github.com/ruby/erb/commit/1280046952
* Use class methods of `File` over `Kernel.open` and `IO.read`Nobuyoshi Nakada2022-11-212-7/+5
|
* Fix typos (#6775)Yudai Takada2022-11-201-2/+2
| | | | | | | | | | | * s/Innteger/Integer/ * s/diretory/directory/ * s/Bufer/Buffer/ * s/defalt/default/ * s/covearge/coverage/
* Enhance keep_tokens option for RubyVM::AbstractSyntaxTree parsing methodsyui-knk2022-11-211-19/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implementation for Language Server Protocol (LSP) sometimes needs token information. For example both `m(1)` and `m(1, )` has same AST structure other than node locations then it's impossible to check the existence of `,` from AST. However in later case, it might be better to suggest variables list for the second argument. Token information is important for such case. This commit adds these methods. * Add `keep_tokens` option for `RubyVM::AbstractSyntaxTree.parse`, `.parse_file` and `.of` * Add `RubyVM::AbstractSyntaxTree::Node#tokens` which returns tokens for the node including tokens for descendants nodes. * Add `RubyVM::AbstractSyntaxTree::Node#all_tokens` which returns all tokens for the input script regardless the receiver node. [Feature #19070] Impacts on memory usage and performance are below: Memory usage: ``` $ cat test.rb root = RubyVM::AbstractSyntaxTree.parse_file(File.expand_path('../test/ruby/test_keyword.rb', __FILE__), keep_tokens: true) $ /usr/bin/time -f %Mkb /usr/local/bin/ruby -v ruby 3.2.0dev (2022-11-19T09:41:54Z 19070-keep_tokens d3af1b8057) [x86_64-linux] 11408kb # keep_tokens :false $ /usr/bin/time -f %Mkb /usr/local/bin/ruby test.rb 17508kb # keep_tokens :true $ /usr/bin/time -f %Mkb /usr/local/bin/ruby test.rb 30960kb ``` Performance: ``` $ cat ../ast_keep_tokens.yml prelude: | src = <<~SRC module M class C def m1(a, b) 1 + a + b end end end SRC benchmark: without_keep_tokens: | RubyVM::AbstractSyntaxTree.parse(src, keep_tokens: false) with_keep_tokens: | RubyVM::AbstractSyntaxTree.parse(src, keep_tokens: true) $ make benchmark COMPARE_RUBY="./ruby" ARGS=../ast_keep_tokens.yml /home/kaneko.y/.rbenv/shims/ruby --disable=gems -rrubygems -I../benchmark/lib ../benchmark/benchmark-driver/exe/benchmark-driver \ --executables="compare-ruby::./ruby -I.ext/common --disable-gem" \ --executables="built-ruby::./miniruby -I../lib -I. -I.ext/common ../tool/runruby.rb --extout=.ext -- --disable-gems --disable-gem" \ --output=markdown --output-compare -v ../ast_keep_tokens.yml compare-ruby: ruby 3.2.0dev (2022-11-19T09:41:54Z 19070-keep_tokens d3af1b8057) [x86_64-linux] built-ruby: ruby 3.2.0dev (2022-11-19T09:41:54Z 19070-keep_tokens d3af1b8057) [x86_64-linux] warming up.. | |compare-ruby|built-ruby| |:--------------------|-----------:|---------:| |without_keep_tokens | 21.659k| 21.303k| | | 1.02x| -| |with_keep_tokens | 6.220k| 5.691k| | | 1.09x| -| ```
* Add support for `sockaddr_un` on Windows. (#6513)Samuel Williams2022-11-179-26/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Windows: Fix warning about undefined if_indextoname() * Windows: Fix UNIXSocket on MINGW and make .pair more reliable * Windows: Use nonblock=true for read tests with scheduler * Windows: Move socket detection from File.socket? to File.stat Add S_IFSOCK to Windows and interpret reparse points accordingly. Enable tests that work now. * Windows: Use wide-char functions to UNIXSocket This fixes behaviour with non-ASCII characters. It also fixes deletion of temporary UNIXSocket.pair files. * Windows: Add UNIXSocket tests for specifics of Windows impl. * Windows: fix VC build due to missing _snwprintf Avoid usage of _snwprintf, since it fails linking ruby.dll like so: linking shared-library x64-vcruntime140-ruby320.dll x64-vcruntime140-ruby320.def : error LNK2001: unresolved external symbol snwprintf x64-vcruntime140-ruby320.def : error LNK2001: unresolved external symbol vsnwprintf_l whereas linking miniruby.exe succeeds. This patch uses snprintf on the UTF-8 string instead. Also remove branch GetWindowsDirectoryW, since it doesn't work. * Windows: Fix dangling symlink test failures Co-authored-by: Lars Kanis <kanis@comcard.de>
* Clean extension build directories and exts.mk fileNobuyoshi Nakada2022-11-161-2/+8
|
* Remove `-j` option from `MFLAGS` for sub-makesNobuyoshi Nakada2022-11-161-0/+1
|
* [ruby/bigdecimal] Add fallback definition of MAYBE_UNUSEDKenta Murata2022-11-151-0/+4
| | | | https://github.com/ruby/bigdecimal/commit/b2123faa52
* [ruby/bigdecimal] Replace sprintf by snprintfKenta Murata2022-11-152-121/+189
| | | | https://github.com/ruby/bigdecimal/commit/d6f5bb40c7
* [ruby/bigdecimal] Mark some functions MAYBE_UNUSEDKenta Murata2022-11-151-0/+8
| | | | https://github.com/ruby/bigdecimal/commit/d70a4d53e5
* [ruby/bigdecimal] Add specific value allocatorsKenta Murata2022-11-131-199/+282
| | | | | | | * Add NewZero* and NewOne* function families * Use them instead of VpAlloc for allocating 0 and 1 https://github.com/ruby/bigdecimal/commit/9276a94ac7
* [ruby/bigdecimal] Add and use specific value allocatorsKenta Murata2022-11-131-19/+50
| | | | | | | | | * Add rbd_allocate_struct_zero for making 0.0 * Add rbd_allocate_struct_one for making 1.0 * Use them to replace VpAlloc calls * Renmae VpPt5 to VpConstPt5 https://github.com/ruby/bigdecimal/commit/40c826f5e6
* [ruby/bigdecimal] Make VPrint function always availableKenta Murata2022-11-131-91/+86
| | | | https://github.com/ruby/bigdecimal/commit/5391f7e92c
* [ruby/bigdecimal] Tweak VpAllocKenta Murata2022-11-131-32/+32
| | | | | | | | * Stop reusing mx and mf * Check szVal == NULL first * Treat special values before checking the leading `#` https://github.com/ruby/bigdecimal/commit/14f3d965f8
* [ruby/bigdecimal] Rewrite allocation functionsKenta Murata2022-11-132-72/+90
| | | | | | | * Rename them * Make allocation count operations atomic https://github.com/ruby/bigdecimal/commit/a5ab34a115
* [ruby/bigdecimal] Twak GetPrecisionInt and rename it to check_int_precisionKenta Murata2022-11-131-9/+16
| | | | https://github.com/ruby/bigdecimal/commit/69d0588a3b
* [ruby/bigdecimal] Tweak check_rounding_mode_optionKenta Murata2022-11-131-10/+9
| | | | https://github.com/ruby/bigdecimal/commit/e1c6c9be25
* [ruby/bigdecimal] Rewrite check_rounding_mode functionKenta Murata2022-11-132-46/+70
| | | | | | Use table-lookup algorithm instead of consecutive if-statements. https://github.com/ruby/bigdecimal/commit/23eaff3ae5
* [ruby/bigdecimal] [Doc] Fix the document of n_significant_digitsKenta Murata2022-11-131-9/+9
| | | | https://github.com/ruby/bigdecimal/commit/91b72a9341
* [ruby/bigdecimal] Make GetVpValue inlineKenta Murata2022-11-131-1/+1
| | | | https://github.com/ruby/bigdecimal/commit/1b642e2e59
* [ruby/bigdecimal] Make BigDecimal_double_fig inlineKenta Murata2022-11-131-1/+1
| | | | https://github.com/ruby/bigdecimal/commit/4ecf04da7a
* Remove numiv from RObjectJemma Issroff2022-11-101-1/+1
| | | | | | | Since object shapes store the capacity of an object, we no longer need the numiv field on RObjects. This gives us one extra slot which we can use to give embedded objects one more instance variable (for a total of 3 ivs). This commit removes the concept of numiv from RObject.
* Transition shape when object's capacity changesJemma Issroff2022-11-104-0/+18
| | | | | | | | | | | | | | | | This commit adds a `capacity` field to shapes, and adds shape transitions whenever an object's capacity changes. Objects which are allocated out of a bigger size pool will also make a transition from the root shape to the shape with the correct capacity for their size pool when they are allocated. This commit will allow us to remove numiv from objects completely, and will also mean we can guarantee that if two objects share shapes, their IVs are in the same positions (an embedded and extended object cannot share shapes). This will enable us to implement ivar sets in YJIT using object shapes. Co-Authored-By: Aaron Patterson <tenderlove@ruby-lang.org>
* Fix compiler issues in test on C99Peter Zhu2022-11-101-1/+1
| | | | | | | | Fixes the following issue when compiling using C99: ext/-test-/rb_call_super_kw/rb_call_super_kw.c ext/-test-/random/loop.c:16:39: error: extra ';' outside of a function [-Werror,-Wextra-semi] RB_RANDOM_DEFINE_INIT_INT32_FUNC(loop);