Skip to content

AhdCode v2.5.0 — Deployment & Systems Primitives

Choose a tag to compare

@aliharundaldalli aliharundaldalli released this 28 Sep 16:21
· 3 commits to main since this release

AhdCode v2.5.0 adds deployment and systems primitives: the building blocks of a deployment worker, such as the AhdCode Panel's, without a shell and without Python.

Archive

  • Archive.list and safe-by-default Archive.extract for ZIP, TAR, and TAR.GZ
  • path traversal, absolute, drive, and UNC paths rejected; symbolic-link and hard-link entries rejected, never followed
  • bounded extraction (maxFiles, maxBytes, checked before writing and again while streaming), all-or-nothing into a new directory
  • ArchiveEntry with path(), kind(), size()

File

  • File.copy: binary-safe and streaming; it never overwrites
  • File.atomicWrite: same-directory temporary file, fsync, rename
  • File.atomicMove: a rename only; a cross-filesystem move is refused, never copied
  • File.symlink(target, link), File.readLink, File.isSymlink
  • File.walk: bounded, never follows symbolic links; FileEntry
  • Unix permissions as octal Strings: File.setPermissions(path, "0755"), File.permissions(path)

Process (new module)

  • Process.run(command, args) starts an executable directly with a List<String> of arguments, never through a shell
  • finite timeoutSeconds and maxOutputBytes; on Unix the whole process group is killed on timeout or overflow
  • ProcessResult (exitCode(), stdout(), stderr()); launch failures, timeouts, and overflow raise ProcessError

SQLite

  • db.backupTo(path): a consistent, integrity-checked snapshot of a live database using SQLite's online backup API

All new APIs behave the same in the REPL evaluator and in native builds, and they have editor completion, hover, and signature help. Process is now a standard module name.

Distribution
v2.5.0 is distributed as portable command-line packages (bin/ahdcode plus libexec/ahdcode/ helpers). Installer packages return in v2.7. The portable packages do not bundle the Go toolchain: ahdcode build and ahdcode run use Go 1.26.4 or later from PATH. LaTeX, PDF, and Plot math rendering need the offline Tectonic renderer (AHDCODE_LATEX_RUNTIME). Verify the downloads with SHA256SUMS.txt.