makiri 0.7.0-x86_64-linux → 0.8.0-x86_64-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/valgrind.yml +12 -1
- data/CHANGELOG.md +10 -0
- data/Rakefile +34 -2
- data/lib/makiri/3.2/makiri.so +0 -0
- data/lib/makiri/3.3/makiri.so +0 -0
- data/lib/makiri/3.4/makiri.so +0 -0
- data/lib/makiri/4.0/makiri.so +0 -0
- data/lib/makiri/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: aaa0673601c9e4b858564d196471db5d338b63d736b26847487e91af618ac19a
|
|
4
|
+
data.tar.gz: 7bfb1ffe5cfac89c2e2864910a446cd59627a7b80c61bf9a914cf52d3cc86c1d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1c48b07e6afedb7af3612161e3bc1e8d6cd080144b319eaaeb846288046e333ddd7592ea32048b11569cfacc0fd54305ccf470c0649a0beb270d47f00009d21e
|
|
7
|
+
data.tar.gz: 9271acc96f1e6a185366fc13ea4ad14574b6af835a00d6240664e5f9f49014f95d5076fd8a161b204e8825d60de43332d8e5ee544079b9c750eba2355b0ba20d
|
|
@@ -24,11 +24,16 @@ jobs:
|
|
|
24
24
|
# (intra-arena overflows). Runs on Linux because Valgrind is x86_64/amd64
|
|
25
25
|
# Linux only.
|
|
26
26
|
valgrind-memcheck:
|
|
27
|
-
name: Valgrind memcheck (Ruby ${{ matrix.ruby }})
|
|
27
|
+
name: Valgrind memcheck (Ruby ${{ matrix.ruby }}, shard ${{ matrix.shard }}/4)
|
|
28
28
|
runs-on: ubuntu-latest
|
|
29
29
|
timeout-minutes: 360
|
|
30
30
|
env:
|
|
31
31
|
BUNDLE_WITH: valgrind
|
|
32
|
+
# Shard the suite across the matrix below: 4 parallel jobs each memcheck a
|
|
33
|
+
# quarter of the spec files, so the whole suite finishes in ~1/4 the
|
|
34
|
+
# wall-clock with no loss of coverage (each shard is balanced by file size).
|
|
35
|
+
VALGRIND_SHARDS: "4"
|
|
36
|
+
VALGRIND_SHARD_INDEX: ${{ matrix.shard }}
|
|
32
37
|
# These heavy jobs verify memory discipline (uninit values, intra-arena
|
|
33
38
|
# overflows, use-after-move), not the property space - so the full
|
|
34
39
|
# 300-iteration PBT sweep (already run by the normal CI matrix) is
|
|
@@ -37,10 +42,16 @@ jobs:
|
|
|
37
42
|
# keeping the run tractable.
|
|
38
43
|
PBT_COUNT: "15"
|
|
39
44
|
CSS_PBT_COUNT: "15"
|
|
45
|
+
# --track-origins roughly doubles memcheck's runtime and only adds an origin
|
|
46
|
+
# backtrace to a finding (the finding itself is still reported without it).
|
|
47
|
+
# Drop it on the frequent post-merge push gate to halve its runtime; keep it
|
|
48
|
+
# for the thorough nightly / manual runs, where the backtrace aids triage.
|
|
49
|
+
VALGRIND_TRACK_ORIGINS: ${{ github.event_name == 'push' && 'no' || 'yes' }}
|
|
40
50
|
strategy:
|
|
41
51
|
fail-fast: false
|
|
42
52
|
matrix:
|
|
43
53
|
ruby: ["3.4"]
|
|
54
|
+
shard: [0, 1, 2, 3] # keep in sync with VALGRIND_SHARDS above
|
|
44
55
|
|
|
45
56
|
steps:
|
|
46
57
|
- name: Checkout (with vendored Lexbor submodule)
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.8.0] - 2026-07-12
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
* `Document#import_node` (DOM `importNode` / `adoptNode`) now imports an HTML
|
|
8
|
+
element whose name is a valid DOM name but not a well-formed XML QName (e.g.
|
|
9
|
+
`":good:times:"`, `"x<"`, `"0:a"`) instead of raising. Such an element is not
|
|
10
|
+
XML-serializable (`#to_xml` raises). An element carrying a similarly lenient
|
|
11
|
+
attribute name is still rejected.
|
|
12
|
+
|
|
3
13
|
## [0.7.0] - 2026-07-11
|
|
4
14
|
|
|
5
15
|
### Added
|
data/Rakefile
CHANGED
|
@@ -88,7 +88,12 @@ begin
|
|
|
88
88
|
"--error-limit=no",
|
|
89
89
|
"--trace-children=yes", # spec processes may fork
|
|
90
90
|
"--undef-value-errors=yes", # the point of this job (ruby_memcheck defaults to =no)
|
|
91
|
-
|
|
91
|
+
# Origin tracking (where an uninitialised value came from) roughly DOUBLES
|
|
92
|
+
# memcheck's run time. It is a diagnostic aid, not a detection capability -
|
|
93
|
+
# memcheck still reports the uninitialised USE without it - so the frequent
|
|
94
|
+
# post-merge push gate turns it off (VALGRIND_TRACK_ORIGINS=no) to run in
|
|
95
|
+
# ~half the time, while the nightly / manual runs keep it on for the backtrace.
|
|
96
|
+
"--track-origins=#{ENV.fetch('VALGRIND_TRACK_ORIGINS', 'yes')}",
|
|
92
97
|
"--leak-check=no", # leaks are `rake leaks`' job, not this one
|
|
93
98
|
],
|
|
94
99
|
)
|
|
@@ -96,7 +101,34 @@ begin
|
|
|
96
101
|
namespace :spec do
|
|
97
102
|
desc "Run the spec suite under Valgrind memcheck (ruby_memcheck; needs the " \
|
|
98
103
|
":valgrind bundler group and the valgrind binary)"
|
|
99
|
-
RubyMemcheck::RSpec::RakeTask.new(valgrind: :compile)
|
|
104
|
+
RubyMemcheck::RSpec::RakeTask.new(valgrind: :compile) do |t|
|
|
105
|
+
# Let spec_helper skip :slow examples (fail-closed limit tests whose sheer
|
|
106
|
+
# volume dominates memcheck without adding memory-safety coverage).
|
|
107
|
+
ENV["VALGRIND"] = "1"
|
|
108
|
+
|
|
109
|
+
# Optional sharding for CI wall-clock: with VALGRIND_SHARDS=N (>1) the spec
|
|
110
|
+
# files are partitioned into N groups and this run does only group
|
|
111
|
+
# VALGRIND_SHARD_INDEX, so N parallel matrix jobs cover the whole suite in
|
|
112
|
+
# ~1/N the time WITHOUT dropping any coverage. Files are packed
|
|
113
|
+
# largest-first onto the currently-lightest shard (greedy LPT by file size,
|
|
114
|
+
# a proxy for runtime), so the slowest shard - which sets wall-clock - is
|
|
115
|
+
# balanced rather than left to name order. Deterministic, so every shard
|
|
116
|
+
# computes the same partition and takes its own index. Default N=1 = the
|
|
117
|
+
# whole suite (local `rake spec:valgrind`).
|
|
118
|
+
shards = Integer(ENV.fetch("VALGRIND_SHARDS", "1"))
|
|
119
|
+
if shards > 1
|
|
120
|
+
index = Integer(ENV.fetch("VALGRIND_SHARD_INDEX", "0"))
|
|
121
|
+
buckets = Array.new(shards) { { load: 0, files: [] } }
|
|
122
|
+
# sort by (size desc, name) so the packing is fully deterministic across
|
|
123
|
+
# shards regardless of Array#sort stability.
|
|
124
|
+
Dir["spec/**/*_spec.rb"].sort_by { |f| [-File.size(f), f] }.each do |f|
|
|
125
|
+
b = buckets.min_by { |x| x[:load] }
|
|
126
|
+
b[:files] << f
|
|
127
|
+
b[:load] += File.size(f)
|
|
128
|
+
end
|
|
129
|
+
t.pattern = buckets.fetch(index)[:files]
|
|
130
|
+
end
|
|
131
|
+
end
|
|
100
132
|
end
|
|
101
133
|
rescue LoadError
|
|
102
134
|
# ruby_memcheck not installed (optional :valgrind group absent) - skip the task.
|
data/lib/makiri/3.2/makiri.so
CHANGED
|
Binary file
|
data/lib/makiri/3.3/makiri.so
CHANGED
|
Binary file
|
data/lib/makiri/3.4/makiri.so
CHANGED
|
Binary file
|
data/lib/makiri/4.0/makiri.so
CHANGED
|
Binary file
|
data/lib/makiri/version.rb
CHANGED