Граф коммитов

58865 Коммитов

Автор SHA1 Сообщение Дата
Aaron Patterson e1bf29314f
Fix zero free objects assertion
This commit is to attempt fixing this error:

  http://ci.rvm.jp/results/trunk-gc-asserts@ruby-sky1/2353281

Each non-full heap_page struct contains a reference to the next page
that contains free slots.  Compaction could fill any page, including
pages that happen to be linked to as "pages which contain free slots".

To fix this, we'll iterate each page, and rebuild the "free page list"
depending on the number of actual free slots on that page.  If there are
no free slots on the page, we'll set the free_next pointer to NULL.

Finally we'll pop one page off the "free page list" and set it as the
"using page" for the next allocation.
2019-10-30 17:28:55 -07:00
Hiroshi SHIBATA e08f2e47e3 Also ignore mswin platform 2019-10-31 08:39:48 +09:00
Hiroshi SHIBATA 8540efd342 Ignore test_racc_command with linux platform 2019-10-31 08:39:48 +09:00
Hiroshi SHIBATA 1c03026ea3 Try to run assert_output_unchanged with racc tests 2019-10-31 08:39:48 +09:00
git 5f8795a07b * 2019-10-31 [ci skip] 2019-10-31 00:38:16 +09:00
Alan Wu 4c7f789e94 Allow only one argument for keyword_init struct
```
irb(main):001:0> RUBY_VERSION
=> "2.6.5"
irb(main):002:0> S = Struct.new(:foo, keyword_init: true)
=> S(keyword_init: true)
irb(main):003:0> S.new({foo: 23424}, 234) # I don't think this is intentional
=> #<struct S foo=23424>
irb(main):004:0>
```

Tightening this up should inform users when they are confused about
whether a struct is `keyword_init`.
2019-10-31 00:37:53 +09:00
Hiroshi SHIBATA 6c3ed0d71c
Update the latest versions from upstream repository of racc 2019-10-30 21:36:59 +09:00
Hiroshi SHIBATA e6d611ad37
Regenerate the output results for test fixtures of racc 2019-10-30 21:02:07 +09:00
Hiroshi SHIBATA d3272fcba3
Update the latest structure for racc upstream 2019-10-30 21:00:01 +09:00
Martin Dürst c54635c08b Update Unicode Emoji version from 12.0 to 12.1.
This update does not add any new codepoint assignments, it just
expands the range of emoji codepoint sequences recommended for
public interchange.

Depending on how emoji data files are cached, this commit may
require manual intervention in some build environments
(including some CI systems).
2019-10-30 08:25:45 +09:00
git 92c13380e8 * 2019-10-30 [ci skip] 2019-10-30 00:14:03 +09:00
Aaron Patterson 22dbbbeb32
Compacting the heap can cause GC, so disable it
When we compact the heap, various st tables are updated, particularly
the table that contains the object id map.  Updating an st table can
cause a GC to occur, and we need to prevent any GC from happening while
moving or updating references.
2019-10-29 08:13:38 -07:00
Nobuyoshi Nakada fee5cde00b
Fix tests for CVE-2018-6914
Since the current working directory is not involved in `Tempfile`
and `Dir.mktmpdir` (except for the last resort), it is incorrect
to derive the traversal path from it.  Also, since the rubyspec
temporary directory is created under the build directory, this is
not involved in the target method.  Fixed sporadic errors in
test-spec.
2019-10-29 22:40:41 +09:00
Nobuyoshi Nakada ad4da86669
Check for nonnull attribute in configure 2019-10-29 16:38:15 +09:00
卜部昌平 9195ed18ca Revert "Check for nonnull attribute in configure"
This reverts commit 54eb51d72b.

Windows build failure. See also https://github.com/ruby/ruby/runs/278718805
2019-10-29 16:05:39 +09:00
Yusuke Endoh 7bf51ced55 test/rubygems/test_gem.rb: early failure when there is /tmp/Gemfile
Some test cases in rubygems assume that /tmp/Gemfile does not exist.
If it does, they fail with very difficult-to-understand message:

