Skip to content

Release Notes

Versioned releases of platform artifacts and their changes.

Operator settings applied to the chaincode container are catalogued in Chaincode Environment Variables.

2026-09-01: substrate v2.236.0

  • substrate: A context migration can no longer invoke another registered migration — the nested call now raises at the migration's entry point and names both migrations. Previously the rule was only documented, and a nested migration that hit cache silently made the outer fresh step look cached, so a transaction ran more steps than max_fresh_steps_per_tx allowed
  • substrate: New nested-migration lint check in shirotester lint and the editor extension moves the same failure to authoring time — it flags a migration body that reaches run-ctx-migrations, run-migration-to-completion or the ctx-migrations registry, directly or through a helper in the same file. It is structural, so it runs identically with --semantic=false and no workspace; the runtime guard remains the complete check
  • substrate: Bump ELPS to v1.58.0 — adds the with-cleanup special operator: (with-cleanup (cleanup...) body...) always runs the cleanup forms, whether the body returned normally or signalled, and returns the last body value without catching the error. shirotester lint gains the matching with-cleanup-forms check (a cleanup list that is empty or a bare symbol releases nothing), and load-scope-context now sees inside with-cleanup, which it previously skipped entirely
  • substrate: Bump ELPS to v1.59.0 — the shadowing lint no longer reports a binding whose initialiser narrows the name it shadows, such as (let* ([ctx (default ctx (sorted-map))]), and its severity now follows what is hidden: shadowing a builtin, special operator, macro or function is a warning, shadowing another local stays informational
  • substrate: Bump ELPS to v1.60.0 — elpspath gains parse-path, which converts a v1 string selector into the positional steps the v2 ? family takes, so a path that arrives as data (a client request, a persisted envelope) is parsed once rather than on every call: (apply ? (cons obj (parse-path sel))). Open-ended slices gain a positional spelling, '(range n) for [n:]. The selector parser is a new single-pass scanner, 67–90% faster on selector strings with fewer allocations and the same grammar and error messages; substrate's own copy of the v1 parser is retired in favour of it. The one grammar change is a strict widening: .["a"]["b"], which the old parser rejected, now parses

2026-08-27: substrate v2.235.0

  • substrate: ⚠️ Action may be required for phyla that use the testing package outside test files. Production environments no longer load the testing package, so a phylum whose production load graph reaches it at load scope now fails to load with unknown package: testing. Three shapes trigger it: a top-level (use-package 'testing), a top-level (test ...) / (test-let ...) registration, and a top-level qualified reference such as (testing:assert-equal ...). The common, safe shape is unaffected — a defun whose body calls assert-equal still loads, because symbols in a function body resolve when it is called. The remedy is to move the offending file into the phylum's test-loaded set (a *_test.lisp file), which the test harness loads and production does not
  • substrate: The failure is not always loud, which is the part worth checking for. Inside handler-bind or ignore-errors the load succeeds and silently skips the rest of the recovered body — no error, just missing behavior. shirotester preheat-check is the reliable detector: run it against your phylum directory or the deployment ZIP before upgrading
  • substrate: Operators who need more time can set SUBSTRATE_ALLOW_PHYLUM_TESTING_PACKAGE=true on the chaincode container to restore the previous behavior while the phylum is migrated. It must be set uniformly across a channel's peers — with it off the affected phylum fails to load and with it on the phylum runs, so peers that disagree disagree about whether the phylum exists at all. Set it the same way wherever shirotester preheat-check runs, or a phylum can pass the check in CI and still fail to load on the peers; the check prints a NOTE naming the variable when it runs with the hatch on. See Chaincode Environment Variables
  • substrate: shirotester preheat-check and the runtime's own template-refusal messages now name a line the phylum author can actually edit. A blocking context read reached through a wrapper or a macro previously reported only the position inside the library it bottomed out in — naming a file the phylum does not own, while the phylum's own line never appeared — and because the report de-duplicates on that position, two distinct blockers could merge into a single entry. Reports now read read-position <- reaching-form, and are unchanged for a read written directly at load scope
  • substrate: Bump ELPS to v1.57.0 — native values carry typed construction and access contracts, and native payloads are checked against the runtime they belong to, closing a class of cross-transaction leak through environments served by forking a per-phylum template

2026-08-26: substrate v2.234.0

  • substrate: blend-paths now guarantees its write-through contract, pinned by tests: values at blended paths alias the source document (a write through the blend result at a blended path is visible in the source patch), the result is independent of the destination, and an empty path list returns the destination by identity. Restores behavior phyla depended on that regressed with the elpspath copy fix in v2.229.0 — the symptom was fields generated on the blend result (ids, timestamps) silently missing from the persisted patch after an update
  • substrate: Leaning on the blend-paths write-through aliasing is deprecated for new code — write generated fields onto the source patch explicitly; the aliasing contract is retained for existing phyla
  • substrate: New static vet gate rejects native payloads reaching a preheat template, preventing cross-transaction leaks through template-forked environments

2026-08-26: substrate v2.233.0

  • substrate: Preparing a transaction's environment is dramatically cheaper — a warm VM is now produced by forking a per-phylum template snapshot instead of initializing from scratch, and the embedded core library is sealed once and shared by every fork rather than copied per environment. Together with the ELPS bump below, the allocations a single fork costs drop from roughly 37,000 to under 7,000 (−81%), so pools of preheated environments fill faster and hold less memory per VM
  • substrate: Bump ELPS to v1.56.0 — array values no longer deep-copy dimensions they built themselves, forking no longer rebuilds per-environment metadata nothing reads, and the vector-building builtins moved onto the copy-free path, cutting two allocations from every constructed vector on the transaction path
  • substrate: When a phylum cannot be preheated, the report is now trustworthy — shirotester preheat-check and the runtime's own template-refusal message name the innermost phylum source position of each blocking read rather than an internal frame, repeated reads of one capability no longer crowd distinct ones out of the list, and a report that had to truncate says so instead of silently dropping reads
  • substrate: The elpspath v1 string-path builtins (get-path, set-path! and friends) are now marked deprecated in hover documentation and shirotester doc, each pointing at its v2 positional-arg equivalent, with a selector-to-step translation table in the package documentation. v1 continues to work — stored data and request payloads still carry v1 path strings — but new phylum code should use the v2 operations, which are several times faster and support dynamic paths naturally

2026-08-25: substrate v2.232.0

  • substrate: Context migrations pack by default again — following operator feedback on v2.230.0, a migration now fits as many fresh steps into each transaction as the storage budgets allow (the behavior before v2.230.0), so operators no longer need to know how many steps fit in order to get efficiently packed transactions. The per-transaction step cap is now the opt-in control: pass shiroclient init --migration-tuning '{"max_fresh_steps_per_tx": N}' (for example 1) when the step rather than the budget should decide transaction chunking, such as tests that observe page boundaries. Cached replays remain free, and frontier resume and the exit-code contract are unchanged
  • substrate: With packing as the default, size shiroclient init -l to the expected number of budget-sized transactions (typically small); a run tuned down with max_fresh_steps_per_tx needs -l near the total step count divided by that setting

2026-08-25: substrate v2.231.0

  • substrate: Phylum loading is dramatically cheaper — the parse cache now hands every environment the same immutably sealed program instead of deep-copying it, removing ~44 ms, ~37 MiB and ~447,000 allocations from every cache hit, and the embedded core library is parsed once per process instead of once per environment, cutting warm-VM construction time by ~69% and its allocations by ~80%. Together these make pools of preheated environments substantially faster to fill and cheaper to hold
  • substrate: New shirotester preheat-check command proves whether a phylum fully preheats — it loads the phylum (directory or deployment ZIP) against a probing transaction context and names the exact file and line of any load-scope context read that would silently stall background preheating
  • substrate: New load-scope-context lint check (on by default) catches the same pattern statically — a transaction-context read at phylum load scope, such as reading the clock or ledger state at the top level of a file, is flagged at authoring time in shirotester lint and the editor extension, with the fix pattern named in the diagnostic
  • substrate: Bump ELPS to v1.54.0 — adds the per-file load cache the parse-cache improvement above is built on, with sealed programs served safely across environments
  • substrate: Operators who run a phylum that mutates its own quoted program literals (a pattern the sealed cache now rejects with modify-literal-error) can set SUBSTRATE_ALLOW_PHYLUM_LITERAL_MUTATION=true on the chaincode container to restore the previous behavior while the phylum is updated; the setting must be uniform across a channel's peers and announces itself in the process log — see Chaincode Environment Variables for the full list of settings available on the chaincode container

2026-08-25: substrate v2.230.0

  • substrate: Context migrations now perform one fresh step per transaction by default — the batch size a migration chooses is its unit of work per transaction, making transaction sizing predictable and the batch size observable from the returned context; pack more steps per transaction for a single run with shiroclient init --migration-tuning '{"max_fresh_steps_per_tx": N}', no phylum redeploy needed. Cached replays remain free and do not count against the limit
  • substrate: Restarting a context migration now resumes in constant time — the engine records each migration's frontier and jumps straight to it, instead of re-reading the cached step history one entry at a time; long-running migrations no longer get slower to resume the further they have progressed, and a completed migration answers immediately on re-run
  • substrate: shiroclient init exit codes now distinguish outcomes: 0 means the migrations completed, 3 means the iteration budget (-l) ran out with work remaining — progress is committed, re-run to continue, and the remaining context is logged as paste-ready JSON for -m — and 1 means a real failure, including a new detection for migrations making no progress between iterations. Size -l to the total step count divided by the steps-per-transaction setting
  • substrate: New utils:set-index-prefixes builtin — the official override point for index key prefixes
  • substrate: Phylum preheating hardening — each environment initializes from its own copy of the phylum, and abandoned initializations are cancelled instead of running to completion in the background
  • substrate: Bump ELPS to v1.53.0 — adopts the sealed-AST series for faster program loading and safer reuse of parsed phylum code across environments

2026-08-21: substrate v2.229.0

  • substrate: The per-transaction key and write-byte metrics, previously last-write-wins gauges, are now histograms — substrate_tx_keys_accessed and substrate_tx_bytes_written give true per-endpoint distributions (p95s, threshold alerting via plain bucket queries) instead of whichever transaction finished last; the old gauges substrate_tx_keys / substrate_tx_write_bytes still work but are deprecated
  • substrate: New substrate_statedb_ops_total{method,op} and substrate_statedb_bytes_total{method,op} counters expose the per-endpoint statedb breakdown — gets, puts, private-data access, range scans, and range pagination — so an endpoint's read/write/private mix is visible over time
  • substrate: Sampled OpenTelemetry Handle spans now carry the full statedb breakdown (statedb.* counts and bytes) plus luther.method, luther.req_id, and luther.tx.dirty — a slow trace shows exactly what the transaction touched in state
  • substrate: Breaking for dashboards pinned to specific le values — substrate_tx_sim_dur and shirogateway_tx_dur trimmed from 25 to 14 buckets (same 50ms low end, tail extends to ~15s), roughly halving the per-endpoint series cost of the two duration histograms
  • substrate: ELPS phylum profiler spans now export through the server's own tracer rather than the process-global one — concurrent substrate instances (such as in-memory tests) no longer leak spans into each other's trace exporters
  • substrate: elpspath hardening — set-path/?set copies no longer share nested containers with the source, and a value that contains itself is refused with a catchable error instead of crashing the chaincode process
  • substrate: Bump ELPS to v1.50.0 — brings the tracer plumbing and container-aliasing fixes above into the ELPS runtime, with faster transaction evaluation on top
  • substrate: The pvtdata sentinel private-data collection now defaults to "private", with an explicit opt-out for deployments that relied on the previous default
  • substrate: Clearer error when chaincode source fails to load — the message now names both failed interpretations (not a zip archive, not loadable lisp) instead of reporting only the zip failure
  • substrate: Fix cctime:sleep to declare the same arguments as its implementation
  • substrate: The benchmark regression gate is now statistically sound (both arms measured interleaved on the same runner) and a daily scheduled govulncheck run watches for vulnerable dependencies — catching performance and security regressions automatically

2026-08-05: substrate v2.228.1

  • substrate: Restore the npm trusted-publishing auth in the release pipeline so the @luthersystems/shirotester npm package publishes again for v2.228.x — no runtime changes over v2.228.0

2026-08-05: substrate v2.228.0

  • substrate: Fix duplicate results from statedb union range queries — an unbounded range (end="") in statedb:range-page-union / range-page-bytes-union was misclassified as disjoint from every other range, silently emitting duplicate keys; unbounded ends now count as overlapping and results are deduplicated
  • substrate: Context migrations now run under per-transaction budgets (max keys, write bytes, and iterations per transaction, deletes counted) with a resumable pause at the cache frontier — large-dataset migrations no longer risk blowing Fabric transaction limits mid-run
  • substrate: statedb:range-page* builtins are now legal in writing transactions — the page size is enforced client-side over a plain range iterator, since Fabric restricts shim-level pagination to read-only transactions
  • substrate: New out-of-band migration tuning — pass --migration-tuning '{"batch_size": 2000}' to shiroclient init and read values in phylum via utils:migration-tuning; retune a paused migration between runs without redeploying the phylum or invalidating the migration's idempotency cache
  • substrate: Unpaginated range queries now stream keys lazily instead of collecting the whole key range into memory up front — constant memory at any range size, closing an out-of-memory class for full-keyspace scans; paginated range builtins now reject a page size <= 0 with a clear error, and a new range-pagination metric exposes page-fetch behavior to operators
  • substrate: The in-memory emulator now serves ranges from a true cursor (no more full-range materialization per page during tests), with mock/real range parity proven by one shared corpus and the full migration lifecycle exercised end-to-end on the sample network on every change

2026-08-04: substrate v2.227.0

  • substrate: Security — bump google.golang.org/grpc to v1.83.0 (fixes GHSA-hrxh-6v49-42gf) along with OpenTelemetry transitive dependencies
  • substrate: Security — refresh build and runtime base images to buildenv v0.1.12, picking up a year of Debian/Alpine base-image CVE fixes (expat and grpc HIGHs among others)
  • substrate: Bump svc to v0.16.0 — completes the migration off the deprecated aws-sdk-go v1 to aws-sdk-go-v2 across S3 document storage, SES mail, and request archiving
  • substrate: Bump shiroclient-sdk-go to v0.14.1 with the matching grpc security updates
  • substrate: Known-vulnerability scanning (govulncheck) and Go-module Dependabot now run on every change, catching vulnerable-dependency regressions of the above class automatically

2026-06-23: substrate v2.226.0

  • substrate: Phylum preheat/init timeout is now configurable (default unchanged at 6s) — set it with the --preheat-timeout chaincode flag, the shiro.WithPreheatTimeout server option, or the shiroclient SDK's mock.WithPreheatTimeout (sdk-go v0.14.0) for in-memory tests. Prevents spurious "phylum init timeout" errors when many environments initialize in parallel under heavy CPU load; the baseline preheater always keeps the built-in default, so a small value can't stall all traffic
  • substrate: Add a guide for automated context migrations

2026-05-14: substrate v2.225.2

  • substrate: Phylum panics raised during background preheat initialization are now recovered and surfaced as errors instead of taking down the chaincode process

2026-05-14: substrate v2.225.1

  • substrate: Bump ELPS to v1.48.1 — defensive nil-guards in error rendering eliminate a class of secondary crashes when formatting unusual error values

2026-05-14: substrate v2.225.0

  • substrate: Recovered phylum panics now include a Go stack trace (panic origin): section in the error output, pinpointing the exact line that triggered the panic
  • substrate: Fix structured logging on the first request to a freshly preheated phylum — error stacks emitted during preheat-interrupt handling now flow through the configured logger instead of stderr
  • substrate: Bump ELPS to v1.48.0 — adds a singleton-mutation guard and the Go panic-stack capture feeding the above

2026-05-06: substrate v2.224.0

  • substrate: Fix a phylum preheat data race that could cause an intermittent SIGSEGV under Go 1.26's new map implementation on first request to a newly loaded phylum
  • substrate: Race-detector builds now run on every change, preventing regressions of the above class of bug

2026-04-24: substrate v2.223.0

  • substrate: Per-request debug logging now correctly promotes phylum cc:debugf calls to Info level when a sampled OpenTelemetry parent span is present on the transaction
  • substrate: Fix OpenTelemetry trace propagation in in-memory / emulate-CC mode — spans now surface from transactions issued through make mem-up and sandbox-style test flows
  • substrate: Refresh OpenTelemetry tracing documentation — covers the sampled-parent requirement, per-binary OTLP endpoint configuration, and the log-volume tradeoff when using per-request debug logging

2026-04-20: substrate v2.222.0

  • substrate: Upgrade builds and CI to Go 1.26 via buildenv v0.0.97
  • substrate: Fix chaincode Docker build defaults and functionaltester staticcheck findings for Go 1.26 release validation

2026-04-15: substrate v2.221.0

  • substrate: Distribute shirotester via npm (npx @luthersystems/shirotester) — zero-setup MCP server and CLI access for editors and AI coding tools
  • substrate: Fix VS Code extension version injection so shirotester version reports the release version instead of substrate-SNAPSHOT
  • substrate: SNAPSHOT tags now produce unique marketplace versions, removing VS Code extension publish collisions
  • substrate: Security — bump lodash to 4.18.1 (prototype pollution and code injection fixes)

2026-04-09: substrate v2.220.0

  • substrate: Bump ELPS to v1.47.1 with LSP metadata enrichment — richer diagnostic related-information, hover ranges, completion details, workspace symbol context
  • substrate: Normalize file paths for symlink-safe duplicate-definition checks

2026-04-03: substrate v2.219.0

  • substrate: Bump ELPS to v1.47.0 with macro expansion and analyzer fixes — workspace-defined macros expand at analysis time, MCP diagnostics perform cross-file symbol resolution
  • substrate: Eliminate false positives for bare else in cond, quoted-symbol lambda set, and files without in-package (inherit from workspace DefaultPackage)

2026-04-01: substrate v2.218.0

  • substrate: Bump ELPS to v1.46.2 with quasiquote template reference tracking — cross-file references from quasiquote templates no longer flagged as unused
  • substrate: Go-to-definition and completion now work for non-exported qualified symbols (pkg:internal-fn)

2026-03-28: substrate v2.217.0

  • substrate: Bump ELPS to v1.46.0 with major LSP improvements — cross-file use-package resolution, load-tree package inference for bare files, cross-file unused-function detection
  • substrate: Hover docs for unquote, unquote-splicing, condition, &rest, &optional, &key, else
  • substrate: Unused variables and functions render with faded text (DiagnosticTag.Unnecessary); undefined symbols inside user-defined macro bodies lowered to warning severity
  • substrate: Suppress parameter-shadows-builtin/special-op warnings for common parameter names (expr, car, map)

2026-03-27: substrate v2.216.0

  • substrate: Skip build/, _* directories, and shirocore.lisp during workspace scanning — resolves "Workspace file limit reached" warning on large phylums
  • substrate: Add --exclude and --max-files flags to shirotester lsp for custom workspace scan configuration

2026-03-26: substrate v2.215.0

  • substrate: Link VS Code extension version to substrate release tags (single source of truth for versions)
  • substrate: Publish SNAPSHOT tags as VS Code marketplace pre-release extensions

2026-03-25: substrate v2.214.0

  • substrate: Release the Substrate VS Code extension — syntax highlighting for ELPS with substrate-specific forms (defendpoint, route-success, route-failure), LSP via shirotester lsp, DAP debugger via shirotester debug, zero-dependency install with bundled shirotester binary
  • substrate: Add shirotester fmt command for formatting ELPS source files
  • substrate: Bump ELPS to v1.44.0 with preserve-params minifier — LSP now shows human-readable parameter names instead of minified identifiers

2026-03-24: substrate v2.213.0

  • substrate: Add pvtdata_health_check endpoint for private data reconciliation monitoring after snapshot restore
  • substrate: Add pvtdata_set_health_check_sentinel endpoint for legacy chain sentinel configuration
  • substrate: Auto-write default sentinel to "private" PDC on phylum init/update
  • substrate: Add docs/shirocore-endpoints.md — comprehensive reference for all shirocore built-in endpoints
  • substrate: Bump google.golang.org/grpc to v1.79.3 (critical CVE fix)

2026-03-21: substrate v2.212.0

  • substrate: Pin elps to v1.41.0 with MCP server improvements
  • substrate: Add shirotester MCP tools: eval, test, doc, format, lint, help
  • substrate: Wire WithEnvFactory into shirotester MCP for isolated shiro environments
  • substrate: Fix 24 MCP server issues (path resolution, pagination, severity filtering, structured errors)

2026-03-21: substrate v2.211.0

  • substrate: Bump ELPS to v1.40.0 with full LSP parity and duplicate-definition analyzer
  • substrate: Add shirotester analyze command with substrate-aware performance analysis (PERF001-004)
  • substrate: Embed ELPS MCP server in shirotester (shirotester mcp)
  • substrate: Shirocore migration phases 8-9: remove ELPS wrappers, eliminate LVal overhead
  • substrate: Bump Go to 1.25 across all CI workflows and build images
  • substrate: Replace prepare-shirocore.sh with Go tool using elps minifier API

2026-03-18: substrate v2.210.0

  • substrate: Add shirotester analyze command with SARIF, Mermaid, and baseline output formats
  • substrate: Roll out shirotester analyze CI for automated analysis on PRs
  • substrate: Add DAP debugger support with shirotester debug command
  • substrate: Upgrade ELPS to v1.39.0 with full LSP + DAP integration
  • substrate: Migrate deprecated ELPS eval calls to context-aware variants
  • substrate: Add ELPS runtime documentation for 500+ symbols with CI gate

2026-02-12: substrate v2.209.0

  • substrate: Upgrade svc to v0.15.0
  • substrate: Upgrade elps to v1.19.2 with inline macro docstrings
  • substrate: Add ELPS runtime documentation for 477 symbols across 34 packages

2026-02-12: substrate v2.208.0

  • substrate: Expose OpenTelemetry tracing spans in mock mode (substratehcp plugin)
  • substrate: Enable per-request debug logging when tracing is active
  • substrate: Add @trace annotations to router JSON-RPC deserialization functions
  • substrate: Add elpspath v2 with positional-arg path operations
  • substrate: Fix def-migration-ctx idempotency and add recursive execution
  • substrate: Upgrade elps to v1.19.1 with semantic lint integration
  • substrate: Add ELPS runtime docs for elpspath package and all builtins

2026-01-21: substrate v2.207.0

  • substrate: Fix union range pagination duplicate keys
  • substrate: Fix memory leak in shirotester isolation mode
  • substrate: Update golang.org/x/crypto to v0.47.0 to fix security vulnerabilities

2025-11-18: substrate v2.206.0

  • substrate: Add union range pagination functions
  • substrate: Replace elps ymd-between-dates with constant-time Go implementation

2025-07-24: substrate v2.205.15

  • connectorhub: Add MCP connectors

2025-07-14: substrate v2.205.14

  • connectorhub: Fix connector casing
  • connectorhub: Add test CLI command

2025-06-24: substrate v2.205.13

  • substrate: Add general mock settings
  • connectorhub: Add Luther connectors

2025-06-23: substrate v2.205.12

  • connectorhub: Fix connectorhub protos and add rich connector annotations
  • connectorhub: Add new and remaining connector annotations, enums, categories, icons, and logos; update connector keys, config, and category order; ensure consistency in naming and file conventions
  • connectorhub: Fix typos, indentation logic, and comments; update README
  • substrate: Attempt to fix shirotester unit-test race, memory leak, isolation, and shared mode

2025-04-29: substrate v2.205.10

  • substrate: Do not create profiler when no trace
  • connectorhub: Add unimplemented connectors

2025-03-31: substrate v2.205.9

  • substrate: Add dynamic elps filtering option
  • connectorhub: Add ability to test connector connection

2025-03-21: substrate v2.205.8

  • substrate: Upgrade x/net dependencies
  • substrate: Add range query pagination
  • migrations: Add ctx migration support

2025-02-14: substrate v2.205.7

  • substrate: Disable write polling by default
  • connectorhub: Add connector lib

2024-10-31: substrate v2.205.6

  • shiroclient: Expose commit block number and max sim block number to SDK

2024-11-26: Luther Auth v4.7.6

  • General: Support Auth0
  • General: Upgrade go dependencies
  • General: Fix open redirect vulnerability by introducing AUTH_OAUTH_VALID_FRONTEND_REDIRECT_URLS and AUTH_OAUTH_VALID_CALLBACK_URLS environment variables
  • General: Support frontend_redirect_url parameter in /v1/auth/oauth_login

2024-10-29: substrate v2.205.5

  • substrate: fix target peers

2024-10-23: substrate v2.205.4

  • substrate: improve build pipeline

2024-10-22: substrate v2.205.3

  • substrate: upgrade go dependencies
  • shiroclient: expose target peers on cli

2024-09-06: substrate v3.0.0

  • substrate: Cut from a side branch off v2.205.2, not from the main release line — the shim upgrade and build changes below were also carried into v2.205.3, while the key-limit work is exclusive to this tag and was not carried into later v2 releases
  • substrate: Upgrade the Hyperledger Fabric Go chaincode shim, cleanly separating the substrate and shiroclient packages and resolving a proto namespace collision
  • substrate: Key metrics refactored to add a per-transaction key limit with a dedicated key-limit error; the limit is disabled for migrations
  • substrate: Docker Compose is no longer required for local builds; buildenv and Fabric images bumped

2024-08-01: substrate v2.205.2

  • substrate: Improve block cache logging, and recording of trace requests

2024-07-24: substrate v2.205.1

  • shiroclient: Add missing block cache optimization
  • substrate: Add initial profile guided optimization (PGO) to substrate

2024-07-15: substrate v2.205.0

  • shiroclient, substrate: Add prometheus metrics to expose substrate version
  • shiroclient, substrate: Support arm64 architecture

2024-06-21: substrate v2.204.4

  • shiroclient: Fix dependent transaction waiting off-by-one bug when checking peer block height

2024-06-10: substrate v2.204.3

  • shiroclient: Add support for WithoutTargetPeers

2024-06-10: substrate v2.204.2

  • substrate: Fix sideDB statedb:purge fail over when fabric 2.5 channel config not enabled

2024-06-04: substrate v2.204.1

  • shiroclient: Fix license init logic

2024-06-04: substrate v2.204.0

  • shiroclient: break out prometheus timing metrics by endpoint
  • substrate: add simulation time prometheus metric by endpoint (substrate_tx_sim_dur)
  • substrate: add key count prometheus metrics by endpoint (substrate_tx_keys)

2024-05-16: substrate v2.203.0

  • shiroclient: add demo mode for easy sandbox setup

2024-05-13: substrate v2.202.0

  • shiroclient: fix panic when block cache disabled

2024-04-18: substrate v2.201.0

  • substrate: lazy load elps packages
  • shiroclient: fix mem leak in metrics
  • shiroclient: add block puller
  • shiroclient: Add license digest cache
  • shirocore: remove VBC

2024-03-26: substrate v2.200.0

  • fabric-network-builder: Add external domain, SANS support
  • shircore: update protobuf to v1.33.0

2024-03-05: substrate v2.199.0

  • shiroclient: Fix blockcache dep tx waiting
  • shiroclient: Add shiroclient-gw opt to disable write polling by default
  • shiroclient: Add WithTargetEndpoints to select peers for endorsement

2024-03-03: substrate v2.198.0

  • substrate: improve elps vm pre-heater for faster tx procesing
  • shiroclient: use peer discovery on commit fallback
  • plugin: support CSPRNG in local tests

2024-02-15: substrate v2.197.1

  • substrate: bump deps
  • shiroclient: use otelhttp http server for gateway

2024-02-12: substrate v2.197.0

  • substrate: add ratelimiter
  • shiroclient: fix span tree
  • substrate: add profile tracing to defendpoint
  • substrate: improve tracing support

2024-02-05: substrate v2.196.0

  • shiroclient: fix race condition on commitment
  • substrate: make preheat workers configurable, revert preheat cache size change
  • substrate: add elps doc trace filters
  • substrate: add better context threading
  • substrate: improve tracing support

2024-01-09: substrate v2.195.0

  • substrate: upgrade elps to 1.64.4
  • shiroclient: add max retries option
  • externalcc: fix chaincode-as-a-service

2024-01-04: substrate v2.194.0

  • substrate: Improve tracing support (move from opencensus to otel)
  • substrate: Bump pre-heater default size
  • substrate: Internal refactor of library paths
  • substrate: Update dependencies
  • shiroclient: Improve chaincache logic

2023-12-04: substrate v2.193.0

  • shiroclient: Add shiroclient block and transaction (chaincache) cache to reduce waiting times
  • shiroclient: Improve shiroclient retry logic
  • shiroclient: Add support for DependentBlock
  • shiroclient: Improve context canceled handling
  • shiroclient: Support WithPhylumVersion

2023-11-13: substrate v2.192.3

  • shiroclient: optimize wait logic to avoid redundant waits

2023-10-31: substrate v2.192.2

  • buildpack: support HLF2.5 binaries

2023-10-27: substrate v2.192.1

  • shiroclient: reduce default commit timeout to 3s
  • shiroclient: improve context canceled logging

2023-10-25: substrate v2.192.0-fabric2.2

  • substrate: Fabric 2.2 build of v2.192.0 — adds the Fabric 2.2.13 artifacts for networks still on the 2.2 line

2023-10-23: substrate v2.192.0

  • shiroclient: fix retry backoff

2023-09-05: substrate v2.191.0

  • shiroclient: make client connection keep alive (platewarmer) optional (client.plate-warmer = false)
  • substrate: support purge of private data on HLF2.5
  • externalcc: add pprof endpoint

2023-08-14: substrate v2.190.1

  • shiroclient: do not error log OK errors
  • shiroclient: reduce verbosity of INFO messages

2023-07-26: substrate v2.190.0

  • shiroclient: improve context canceled error handling
  • shiroclient: improve error logging

2023-07-19: substrate v2.189.0

  • private library: add support for skipEncodeTx optimization

2023-07-18: substrate v2.188.0

  • upgrade: elps to 1.16.2

2023-07-13: substrate v2.187.0

  • update: tar artifact permissions

2023-07-13: substrate v2.186.0

  • upgrade: golang to 1.20.4
  • upgrade: buildenv to v0.0.67

2023-07-13: substrate v2.186.0-fabric2

  • substrate: Fabric 2.x build of v2.186.0, with the same changes

2023-07-11: buildenv v0.0.71

  • General: Improve support for private GH repos

2023-07-10: buildenv v0.0.70

  • General: Add support for luther github repos

2023-06-08: buildenv v0.0.69

  • General: Support private github repos

2023-06-08: buildenv v0.0.68

  • General: Bump awscli to 2.11.26 and deps
  • General: Update github host keys

2023-05-18: buildenv v0.0.67

  • General: Use new bitbucket host keys

2023-05-05: substrate 185.0-fabric2

  • fabric network builder: Update dependencies

2023-05-05: substrate 184.0-fabric2

  • All services: Use golang 1.20

2023-05-03: buildenv v0.0.66

  • Java: Use alpine 3.16

2023-05-02: buildenv v0.0.65

  • CI: Fix dockerhub multi-arch publish

2023-05-02: buildenv v0.0.64

  • CI: Fix CI publish

2023-05-01: buildenv v0.0.63

  • CI: Fix CI on github

2023-05-01: buildenv v0.0.62

  • General: Move to github
  • Golang: Update go to 1.20.3, alpine to 3.17

2023-04-27: buildenv v0.0.61

  • API: Upgrade buf to 1.17.0

2023-03-27: substrate 2.183.0-fabric2

  • shiroclient gateway: Improve peer selection prioritization
  • shiroclient gateway metrics: Avoid panic on missing license file

2023-03-03: buildenv v0.0.60

  • Godynamic: Fix awscli versions
  • Golang: Update go to 1.20.1, golangci-lint to 1.51.2, awscli to 2.11.0

2022-12-01: substrate 2.182.0-fabric2

  • shiroclient gateway: Improve logging and tx retry logic

2022-11-02: substrate 2.181.0-fabric2

  • shirotester: Fix mxf snapshot RNG re-use

2022-10-20: substrate 2.180.0-fabric2

  • shirocore: Add base32 library (encode/decode)

2022-10-20: substrate 2.179.0-fabric2

  • shiroclient metrics: Improve retry for license metrics collection

2022-09-02: buildenv v0.0.59

  • Golang: Upgrade golangci-lint

2022-08-20: substrate 2.178.0-fabric2

  • push proxy: Make pushproxy docker image public on dockerhub

2022-08-16: substrate 2.177.0-fabric2

  • substrate: Support audience (aud) array JWTs

2022-08-08: substrate 2.176.0-fabric2

  • shiroclient gateway metrics: Improve license metrics collection

2022-08-04: buildenv v0.0.58

  • Golang: Support GO_BUILD_EXTRA_FLAGS

2022-07-26: substrate 2.175.0-fabric2

  • shiroclient: Add genesis block hash as tag on metrics; identifies environment together with license digest (already present as tag), which identifies which customer/client is sending metrics.

2022-07-20: substrate 2.174.0-fabric2

  • shiroclient: Add metrics reporting block height and server status

2022-07-08: substrate 2.173.0-fabric2

  • shirocore: remove performance improvement cache that was added in substrate 2.172.0-fabric2 release due to new bug introduced reading only the first toset when iterating a tomulset

2022-06-21: buildenv v0.0.57

  • Golang: Use golangci-lint for static checks

2022-06-09: substrate 2.172.0-fabric2

  • shirocore: performance bug fix concerning storage-toset-next-iters & storage-toset-next-iter-fill-page duplicate iteration
  • golang: bump golang to 1.16.15

2022-06-06: buildenv v0.0.56

  • Golang: Update go to 1.18.3

2022-06-06: buildenv v0.0.55

  • godynamic: fix aws-cli install
  • js: add better support for aws help command

2022-06-03: buildenv v0.0.54

  • godynamic: fix azure-cli install
  • js: include python for node-gyp support

2022-05-26: buildenv v0.0.53

  • go-static: use alpine, remove TINI vars

2022-05-26: buildenv v0.0.52

  • internal: CI/CD release improvements

2022-05-25: buildenv v0.0.51

  • internal: major changes to facilitate migration to github and circle CI
  • multi-architecture: add multi-arch builds for amd64 and arm64
  • api: remove prototool, add buf
  • go: add staticcheck tool
  • go: add jq tool
  • all: fetch certificates from official ca-certificates package
  • all: fetch time zone data from official tzdata packages
  • debian: do not include suggested packages by default
  • go-extra: use ubuntu 20.04
  • static go builds: include build tags for time zone data

2022-04-28: buildenv v0.0.50

  • godynamic: upgrade azcli to 2.35.0

2022-04-01: substrate v2.171.0-fabric2 Release

  • substrate: fix buildpack for external chaincode

2022-03-31: substrate v2.170.0-fabric2 Release

  • buildenv: bump to 0.0.49
  • hyphae: use public github for libhandlebars
  • shiroclient: add dependent TX ID logging
  • shiroclient: bump shiroclient-sdk-go to ac2085246995

2022-03-23: buildenv v0.0.49

  • alpine: bump alpine to 3.15
  • golang: bump golang to 1.16.14

2022-03-17: buildenv v0.0.48

  • alpine: remove old patches to fix security updates which are superfluous

2022-03-11: substrate v2.169.0-fabric2 Release

  • shiroclient: improve retry logic for handling transaction commit timeouts
  • substrate: fix bug in decimal-add-money
  • substrate: remove set-now function from utils
  • libmxf: release 0.0.4 mxf npm package with decryption bugfix

2022-02-25: buildenv v0.0.47

  • godynamic: add curl

2022-01-26: substrate v2.168.0-fabric2 Release

  • shirocore: add list support in elpspath
  • shiroclient: improve verbose mode (-v)

2022-01-10: substrate v2.167.0-fabric2 Release

  • fabric network builder: Compatibility changes for use in containerized setups
  • mxf: add public npm package for decoding mxf encrypted data off-chain
  • substrate: minor bug fixes

2021-12-10: buildenv v0.0.46

  • api: remove api swagger bindata generation
  • godynamic: fix azure cli build

2021-11-18: substrate v2.166.0-fabric2 Release

  • shirocore: add mxf-private-export function
  • substrate: push luthersystems/buildpack to dockerhub for external chaincode initialization

2021-11-12: substrate v2.165.0-fabric 2 Release

  • substrate: fix chaincode tar build issue introduced in v2.164.0-fabric2

2021-11-08: substrate v2.164.0-fabric2 Release

  • hyphae: add to-int helper to libhandlebars to convert types to int.
  • substrate: add external chaincode builds (dockerhub: luthersystems/substrate).

2021-10-15: substrate v2.163.0-fabric2 Release

  • shirocore: Allow cc:creator in init endpoint in mock mode
  • shirocore: Fix find-pos and find-pos-cmp bug to correctly return -1 when the index is not found.

2021-09-23: substrate v2.162.0-fabric2 Release

  • substrate: Add env variable SUBSTRATE_LOG_LEVEL to change log level

2021-09-14: buildenv v0.0.45

  • go-alpine: use static binary dependencies

2021-09-13: buildenv v0.0.44

  • service-base-alpine: update artifacts
  • alpine: apply security updates
  • go-alpine: remove GOPRIVATE config

2021-08-23: buildenv v0.0.43

  • go-alpine: add go-alpine image

2021-07-27: buildenv v0.0.42

  • go: Change user and owner of built artifacts using environment variables

2021-07-19: substrate v2.160.0-fabric2 Release

  • hyphae: Add to-str helper to libhandlebars
  • hyphae: Add GetPipeHTTP to s3 package to retrieve stream of bytes.
  • hyphae: Add cookie retrieval interface for magic links

2021-07-01: buildenv v0.0.41

  • godynamic: Use alpine 3.13 as a stable base.

2021-06-23: substrate v2.159.0-fabric2 Release

  • elps: Upgrade to v1.14.0.
  • fabric network builder: Add cert_expires subcommand to list expiration dates of certificates
  • fabric network builder: Add mutli-step certificate generation process for improved customizaiton (make generate-template, make generate-assets).
  • buildenv: Upgrade to v0.0.40.

2021-06-16: buildenv v0.0.40

  • api, go, godynamic, goextra: Cleanup build tags into common configuration.
  • api: Allow including protos in custom directories.

2021-06-09: elps v1.14.0

  • json: Use custom json encoder for improved performance.
  • json: Reduce allocations during map serialization.
  • types: Add ability to write user-defined data types.
  • types: Update libschema to support user-defined data types.
  • macros: Fix bugs related to macro expansion.

2021-06-09: buildenv v0.0.39

  • api. go, godynamic, goextra: Properly parameterize go versions.
  • api: Fix typo in make targets and add missing make targets.

2021-05-26: buildenv v0.0.38

  • all: Continue to push images to ECR for backwards compatibility.

2021-05-25: buildenv v0.0.37

  • api, go, godynamic, goextra, java, js, swaggercodegen: Use tini for signal handling in the default image entrypoint.
  • api. go, godynamic, goextra: Upgrade to go1.16.4.

2021-05-14: substrate v2.158.0-fabric2 Release

  • fabric network builder: Add fnb-extend command to generate certs for new orgs.
  • fabric network builder: Use version 2.2.0 of fabric cryptogen (names private keys priv_sk among other changes).
  • fabric network builder: Use client authentication (mutual TLS).
  • shirocore: Fix set-exception-wrapped to properly wrap exception messages and re-throw them.
  • shiroclient gateway: Add additional log lines to help debugging.
  • shiroclient gateway: Retry tx simulation on chaincode 500 error, for increased resilience.
  • shiroclient gateway: Move shiroclient-sdk-go to github.

2021-03-30: substrate v2.157.0-fabric2 Release

  • shiroclient gateway: Improve reliability of event service connectivity.
  • shiroclient: Throw phylum errors during chaincode-to-chaincode (invoke-phylum) failures.

2021-03-16: substrate v2.156.0-fabric2 Release

  • shiroclient: Fix bug in internal minifer for elps symbols.
  • mock substrate: Improve support for parallel go tests.

2021-03-05: substrate v2.155.0-fabric2 Release

  • shiroclient gateway: Improve metrics logging during tx commit.
  • shirocore: Fix bug in tx-pre-hooks execution, which sets up shirocore env before application code runs.

2021-03-04: substrate v2.154.0-fabric2 Release

  • mock substrate: Fix mock-specific methods.
  • shirocore: Fix symbol references in def-migration-up
  • fabric network builder: Fix nchoose2 sample networks and Makefiles.

2021-03-01: substrate v2.153.0-fabric2 Release

  • elps: Upgrade to v1.13.1

2021-02-25: elps v1.13.1 Release

  • elpstest: Fix timing for $load benchmark.

2021-02-19: substrate v2.152.0-fabric2 Release

  • shirocore: Fix bug in ymd date validations

2021-02-19: substrate v2.151.0-fabric2 Release

  • shirocore: Pre-load (pre-warm) phyla to improve load times

2021-02-17: substrate v2.150.0-fabric2 Release

  • mock substrate: Fix concurrency bug in plugin.

2021-02-11: substrate v2.149.0-fabric2 Release

  • mock substrate: Refactor internal libraries to better support hashicorp plugin.

2021-02-09: substrate v2.148.0-fabric2 Release

  • mock substrate: Add healthcheck to Hashicorp plugin.

2021-02-08: substrate v2.147.0-fabric2 Release

  • fabric network builder: Fix nchoose2 network generation.

2021-02-05: substrate v2.146.0-fabric2 Release

  • fabric network builder: Add support for nchoose2 vanity names.

2021-02-08: buildenv v0.0.36 Release

  • all: Add public docker make targets.

2021-02-03: substrate v2.145.0-fabric2 Release

  • shirocore: Add jaeger support for request tracing.
  • buildenv: Upgrade to v0.0.34.

2021-01-29: buildenv v0.0.35 Release

  • godynamic: Add azure cli.
  • js: Add azure cli.

We use cookies to give you the best experience of using this website. By continuing to use this site, you accept our use of cookies. Please read our Cookie Policy for more information.