Skip to content

v0.4.5

Choose a tag to compare

@manishmeganathan manishmeganathan released this 26 Oct 15:43
· 140 commits to main since this release

pip install xquad now installs the xquad command, with the XQVM tools under xquad vm and a new xquad quip group for Quip accounts, job orders and receipts. SolverQuip gains named accounts, a read-only client and a TLS context option, and every job order it sends now settles from finalized chain state. SolverQuip needs a Quip network on runtime 119 or later.

Highlights

  • The xquad CLI ships with pip install xquad (or python -m xquad): xquad vm asm, dis, run and check, with the flags, output and exit codes of xqcli.
  • xquad quip account list|show|new|import|use manages named Quip accounts at project and user level; xquad quip orders, status and reclaim read and reclaim an account's job orders. --json gives machine-readable output.
  • SolverQuip resolves its signer through named Quip accounts, and SolverQuip(read_only=True) reads balances, orders and receipts without loading a key. New balance(), reserved() and order_slots().
  • SolverQuip(ssl_context=...) uses your TLS context for the RPC connection and the faucet request, for example to check revocation.
  • xqffi.vm.Vm.run writes the VM's text or JSON trace to a file.

Behaviour changes

  • xqcli is decommissioned. Its last release, 0.4.4, keeps working; from 0.4.5 the CLI is the xquad command installed with pip. If you installed it with Cargo, run cargo uninstall xqcli so the old binary does not shadow xquad on PATH.
  • SolverQuip sends the energy ceiling as max_energy_milli only, so it can propose only on runtime 119 or later. It checks the node's runtime and genesis on connect, and fails with QuipMetadataError or GenesisMismatch before sending anything.
  • The signed-extension order is read from the runtime metadata instead of a fixed list.
  • submit() returns at finality, a few blocks later than before. A send it cannot settle leaves the order in the new sending state and raises QuipSubmitIncompleteError; the order is safe to keep and resume. propose_job is signed with a mortal era.
  • Without seed= or keystore=, SolverQuip picks its signer from QUIP_SIGNER_SEED, QUIP_KEYSTORE, the project preference, the user preference, then the default account, and logs the keystore a preference chose.
  • CLI errors print as one line; the source snippets xqcli printed are gone.
  • The quip extra needs certifi 2026.10.19 or later, after eMudhra's TLS intermediates were revoked.

Deprecations

  • xquad asm, dism, run and verify: use xquad vm asm, dis, run and check. They still work and print a deprecation line. Removed in v0.6.0.
  • xqsa.quip.signing.SIGNED_EXTENSIONS: the order comes from the runtime metadata. Removed in v0.6.0.
  • QuipUnconfirmedError and the unconfirmed order state: replaced by QuipSubmitIncompleteError and sending. An order pickled as unconfirmed by 0.4.3 or 0.4.4 still loads, warns, and is never sent again. Removed in v0.6.0.

Packages

Registry Packages
crates.io xqvm · xqasm
PyPI xquad · xqsa · xqcp · xqffi · xqvm_py
pip install xquad==0.4.5

Documentation: developers.quip.network/docs/xquad

Full changelog (33 changes)

Added

  • xquad: Add xquad quip for Quip accounts and order receipts
  • xqsa: Add the account and order reads the quip CLI needs
  • xquad: Add the xquad CLI with vm asm, dis, run and check
  • xqffi: Write a text or JSON trace from Vm.run
  • xqsa: Let SolverQuip take a TLS context for RPC and faucet
  • xqsa: Add a read-only SolverQuip client and balance()
  • xqsa: Resolve the SolverQuip signer through Quip accounts
  • xqsa: Add named Quip accounts and account preferences
  • xqsa: Allow a Quip network preset with no faucet
  • xqsa: Check the runtime and genesis on every Quip connect
  • xqsa: Take the signed-extension order from runtime metadata
  • xqsa: Leave an interrupted send in the sending state
  • xqsa: Add the sending state and QuipSubmitIncompleteError
  • xqsa: Settle a sent propose_job from finalized state
  • xqsa: Sign propose_job with a mortal era

Changed

  • xqsa: Require runtime 119 by sending max_energy_milli only
  • xqcli: Remove the crate now the CLI ships with xquad
  • xquad: Load submodules lazily and alias the bridges

Deprecated

  • xqsa: Retire SIGNED_EXTENSIONS behind a warning
  • xqsa: Retire the unconfirmed state and QuipUnconfirmedError

Documentation

  • Update the install steps and the macOS DevNet setup
  • Document the v0.4.5 SolverQuip and xquad quip surface
  • Give the xquad CLI its own part of the book
  • Use xquad quip account show in the first-job tutorial
  • Install the xquad CLI with pip and document xquad vm
  • Import xquad namespaces in the book and examples
  • xqsa: Describe SolverQuip's ssl_context and revocation route
  • xqsa: Document Quip accounts and the new signer precedence
  • xqsa: Say the signed-extension order comes from the chain

Fixed

  • xqsa: Cache unreadable receipt facts apart from read faults
  • xqsa: Close a Quip connection on every failed connect
  • xqsa: Read the order id from our own JobProposed event

Security

  • xqsa: Require certifi 2026.10.19 for the eMudhra distrust

Full diff: v0.4.4...v0.4.5