```
[ 149/2108] TestGemBundlerVersionFinder#test_bundler_version_with_bundle_update_bundler = 0.00
  1) Failure:
TestGemBundlerVersionFinder#test_bundler_version_with_bundle_update_bundler [/home/mame/work/ruby/test/rubygems/test_gem_bundler_version_finder.rb:38]:
Expected Gem::Version.new("2.0.2") to be nil.
```

I spent one hour to debug this issue.  To prevent the same accident,
this change makes the test suite stop when /tmp/Gemfile explicitly.
2019-10-29 14:40:26 +09:00
Yusuke Endoh 79a7fd9120 Revert "Revert "[ruby/rdoc] Use omit of test-unit instead of skip of minitest""
This reverts commit ca5812fe45.

Now tool/lib/minitest provides "omit", so it should work.
2019-10-29 13:16:31 +09:00
Yusuke Endoh 1820aeeeb2 tool/lib/minitest/unit.rb: add "omit" as an alias to "skip"
According to rdoc, test-unit provides omit instead of skip.
This is a compatibility layer to make it work with both test-unit and
tool/lib/minitest.
2019-10-29 13:15:09 +09:00
Yusuke Endoh ca5812fe45 Revert "[ruby/rdoc] Use omit of test-unit instead of skip of minitest"
This reverts commit b4da6fc1c2.

`make test-all` uses minitest, which led to "undefined method `omit'"
2019-10-29 12:57:31 +09:00
aycabta 9525541d02 [ruby/rdoc] Use Dir.glob to convert short path of Dir.tmpdir to long path
https://github.com/ruby/rdoc/commit/ba16e44572
2019-10-29 12:34:44 +09:00
aycabta c8ce37d427 [ruby/rdoc] Support different drive latters in include paths
https://github.com/ruby/rdoc/commit/946d2592e2
2019-10-29 12:34:44 +09:00
aycabta b4da6fc1c2 [ruby/rdoc] Use omit of test-unit instead of skip of minitest
https://github.com/ruby/rdoc/commit/1c5bf2ae1d
2019-10-29 12:34:44 +09:00
Nobuyoshi Nakada 54eb51d72b
Check for nonnull attribute in configure 2019-10-29 12:12:07 +09:00
John Hawthorn b86e5c9fec Clang can also use C call cache
Previously this was restricted to only gcc because of the
GCC_VERSION_SINCE check (which explicitly excludes clang).

GCC 3.3.0 is quite old so I feel relatively safe assuming that all
reasonable versions of clang support this.
2019-10-29 12:07:44 +09:00
Lourens Naudé 85b88c1d89 Let the arrays for the singleton and instance method reflection helpers be initialized to the methods count 2019-10-29 11:32:46 +09:00
Lourens Naudé fecaa6e946 Let the backtrace array constructed in backtrace_collect be initialized with the size already given 2019-10-29 11:32:09 +09:00
Lourens Naudé 0095362918 Right size the vm_default_params hash 2019-10-29 11:31:50 +09:00
Lourens Naudé 0e68913f81 Right size the Enumerator internal lazy_use_super_method hash 2019-10-29 11:31:34 +09:00
Lourens Naudé 4480d68931 Right size the compile option hash 2019-10-29 11:31:15 +09:00
Lourens Naudé 65744fb19e Right size the iseq coverage branches tmp array - initializes with 5 elements 2019-10-29 11:30:49 +09:00
aycabta 0547627705 Version 0.0.4 2019-10-29 10:35:43 +09:00
Nobuyoshi Nakada b4229c0a90
Restore `in_kwarg` flag properly 2019-10-29 08:58:39 +09:00
Aaron Patterson da3774e5eb
Revert "Protect finalizer references during execution"
This reverts commit 60a7f9f446.

