leptris 1.9.115.1 → 1.9.118.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2274e2eb3e838ef9fdf5ac4e575c0784725e1f08882b0875b0122193964c122c
4
- data.tar.gz: bb5a08183c2c8a34283b8e1e48b9416f6ef809f6d5cf50fa5c5eaf705dc7ff80
3
+ metadata.gz: 163efcd5264a70cbd74204b74981f9f5267f0b30ee6c86e3709b20e043046e34
4
+ data.tar.gz: 5dafbc1093a2679d9331cb704f695ca051f047c72ce301a0ac68c0a3d893d802
5
5
  SHA512:
6
- metadata.gz: b1b50e672581bd5b3937f1ca46a1e87a7e75ebe4d515378e5fe9a33b750872512a5a2c8b0f7f11539aaa0f888584f6f595c5074e918fec364a71555994dabe91
7
- data.tar.gz: ddf2520c0de140ab2a668116e3424c239735463c97fcdddb8055ce9c561a25560ae05e6ae0d30eb08f9ac34d181cf160c2b077143f32447e027e05c00912fe23
6
+ metadata.gz: 8ea54c8480c128025cbadf96a76cf4e136214fcafdfe76a4535f8479cfb1aeedecc9a6fdb2da05abd2db87d4f05c4cf56e5769acf4dddfb22240d8200bf03b6b
7
+ data.tar.gz: 2fa7498af2f234831dcc3d198ef0eaf55fda80f85cce3b148448eee31aa1b45ad49800df7d4a4caa478d5c8ab209e13f0372b8a9ec2c814f8737856ce3eb5794
data/CHANGELOG.md CHANGED
@@ -14,6 +14,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
14
14
  Jing's override rules, `<param>` datatype facets (portable
15
15
  matcher), and schema errors on `leptris_last_error`. Required by
16
16
  the RelaxNG binding (#165).
17
+ ## [1.9.118.0] - 2026-09-09
18
+
19
+ ### Changed
20
+
21
+ - **Lockstep with libleptris 1.9.118** (1.9.116 → 1.9.118; no new
22
+ C surface — audit 270/270): HTML modes record the DOCTYPE
23
+ (1.9.116); structural `<head>`/`<body>` — every WHATWG document
24
+ is `html>[head, body]`, html4 keeps Nokogiri's no-empty-head
25
+ shape (1.9.117); `<template>` placed where the tokenizer meets
26
+ it + explicit head/body honored in place (1.9.118). Corpus:
27
+ WHATWG 623→652, Nokogiri-parity 777→783. Four specs.
28
+
17
29
  ## [1.9.115.1] - 2026-09-09
18
30
 
19
31
  ### Added
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ RSpec::Core::RakeTask.new(:spec)
8
8
  # Pin for `rake compile` and the platform-gem builds. Keep in lockstep
9
9
  # with .github/workflows/build.yml (which calls `rake compile`) and the
10
10
  # CHANGELOG when libleptris releases.
11
- LIBLEPTRIS_VERSION = "1.9.115"
11
+ LIBLEPTRIS_VERSION = "1.9.118"
12
12
  # Vendored alongside libleptris for fn:normalize-unicode (TODO
13
13
  # .restructure/20): built per platform with a RELOCATABLE @rpath
14
14
  # install name, loaded by ffi.rb before libleptris so the
@@ -1,18 +1,22 @@
1
1
  # 21 — #147 option B: TypedData wrapper variant (owner greenlit)
2
2
 
3
- Status: QUEUED (dedicated round)
3
+ Status: PROTOTYPE DONE — hypothesis VALIDATED (114 B/node measured)
4
4
 
5
5
  The greenlight arrived ("proceed with all"); the execution plan,
6
6
  in verification order:
7
7
 
8
- - [ ] Minimal C ext (one file): a TypedData class holding
9
- (pointer, document-ref) with the Node duck surface the hot
10
- paths need installed as a compiled gem.
11
- - [ ] Measure the hypothesis first: held-RSS of a walked tree with
12
- TypedData wrappers vs FFI::Pointer wrappers (predicted
13
- ~28% of the wrapper layer, ~552 kB/doc → ~400 kB/doc).
14
- - [ ] If validated: design the `Node.construct` factory seam to
15
- select wrapper classes per variant (OCP one seam, no
16
- scatter), then the variant gem + platform matrix.
8
+ - [x] Minimal C ext (one file): a TypedData class holding
9
+ (pointer, document-ref) prototype built and measured
10
+ (ext + bench preserved under /tmp/typedproto, /tmp/bench_typed.rb).
11
+ - [x] Measured (100k holders, GC.settled RSS deltas):
12
+ FFI::Pointer-backed 154 B/node vs TypedData 40 B/node —
13
+ **114 B/node saved**, ~40% of the wrapper layer (#147's
14
+ +552 kB/doc ~+330 kB/doc, held 1.57x ~1.2x Nokogiri).
15
+ The mark-function document ref works (no GC-safety loss).
16
+ - [ ] VALIDATED build phase: the `Node.construct` factory seam
17
+ selects wrapper classes per variant (OCP — one seam, no
18
+ scatter), then the variant gem + 9-platform matrix with the
19
+ compiled ext. Multi-round build (new gemspec, ext
20
+ compilation per platform, packaging).
17
21
  - [ ] If NOT validated (win < ~15%): record the negative result on
18
22
  #147 and close option B with data.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Leptris
4
- VERSION = "1.9.115.1"
4
+ VERSION = "1.9.118.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leptris
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.115.1
4
+ version: 1.9.118.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.