From 5656067ece3e5c26ba8020e93495286ff588e849 Mon Sep 17 00:00:00 2001 From: roshan84ya Date: Thu, 20 Aug 2026 01:07:25 +0530 Subject: [PATCH] Release 1.4.0-beta.2 Six fixes since beta.1, all under the 1.4.0 line: - #190 permanent public type names + readable large-union names (+ manifest) - #191 reachability sweep drops orphan records - #178 no orphan JsFn.res after the sweep - #198/#190 degrade public-identity collision instead of crashing (unblocks blend 0.0.38-beta.1) - #200 cap bloated anonymous @unboxed union names Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 21 +++++++++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24e3af4..896b15d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,27 @@ This project adheres to [Semantic Versioning](https://semver.org/). ## [Unreleased] +## [1.4.0-beta.2] — 2026-08-20 + +> **Upgrading: regenerate your bindings, and commit `.bindgen-manifest.json` alongside them.** #190 +> introduces a permanent public-name registry — the manifest is now the source of truth that keeps your +> generated type names stable across future bindgen upgrades, so check it in next to the generated code +> and regenerate through it. Two name changes land in this beta and only at the affected type sites, with +> no runtime change: +> +> 1. **Large named `@unboxed` unions follow their upstream alias** (#190). A named union with more than +> four runtime members now emits its source name (`StatusCode` → `statusCode`) instead of enumerating +> every member (hono's `v100OrV101Or…OrV511OrV1`). The previous structural name stays as a transparent +> compatibility alias, so existing call sites keep compiling. +> 2. **Bloated anonymous `@unboxed` union names are capped** (#200). An anonymous union mixing dozens of +> string literals (csstype `Property.*`, surfaced by blend `0.0.38-beta.1`) no longer produces a name up +> to 2,453 chars; past a length cap it degrades to a readable prefix + shape hash. Cosmetic only — the +> emitted `@unboxed` type body is unchanged. +> +> This beta also **unblocks generation on the newest blend** (`0.0.38-beta.1`): a public-identity collision +> that previously aborted the whole run with zero output now degrades to a stable manifest id and a warning +> (#190 follow-up). If you pin blend, you can move to `0.0.38-beta.1` after regenerating. + ### Fixed - **Anonymous large `@unboxed` union names no longer bloat to 2,000+ chars** (#200) — a union that mixes diff --git a/package-lock.json b/package-lock.json index 145362e..adab92e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@juspay/rescript-bindgen", - "version": "1.4.0-beta.0", + "version": "1.4.0-beta.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@juspay/rescript-bindgen", - "version": "1.4.0-beta.0", + "version": "1.4.0-beta.2", "license": "MIT", "dependencies": { "typescript": "^6.0.3" diff --git a/package.json b/package.json index 6d793db..bf4139d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@juspay/rescript-bindgen", - "version": "1.4.0-beta.1", + "version": "1.4.0-beta.2", "description": "Deterministic TypeScript -> ReScript binding generator. Reads .d.ts via the TypeScript compiler API and emits type-safe @react.component bindings — no AI, no %identity.", "type": "module", "main": "src/index.mjs",