We can't have Ruby objects pointing at T_ZOMBIE objects otherwise we get
an error in the GC.  We need to find a different way to update
references.
2019-10-28 16:14:50 -07:00
Aaron Patterson 60a7f9f446
Protect finalizer references during execution
When we run finalizers we have to copy all of the finalizers to a new
data structure because a finalizer could add another finalizer and we
need to keep draining the "real" finalizer table until it's empty.
We don't want Ruby programs to mutate the finalizers that we're
iterating over as well.

Before this commit we would copy the finalizers in to a linked list.
The problem with this approach is that if compaction happens, the linked
list will need to be updated.  But the GC doesn't know about the
existence of the linked list, so it could not update references.  This
commit changes the linked list to be a Ruby array so that when
compaction happens, the arrays will automatically be updated and all
references remain valid.
2019-10-28 14:50:36 -07:00
Aaron Patterson 6147fa82a9
Fix continuation mark / compact 2019-10-28 13:09:10 -07:00
Aaron Patterson bbf3de22b6
Pin labels during disassembly
We need to ensure that labels are pinned while disassembling.  If the
compactor runs during disassembly, references to these labels could go
bad, so this commit just ensures that the labels can't move until we're
done.
2019-10-28 12:15:05 -07:00
Aaron Patterson 339a891c7d
Pin keys of this st_table 2019-10-28 11:47:09 -07:00
git a51583b678 * 2019-10-29 [ci skip] 2019-10-29 03:19:25 +09:00
Aaron Patterson aec16b7540
Marshal is calling functions that should pin things 2019-10-28 11:18:56 -07:00
Nobuyoshi Nakada 6e0b40af3d Try out-of-place build 2019-10-28 22:05:57 +09:00
Nobuyoshi Nakada 48f982aba7
test-bundled-gems.rb: fixed for out-of-place build 2019-10-28 19:14:38 +09:00
Nobuyoshi Nakada 07b5fec008
Clean mjit and timestamp directories 2019-10-28 18:15:12 +09:00
Kazuhiro NISHIYAMA 3e83f1f00a Add more matrix info to slack payload 2019-10-28 16:53:02 +09:00
卜部昌平 cc5580f175 fix bug in keyword + protected combination
Test included for the situation formerly was not working.
2019-10-28 14:38:05 +09:00
git a72cb6b11d * 2019-10-28 [ci skip] 2019-10-28 12:20:36 +09:00
Koichi Sasada d8d581bfc4 add assertion for mutex_lock.
After do_mutex_lock(mutex), the mutex should be owned by the current
thread. Adding an assertion for this assumption.
2019-10-28 12:19:18 +09:00
Kazuhiro NISHIYAMA 85d966af21 Add ubuntu-16.04 to matrix of GitHub Actions 2019-10-27 20:19:04 +09:00
zverok 417369e0cd Improve Enumerator.produce docs
* Add to NEWS;
* Add examples of while-alike cycles with practical tasks.
2019-10-27 18:57:39 +09:00
Jeremy Evans aba23d83f2 Fix documentation for Fiber#transfer [ci skip]
Fiber#transfer prevents calling Fiber#resume on the receiver of the
transfer method, not the fiber calling transfer.

Transfering back to a fiber does not allow later calling resume on
the fiber.  Once transfer has been called on a fiber, you can never
call resume on the fiber.

Calling resume on a transferred fiber is not a double resume error,
it is a different FiberError (cannot resume transferred Fiber).

For details on the differences between transferred fibers and
regular fibers, see Sasada-san's RubyKaigi 2017 presentation (in
short, Fiber#transfer is for coroutine, Fiber#resume is for
semi-coroutine).
2019-10-26 18:41:35 -07:00
Benoit Daloze 4fe89e0821 Add entry for Feature #13083 in NEWS
* Move Unicode changes under String / Unicode for consistency with the rest.
2019-10-26 22:33:43 +02:00