Skip to content

v1.93.0

Choose a tag to compare

@claude claude released this 29 Oct 14:57

Changes

  • lint: report a repeated match pattern (#915)
  • lisp: add a vector pattern to match (#914)
  • ci: fetch full history for the API break gate on push
  • libschema: fix the final review of record refusals (#908)
  • libschema: fix the review of the load rule (#908)
  • libschema: refuse s:defmethod outside a load (#908)
  • libschema: fix the fourth review of record refusals (#908)
  • libschema: fix the third review of record refusals (#908)
  • libschema: fix the second review of record refusals (#908)
  • libschema: fix the review of record refusals (#908)
  • libschema: refuse record writes and late methods at run time (#908)
  • lisp: fix the review of let binding patterns (#910)
  • lisp: destructuring patterns in let and let* bindings (#910)
  • lsp: drop a named return in a record method test (#897)
  • lint: fix the second review of the record method checks (#897)
  • lint: share the symbol prefilter and snapshot scopes only at methods (#897)
  • lint: keep workspace record methods per file, production only (#897)
  • lint: read s:defmethod load scope from the CodeWalker (#897)
  • lint: add record-defmethod-not-toplevel for call-time s:defmethod (#897)
  • lint: know s:defmethod methods from other workspace files (#897)
  • lint: add record-captured-set for set! of a closure local in a method (#897)
  • libschema: check each object once in ValidateLoaded (#897)
  • lisp: add LEnv.RegisterBuiltins, which binds no name (#907)
  • libschema: typed methods, interfaces, s:is?, match; rename s:set!; new lint checks (#906)
  • Skip ExpandChecked's walk when no check of it can fail (#902)
  • libschema: add s:make-interface and Go method formals (#901)
  • libschema: document that a record method call is atomic
  • lint: expand the record macros without expander mode
  • libschema: run :check once per outermost record call
  • lint: add record-method-arity, record-defmethod-type and record-plain-set
  • libschema: name a method's receiver as its first formal
  • lint: add record-unknown-member and record-check-writes
  • lint: skip the record checks in forms with no s: symbol
  • libschema: format the record type tests with elps fmt
  • lint: find record check sites with FindCallSites
  • lint: record checks accept defconst and share one walk
  • libschema: run :check after each method and restore fields on failure
  • lint: add record type checks
  • libschema: add record types with methods
  • Bump qs from 6.15.2 to 6.17.0 in /editors/vscode (#899)
  • Bump vscode-languageclient in /editors/vscode in the vscode-deps group (#888)
  • Add Template.ExpandChecked, which expands with quasiquote's checks (#896)
  • Add Go function objects (lisp.NewCapturedFun) and save them in durable dumps (#893)
  • Bump the actions group across 1 directory with 2 updates (#892)
  • Cut releases with the org's shared release workflow (#891)

Breaking changes

API break overrides added since v1.92.0 (surface | symbol | expires | issue | reason):

  • go | analysis.RecordMacroTest | 2027-01-29 | elps#908 | in no tagged release; returns a test per top-level form so a bare head resolves in its form's package. Callers call RecordMacroTest(scope, exprs)(top) for each top-level form
  • lisp | s:set! | 2027-01-28 | elps#903 | in no tagged release; renamed s:set-field! because (use-package 's) hid lisp:set!. Callers write (s:set-field! obj 'field v)