makiri 0.1.0-aarch64-linux → 0.2.0-aarch64-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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fcf60c292fa86d65fe6a558f855e599670aef06bf69869031803553e10db294a
4
- data.tar.gz: 9b3b557356d79818c13cd1e2cdda551951286f3065fa5b86a5f049f87930d3f8
3
+ metadata.gz: 98834843b01646be14385e918a5bee9f7c7d86caa4807142b4f4b341bdb9ce1f
4
+ data.tar.gz: a249f288b3de1c130ed255ae0c4449267489f3eae7d08a74eff92c0d75c9116b
5
5
  SHA512:
6
- metadata.gz: a8fd30feac452aeed9f9e3f11809375cffc1a30c2e812f4816705443bb0cdb54aa4dbca4f07458aa9fee88282d2483d6fd0c44a568c0971f23ba68219b2b56c6
7
- data.tar.gz: b2b4f0183f18d04e503627ab38a7a13fd0a8ff5dc175cfee1ccb68b2eaa80999d6d0c5a664c992cf1d1fd0d2fa3fd57c74b9a03662b09e037e85cb196c1083b4
6
+ metadata.gz: a87555ee4721bf1d09cf29598961d7098b82147d1ac1cf9a22db13f34de8ddc7646c233a1ace508aad7840dab289b46ffb60379aed21ef953a15e89e06db15cf
7
+ data.tar.gz: a331f795706d65d12ceb08c3bb9d121c60b3e737ee91f6f7a14789dfa3c364409f85d0ef31a0d60a47f7e1686b4107baebefd15328509677d08605b102b0f0bb
@@ -18,7 +18,7 @@ on:
18
18
  workflow_dispatch:
19
19
  inputs:
20
20
  publish_to_rubygems:
21
- description: "Push the built gems to RubyGems (requires the RUBYGEMS_API_KEY secret)"
21
+ description: "Push the built gems to RubyGems (via Trusted Publishing / OIDC)"
22
22
  type: boolean
23
23
  default: false
24
24
 
