Repository navigation
Bit 0.33.0
·
1475 commits
to 945fa57bcecbb5446737669d43fd8eae3b0f7caa
since this release
Bit 0.33.0
Breaking changes
appendchecks what you add.append(dst, src)with a whole slicesrcis an error: writeappend(dst, ...src)to add its elements. Adding a value of a different number type, such as anintto a[]byte, is an error: convert it first (byte(v)).std/quicand HTTP/3 (https+h3://) verify the server's certificate against the system trust store by default, asstd/tlsandhttps://already did. To trust a private CA, pass aTlsConfig:dialQuicTls,h3DialTls, orgetTls/requestTls/newClientTlswith anhttps+h3://URL.TlsConfig.serverNamenow overrides the name a QUIC dial checks, as it does for TLS over TCP.
Features
- Map literals
{k: v, ...}, static methods, generic argument explosion and dead-parameter/dead-method elimination are on by default. @jsonclasses andfind<T>row mapping no longer needJson,JsonEntryorRowsimported; any import fromstd/jsonorstd/sqlis enough.jsonSchema<T>()describes classes, enums, optionals, nested and generic types as JSON Schema.bit prof <file.prof>renders astd/profprofile from the installed toolchain; samples outside the program show on their own row.pkg/web0.8.0:App.openApi()renders an OpenAPI 3.1 document from the real route table.pkg/jobs0.1.0: background jobs with@job,register<T>andenqueue<T>.- Documentation: The Bit Book (33 chapters building one app), a single Get started page, and a Tools section on bitlang.org.
Notable fixes
- The macOS monotonic clock could divide by zero when two threads read it for the first time at once (seen under
BIT_GC=stress). - x86_64: an
asmblock's pinned or clobbered callee-saved registers are saved and restored. - A method's receiver type parameter no longer stands in for the callee's own, so
Option<T>results substitute correctly.
Fixes
- fix(docs): point the two fresh-append citations at slicesappendfresh.bit (18cd91d)
Performance
- perf(compiler): prove loop-accumulator appends unshared, append in place (51faa09)
Compiler
- compiler:
@jsonaccepts a payload-free enum field, toJson/__jsonAppend only (858d958) - jsonSchema: move E0172 to E0173, main took E0172 for static fn (b3433fc)
- compiler: import wiring for cross-module jsonSchema calls (d288a4b)
- compiler: jsonSchema() gives a cross-module nested class a $defs entry (26a4e77)
- flip generic explode on unconditionally, drop the BIT_STRING_EXPLODE escape (5a3203a)
- Flip BIT_DCE_PARAMS and BIT_DCE_METHODS on unconditionally (a181118)
- Regenerate 2 selfcheck IR pins for unconditional block-param pruning (2b88e37)
- Revert ": flip generic explode on unconditionally, drop the BIT_STRING_EXPLODE escape" (d1db577)
- Scope correction: default BIT_DCE_PARAMS/BIT_DCE_METHODS ON, keep escape hatch (c84eabb)
- BIT_GENERIC_EXPLODE default ON (=0 escape until the 0.33.0 repin) (a994be3)
- Default BIT_MAPLIT and BIT_STATIC_METHODS ON, forced ON for the stage0 diff family (c949c0e)
- MUTATION (not for merge): revert the savedGpr fix to prove the golden case catches it (12dc13f)
- Revert "MUTATION (not for merge): revert the savedGpr fix to prove the golden case catches it" (6e0a796)
- classjsonschemageneric.bit collects jsonSchema generic forwarding, mirroring (8334280)
- optappendfield: prove field-held append accumulators unshared module-wide (6dca325)
- classjsonschemagenericretarget.bit validates + retargets jsonSchema generic-forwarding ledger entries, mirroring the classjsondecodegenericretarget.bit (dbb9f8c)
- wire jsonSchema generic-need collection into classjsonschemacall.bit and synthtext.bit's SynthPlan (92ee109)
- optappendfield: own fields past pops, literal inits and guarded RMW reads (9183661)
- optappendborrow: a call that only borrows a local accumulator is not an escape (707b910)
- optappendfield: an owned field's one escape takes a header copy (2528b04)
- optappendfield: calls to calm functions and polls stop separating a field read (d79c794)
- Re-point doc paths the site restructure moved (tools/packages, development/iterator-trait, development/lint-*) (e6572d0)
- compiler: ship
bit prof <file.prof>for the release binary (d02be75) - compiler/prof: a sample outside every function's code is its own row, not the last symbol's (c5780f8)
Runtime
- runtime/park/darwin: parkMonoNs divides only by a timebase pair it checked, so a half-published cache cannot divide by zero (6758169)
Standard library
- stdlib/quic: reply CONNECTION_CLOSE(CONNECTION_REFUSED) instead of dropping a refused Initial (6484664)
- stdlib/http/h3shutdown.test.bit: fix stale comment about the mid-drain dial (7447e56)
- quic: verify server certificates by default (db86647)
- quic/http: fix h3 SNI override and requestTls's missed h3 route (dd9dc35)
Tests
- fix 6 spec/SPEC.md line-number citations shifted by the insertion (73c3925)
- compiler: jsonDecode support for payload-free enum fields (39ffa2b)
- compiler: jsonSchema schema-builder, call-site rewrite and stdlib declaration (d7bf78d)
- fix fmtcitationsmdsection.bit citation shifted +1 by the rebase onto main (1e5bbe9)
- compiler: transitive $defs/$ref closure for jsonSchema (55e89fa)
- jsonSchema: close the epic, SPEC accuracy fix, byte-identical proof (026e6c4)
- std/json: jsonSchema field validation attributes as x-bit-attrs (6edaf55)
- reword three historical BIT_STRING_EXPLODE mentions after the flag's deletion (5b5a620)
- Regenerate 4 golden IR fixtures for unconditional block-param pruning (f8f937d)
- flip BIT_TABLEDESC_KNOWNATTR/BIT_STATIC_CONST on, migrate the enum type-assert test into the corpus (5aa7520)
- Revert ": reword three historical BIT_STRING_EXPLODE mentions after the flag's deletion" (777cf2c)
- checkercases: re-point two SPEC.md citations that the rollout-paragraph removal shifted (3f0b32b)
- x64: save callee-saved GPRs an asm block pins or clobbers (7383f48)
- Fix foreignTypeDeclParam to scan every module, not just the caller's own (46b6d13)
- golden census: dRun 552, and each added one run case against the same 550 base (eb99d42)
- rollout-flip fallout - DCE masking on two probes, re-derived benchgate/gcretention baselines, split diffdump under 800 lines (5b8e501)
- fmtcitationsmd: re-point the match-binder-arity citation to the sentence's current line (6d46043)
- close remaining
@jobcoverage - checkercases, golden case, docs, SPEC accuracy (b3e1745) - fmtcitationsmd: follow the match-binder-arity sentence to SPEC.md:3953 after the §10.5 edit (d6c5d0b)
- golden + checkercases fixtures for jsonSchema generic-forwarding (7302b01)
- SPEC.md documents jsonSchema's generic-forwarding path (2ac95ef)
- Fix: port append's element-type assignability, closing the []u8-slice miscompile (7ac50d8)
- test-docs: resolve a page's against pkg/ (268c724)
- test: lint_append_param_selfowned appends a byte, not an int, now that append checks the element type (74ebe66)
- Sweep now-unneeded Json/JsonEntry/Rows imports across stdlib/pkg/docs/tests (cc45ad7)
Documentation
- web: add Route.docs, requestBody()/responds() and App.openApi() forward (23bdc2d)
- web: render an OpenAPI 3.1 document from an App's real routes (5a7f0d4)
- web: sort openApi() route rows in place, not through std/sort (baede43)
- web: split statusDescription() to fit complexity 10, apply bit fmt (c6b62c7)
- web: fix openapi.md's doctest blocks (f47b6a2)
- web: target OpenAPI 3.1.0 for maximum tool compatibility (835da7c)
- pkg/jobs: register/enqueue, worker pool, retries with backoff, dead-letter (20c2bdf)
- pkg/jobs: STYLE.md docs, migration as a statement list, unexport internals (d08352b)
- pkg/auth: export the OIDC fetch-injection seam for downstream tests (52654f7)
- pkg/auth/docs/testing.md: canonically format the doc's bit fence (c35d305)
- pkg/auth: move the OIDC test seam onto OidcStrategy, not a *Fetch route call (ce9918a)
- spec: document jsonSchema, JSON Schema 2020-12 keywords (1333e2b)
- docs: document jsonDecEnumKey/jsonDecEnumIndex (a0dd803)
- pkg/auth requires web ^0.7.0; package READMEs install the current release (ca05caa)
- Course: install web
@v0.7.0 and auth by tag; drop web@v0.1.0/v0.6.5 stubs (000bc05) - Course: install postgres and orm by tag now that bitlang.org serves them (aae252f)
- Course part 10: the real bit add transcript for auth
@v0.2.0 (af2b842) - pkg/jobs docs: real, typechecking examples now static methods are ON (87f244e)
- pkg/auth and Inkwell drop explicit session.save(), autosave does it (d7fc947)
- declare jsonSchema() oracle-lag signatures, fix 2 em dashes, fmt run_json_schema_attrs.bit (6bb34e7)
- web: land after merging - .requestBody()/.responds(status) now compile (f9bfdc0)
- docs/stdlib: strip internal citation shorthand from second-half stdlib pages (a243a83)
- docs: Get started page, Tools section, docs index, STYLE.md rules (d875982)
- docs/stdlib: first-half cleanup - group README by task, drop internal spec/RFC section citations and jargon (580b830)
- docs/book: add the ink companion app's core (6abadd2)
- Rewrite Language reference pages short and exact in the Inkwell domain (c94ae41)
- Rewrite Language reference page bodies short and exact, Inkwell domain (94e03da)
- docs/stdlib: rewrite json.md and sql.md for plain language, drop jargon and history (5d35e4a)
- docs/stdlib: drop remaining SPEC citations and "primitive"/"sum type" wording (54ffe89)
- docs/stdlib: rewrite std/time as a task-shaped guide (b4cf595)
- docs: rewrite std/crypto as a task-shaped user guide (a41c378)
- docs/stdlib: rewrite std/http as a task-shaped guide (c20e3ac)
- pkg docs: remove spec citations, compiler internals and dev history from public docs (bcc2bbf)
- docs: rewrite std/tls as a task-shaped user guide (2b97036)
- docs/stdlib: rewrite http2/quic/http3 as low-level guides (bb6c3a0)
- docs/stdlib: rewrite json.md as a task-shaped guide (727fa77)
- docs/stdlib: rewrite sql.md as a task-shaped guide (196de0a)
- docs(orm,postgres): page-shape pass on pkg/orm and pkg/postgres docs (a615521)
- docs/book: add the Book's front page and chapters 1-6 (d6a0aa2)
- Book Part 2 (chapters 7-10): settings file, import/export, words and dates, a real database (6336221)
- ink/index.bit, watch.bit, backup.bit - parallel indexing, watch loop, backups (0e67f28)
- Book chapters 11-13 (indexing in parallel, watching for changes, backups) (0e901ee)
- integrator fixes -- chapter numbering, Inkwell naming, green thread def (4e13017)
- Book Part 4: reframe pkg/web/guides as chapters 14-30, move shipping to docs/book/34-shipping.md (64be14f)
- Book: shipping is chapter 33 (the course is chapters 14-30 after its shipping part moved to Part 5) (b04dce0)
- docs(web,auth): drop "not yet"/"does not do yet" future-work framing (005c995)
- docs(redis): STYLE.md page-shape pass (8f8ff6c)
- docs(mysql): STYLE.md page-shape pass (ebc2308)
- docs(kv): STYLE.md page-shape pass (cf9b329)
- docs(s3): STYLE.md page-shape pass (789df76)
- docs(toml): STYLE.md page-shape pass (03798ab)
- docs(yaml): STYLE.md page-shape pass (67aad13)
- wire every Book command into main.bit, dedupe the flat ink module (50615ba)
- chapters 7-13 show the lines each adds to main.bit; ch13 teaches the passphrase KDF (c57eb52)
- docs(json): per-symbol reference sections restored (c408f7d)
- docs(tls): per-symbol reference sections restored (3fe1f9b)
- docs(http3): per-symbol reference sections restored (c3afe7c)
- docs(crypto): per-symbol reference sections restored (61ddffc)
- docs(http2): per-symbol reference sections restored (d62396f)
- docs(quic): per-symbol reference sections restored (9a08258)
- docs(sql): per-symbol reference sections restored (e72e205)
- docs(http): per-symbol reference sections restored (cb2642d)
- docs(http): add H3Server.port/shutdown and parseMultipart sections (906e301)
- docs(time): per-symbol reference sections restored (201518b)
- docs: drop the toml fixture page; Book chapters 07 and 10 carry the deps directive (8f2277e)
- book: currentSettings falls back to defaultSettings(), so DATABASE_URL applies without an ink.toml and chapter 7 compiles on its own (2a30d35)
- docs(book): add chapter 31, background jobs with pkg/jobs (e11a125)
- book ch31: define dead-letter list at first use, plain wording for retry waits (c0a4f35)
- docs: delete docs/guides/, fold its useful facts into their new homes (0962fc0)
- book ch32: making it fast - measure, BIT_GC_STATS, std/prof, fix wordCount's allocation (bc9e2ab)
- book: Part 5 chapter links; operations hands off to chapter 31; shipping's previous link (a69b500)
- compiler: wire
bit profinto the CLI front end and dispatch (eb7cc84) - Resolve
@json's Json/JsonEntry and find's Rows without a user import (9dbff36)
Build and tooling
- pkg/jobs: PostgreSQL Store, live Docker gate, real acceptance proven (27ec40f)
- Repin stage0 to 0.32.0; retire the and stage0-lag signatures (fa005b5)
- Declare the IR/types signatures: generic method receiver Option stays boxed in the 0.32.0 oracle, explodes to words in this tree (2ada49a)
- Declare 6201-json-schema-generic-wrapper-specialize; split appendfresh.bit fixtureHelpers (eedac6d)
- tools/build: add test-book-ink, build+test docs/book/ink (987d3ba)
- gates: examples/h3fetch leaves the lint-aux debt list; its two findings are paid (863bec7)
Benchmarks
Examples
- examples/h3fetch: trust the demo's test root CA now that HTTP/3 verifies certificates (fb983b1)
Artifacts
Published for aarch64-linux, aarch64-macos, x86_64-linux and x86_64-windows.
See dist/README.md for the full target table, the archive layout,
the required BIT_STDLIB/BIT_LIBBITRT environment, and the
SHA256SUMS format.
Verify a download before running it:
sha256sum --check --ignore-missing SHA256SUMS # shasum -a 256 on macOSFull commit log: v0.32.0..HEAD