Age | Commit message (Collapse) | Author |
|
(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
|
|
(https://github.com/ruby/erb/pull/38)
Close #32
|
|
ERB::Util.html_escape has been public, but ERB::Util#html_escape had
been private.
https://github.com/ruby/erb/commit/e62210bf56
|
|
|
|
(https://github.com/ruby/erb/pull/35)
https://github.com/ruby/erb/commit/1280046952
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6777
|
|
* s/Innteger/Integer/
* s/diretory/directory/
* s/Bufer/Buffer/
* s/defalt/default/
* s/covearge/coverage/
Notes:
Merged-By: k0kubun <takashikkbn@gmail.com>
|
|
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| -|
```
Notes:
Merged: https://github.com/ruby/ruby/pull/6770
|
|
* 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>
Notes:
Merged-By: ioquatix <samuel@codeotaku.com>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6741
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6741
|
|
https://github.com/ruby/bigdecimal/commit/b2123faa52
|
|
https://github.com/ruby/bigdecimal/commit/d6f5bb40c7
|
|
https://github.com/ruby/bigdecimal/commit/d70a4d53e5
|
|
* Add NewZero* and NewOne* function families
* Use them instead of VpAlloc for allocating 0 and 1
https://github.com/ruby/bigdecimal/commit/9276a94ac7
|
|
* 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
|
|
https://github.com/ruby/bigdecimal/commit/5391f7e92c
|
|
* Stop reusing mx and mf
* Check szVal == NULL first
* Treat special values before checking the leading `#`
https://github.com/ruby/bigdecimal/commit/14f3d965f8
|
|
* Rename them
* Make allocation count operations atomic
https://github.com/ruby/bigdecimal/commit/a5ab34a115
|
|
https://github.com/ruby/bigdecimal/commit/69d0588a3b
|
|
https://github.com/ruby/bigdecimal/commit/e1c6c9be25
|
|
Use table-lookup algorithm instead of consecutive if-statements.
https://github.com/ruby/bigdecimal/commit/23eaff3ae5
|
|
https://github.com/ruby/bigdecimal/commit/91b72a9341
|
|
https://github.com/ruby/bigdecimal/commit/1b642e2e59
|
|
https://github.com/ruby/bigdecimal/commit/4ecf04da7a
|
|
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.
Notes:
Merged: https://github.com/ruby/ruby/pull/6699
|
|
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>
Notes:
Merged: https://github.com/ruby/ruby/pull/6699
|
|
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);
|
|
Distinguish initialization by single word from initialization by
array.
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/6701
|
|
|
|
Before:
```
Reducing stack by rule 639 (line 5062):
$1 = token "integer literal" (1.0-1.1: 1)
-> $$ = nterm simple_numeric (1.0-1.1: )
```
After:
```
Reducing stack by rule 641 (line 5078):
$1 = token "integer literal" (1.0-1.1: 1)
-> $$ = nterm simple_numeric (1.0-1.1: NODE_LIT)
```
`"<*>"` is supported by Bison 2.3b (2008-05-27) or later.
https://git.savannah.gnu.org/cgit/bison.git/commit/?id=12e3584054c16ab255672c07af0ffc7bb220e8bc
Therefore developers need to install Bison 2.3b+ to build ruby from
source codes if their Bison is older.
Minimum version requirement for Bison is changed to 3.0.
See: https://bugs.ruby-lang.org/issues/19068 [Feature #19068]
Notes:
Merged: https://github.com/ruby/ruby/pull/6579
|
|
because it's much slower on M1 https://github.com/ruby/erb/pull/29.
It'd be too complicated to switch the implementation based on known
optimized platforms / versions.
Besides, short strings are the most common usages of this method and
SIMD doesn't really help that case. All in all, I can't justify the
existence of this code.
https://github.com/ruby/erb/commit/30691c8995
|
|
https://github.com/ruby/erb/commit/12058c3784
|
|
This is the same trick used by https://github.com/k0kubun/hescape to
choose the best strategy for different scenarios.
https://github.com/ruby/erb/commit/af26da2858
|
|
(https://github.com/ruby/erb/pull/29)
Typically, strpbrk(3) is optimized pretty well with SIMD instructions.
Just using it makes this as fast as a SIMD-based implementation for the
no-escape case.
Not utilizing this for escaped cases because memory allocation would be
a more significant bottleneck for many strings anyway. Also, there'll be
some overhead in calling a C function (strpbrk) many times because we're
not using SIMD instructions directly. So using strpbrk all the time
might not necessarily be faster.
|
|
(https://github.com/ruby/erb/pull/28)
`prepend` is prioritized more than ActiveSupport's monkey-patch, but the
monkey-patch needs to work.
https://github.com/ruby/erb/commit/611de5a865
|
|
|
|
Xcode no longer links the system include files directory to `/usr`.
Extract the actual header file path from cpp output.
|
|
[Feature #19102]https://github.com/ruby/erb/commit/ecebf8075c
|
|
[Feature #19102]https://github.com/ruby/erb/commit/38c6e182fb
|
|
https://github.com/ruby/erb/commit/ac9b219fa9
|
|
The ELTS_SHARED flag is generic, so we should prefer to use the flags
specific of the type (STR_SHARED for strings and RARRAY_SHARED_FLAG
for arrays).
|
|
`HAVE_` macros by autoconf are defined as 1.
https://github.com/ruby/bigdecimal/commit/cd35868aa6
|
|
https://github.com/ruby/digest/commit/cce9ada85e
|
|
|
|
So different timestamps for different paths will be used. Extentions
paths in bundled gems contain `ruby_version`, which includes the ABI
version, and the same timestamp file for different paths resulted in
build failures when it changed.
|
|
(https://github.com/ruby/stringio/pull/36)
Treats:
- #each_codepoint
- #gets
- #readline (shows up in doc for module IO::generic_readable, not class
StringIO)
- #each_line
https://github.com/ruby/stringio/commit/659aca7fe5
|
|
Co-Authored-By: Aaron Patterson <tenderlove@ruby-lang.org>
Notes:
Merged: https://github.com/ruby/ruby/pull/6595
|