@@ -197,12 +197,19 @@ jobs:
197
197
  gh release upload "${GITHUB_REF_NAME}" dist/*.gem --repo "${GITHUB_REPOSITORY}" --clobber
198
198
 
199
199
  # --- optional: publish to RubyGems (manual, opt-in, never on a tag push) ----
200
+ # Auth is RubyGems Trusted Publishing (OIDC): no stored API key, short-lived
201
+ # token, MFA-compatible. Configure a matching Trusted Publisher on RubyGems.org
202
+ # for this gem: owner=takahashim, repo=makiri, workflow=release.yml, and set its
203
+ # Environment to "rubygems" (matching `environment:` below).
200
204
  publish:
201
205
  name: Publish to RubyGems
202
206
  needs: [source-gem, native-gem]
203
207
  if: github.event_name == 'workflow_dispatch' && inputs.publish_to_rubygems
204
208
  runs-on: ubuntu-latest
205
- environment: rubygems # add a protection rule here for a manual approval gate
209
+ environment: rubygems # add a Required-reviewers protection rule for an approval gate
210
+ permissions:
211
+ contents: read
212
+ id-token: write # OIDC identity token for Trusted Publishing
206
213
  steps:
207
214
  - uses: ruby/setup-ruby@v1
208
215
  with:
@@ -212,11 +219,10 @@ jobs:
212
219
  pattern: gem-*
213
220
  merge-multiple: true
214
221
  path: dist
222
+ - name: Configure RubyGems credentials (OIDC trusted publishing)
223
+ uses: rubygems/configure-rubygems-credentials@762a4b77c3300434bb57c7ce80b20e36231927aa # v2.0.0
215
224
  - name: gem push
216
- env:
217
- GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
218
225
  run: |
219
- test -n "$GEM_HOST_API_KEY" || { echo "RUBYGEMS_API_KEY secret is not set"; exit 1; }
220
226
  for g in dist/*.gem; do
221
227
  echo "Pushing $g"
222
228
  gem push "$g"
data/CHANGELOG.md CHANGED
@@ -7,6 +7,69 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.0] - 2026-06-04
11
+
12
+ ### Added
13
+
14
+ * `Element#tag_name` (DOM `tagName`) — the qualified name uppercased for an
15
+ HTML element in an HTML document (`"DIV"`), keeping the original case for
16
+ SVG/MathML; `nil` for non-elements. Complements `#name`, which stays the
17
+ lowercase qualified name.
18
+ * `ProcessingInstruction#target` (DOM `target`) — a PI's target name; `nil` for
19
+ other node kinds. Its data is read via `#content`/`#text`.
20
+ * `Document#create_processing_instruction(target, data)` (DOM
21
+ `createProcessingInstruction`) and `Document#create_document_fragment` (DOM
22
+ `createDocumentFragment`, an empty fragment to build up programmatically —
23
+ unlike `#fragment` / `DocumentFragment.parse`, which parse HTML). Both produce
24
+ a detached node owned by the document; PI creation fails closed when the data
25
+ contains the `?>` terminator (matching the DOM constraint). (DOM
26
+ `createCDATASection` is intentionally not provided: per WHATWG DOM it throws on
27
+ an HTML document, which is the only kind Makiri produces.)
28
+ * `Node#{namespace_uri, prefix, local_name}` — the WHATWG DOM per-node
29
+ namespace accessors on `Element` and `Attribute` (`nil` on other node kinds).
30
+ `namespace_uri` resolves an element's namespace from its node (so an HTML
31
+ element is the XHTML namespace `http://www.w3.org/1999/xhtml`, not `nil` — the
32
+ DOM-faithful value browsers and `namespace-uri()` return; SVG/MathML get their
33
+ own URI), and agrees byte-for-byte with the `namespace-uri()` XPath function.
34
+ For attributes it is `nil` unless prefixed, where it returns the parser-assigned
35
+ foreign-content namespace (`xlink`/`xml`/`xmlns`). `prefix` is the prefix
36
+ segment of the qualified name (`nil` for the usual unprefixed HTML5 case), and
37
+ `local_name` is the name without that prefix. Previously a node's namespace was
38
+ reachable only through XPath (`namespace-uri()`/`local-name()`).
39
+ * `Node#clone_node(deep = false)` — a copy of the node, owned by the same
40
+ document and detached from any parent (the DOM `cloneNode`, whose `deep`
41
+ defaults to `false` — a missing/`nil`/`false` argument is a shallow clone; a
42
+ truthy one copies the subtree). Built on the same `import_node` +
43
+ `<template>`-content fixup the fragment parser uses, so a deep-cloned
44
+ `<template>` keeps its contents. Fails closed: a failed import raises rather
45
+ than returning a partial node.
46
+ * `Document#import_node(node, deep = false)` — a copy of `node` owned by the
47
+ receiver document (the DOM `importNode`, whose `deep` likewise defaults to
48
+ `false`). Unlike `Node#clone_node`, the copy is owned by the target rather
49
+ than the node's own document, so it is the way to bring a node across
50
+ documents (Makiri never moves a node between arenas); the source is left
51
+ untouched. Same import + `<template>`-content fixup as `clone_node`, and fails
52
+ closed on a failed import.
53
+ * `Node#pointer_id` — the underlying `lxb_dom_node_t` pointer as an Integer,
54
+ matching `Nokogiri::XML::Node#pointer_id`. Shares the value `#hash`/`#eql?`
55
+ are built on, so it is a stable, Nokogiri-compatible identity key for
56
+ consumers (e.g. wrapper caches) that key nodes by pointer. Stable for a
57
+ node's lifetime; an address may be reused after a node is freed (same caveat
58
+ as Nokogiri).
59
+
60
+ ### Changed
61
+
62
+ * Source gem: drop the Lexbor trees the build never compiles
63
+ (`test`/`utils`/`examples`/`benchmarks`/`wasm`/`packaging`; each is behind an
64
+ `IF(LEXBOR_BUILD_*)` guard and we build with them OFF), roughly halving the
65
+ packaged file count (~1115 → ~566). Precompiled gems are unaffected.
66
+
67
+ ### Internal
68
+
69
+ * XPath: build the per-context compiled-AST cache key with `mkr_strndup`
70
+ (the expression is a `verified_text`, so its length is known) instead of
71
+ `mkr_strdup`, avoiding a `strlen` over already-length-bounded bytes.
72
+
10
73
  ## [0.1.0] - 2026-06-02
11
74
 
12
75
  First public release. An HTML5 parser, a native XPath 1.0 query engine, and CSS
@@ -98,5 +161,6 @@ libxml2 / libxslt dependency at any layer**.
98
161
  domxpath, CSS differential vs `Nokogiri::HTML5`). GitHub Actions CI across
99
162
  Ruby 3.2–4.0 × Ubuntu/macOS plus a sanitizer job.
100
163
 
101
- [Unreleased]: https://github.com/takahashim/makiri/compare/v0.1.0...HEAD
164
+ [Unreleased]: https://github.com/takahashim/makiri/compare/v0.2.0...HEAD
165
+ [0.2.0]: https://github.com/takahashim/makiri/compare/v0.1.0...v0.2.0
102
166
  [0.1.0]: https://github.com/takahashim/makiri/releases/tag/v0.1.0
Binary file
Binary file
Binary file
Binary file
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Makiri
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: makiri
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - takahashim