What's New¶
Significant features and upgrades, newest first. Minor bugfixes are omitted — see the commit log for the full history.
Filter by tag — use your browser's find (Ctrl+F) with any #tag below: #cli #performance #streams #fps #build #docs #api #refactor
framework-dev¶
2026-10¶
- 2026-10-21 — The
cacaomodules (AOloopControl*,computeCalib,pyramidWFStools) migrated toMILK_RUNNABLE: each module has one registry and one header, thecacao-fpsexec-*executables are generated fromEXPORT_FPSEXEC, and themodalstatsTUIsources are parked inAOloopControl/tui/#api#build#refactor - 2026-10-15 — The macro-based "V2 8-section" compute unit framework is removed (
FPS_MAIN_STANDALONE_V2,INSERT_STD_PROCINFO_COMPUTEFUNC_*,CLIADDCMD_*,add_milk_standalone/add_cacao_standalone*,MILK_MODULE/init_module_CLI): every compute unit is aMILK_RUNNABLE, built bymilk_add_runnable_module()#api#build#refactor - 2026-10-14 —
milk_module_examplemigrated toMILK_RUNNABLE: the template unitsimsum1,imsum2,streamupdate,streamprocessandfpscliare listed in one module registry, and the template executables are generated fromEXPORT_FPSEXEC#api#build#docs - 2026-10-14 —
linalgebramigrated toMILK_RUNNABLE: its CLI commands are listed in one module registry, mandated (CUDA, MAGMA, LAPACKE) units are weak, and the 11 executables are generated fromEXPORT_FPSEXEC#api#build - 2026-10-11 — New
libcomputeunitengine library holds the FPS runtime (standalonemain, tmux, conf/run, bindings, standalone macros);libfpsis reduced to the FPS struct and no longer depends onUSE_CLI.fpsCTRLandprocCTRLmove tosrc/tui/, and the CLI wrapper now lives inlibmilkscript. Includecomputeunit.hinstead offps.hfor the runtime API#build#api#refactor#fps - 2026-10-09 —
MILK_RUNNABLEdescriptors: several CLI commands / fpsexecs per file, sources compiled once, generatedmain()stubs viaEXPORT_FPSEXEC(test modulerunnabletest)#api#build - 2026-10-06 — Reorganized
docs/into topic subfolders (quickstart/,guide/,developer/,arch/,operations/,maintenance/) matching the site navigation#docs
2026-03¶
- 2026-03-29 — Complete CLI/Scripting layer decoupling; introduction of
libmilkscriptengine and standalonemilk-scriptinterpreter#cli#refactor - 2026-03-26 —
@seq.NAME.propvariable expansion for sequencer state in CLI scripts#cli#fps(#183) - 2026-03-25 —
milk-seqstandalone sequencer, fpsCTRL and milk-cli integration#fps#cli - 2026-03-25 — Module dependency system with
MODULE_DEPSmacro#api#build(PR #169) - 2026-03-24 — Remove legacy
s>stream modifier; consolidate to@S:syntax#streams#refactor(PR #168) - 2026-03-24 — Split CLIcore monolithic sources into smaller modules
#cli#refactor(PR #165) - 2026-03-24 — CLI bitwise ops, string functions, processinfo integration
#cli(PR #164) - 2026-03-24 — Compound assignments, ternary operator, numeric literals,
untilloops#cli(PR #163) - 2026-03-24 — Dual prompt/command history with type-tagged log
#cli(PR #161) - 2026-03-23 — FITSIO-like stream slicing syntax (
im[0:19,10:29])#streams#cli(PR #157) - 2026-03-23 — CLI pipe operator
|>,on_fpschange,listimglob, error context#cli(PR #153) - 2026-03-23 — Notify user of adopted default arguments
#cli(PR #152) - 2026-03-23 — Advanced CLI introspection, regex
=~, array splats, dynamic PS1#cli(PR #151) - 2026-03-22 — Native shell expansions and arithmetic evaluation in CLI scripts
#cli(PR #150) - 2026-03-22 — Advanced script template and argparse improvements
#cli(PR #147)
2026-02¶
- 2026-02 — Remove function-pointer overhead from pixel loops
#performance(PR #146) - 2026-02 — Dynamic FIFO handling for CLI
#cli(PR #144) - 2026-02 — Typed CLI variables & subprocess shell pipe parsing
#cli(PR #141) - 2026-02 — Add
-c(command) flag to milk-cli#cli(PR #139) - 2026-02 — Bi-directional environment variable sync and subshell assignments
#cli(PR #138) - 2026-02 — Machine-readable JSON and TSV output for CLI
#cli#api(PR #136) - 2026-02 — CLI
wordexp()simplification and smart fallback#cli(PR #130) - 2026-02 — Pipe to shell commands (grep, sort, wc)
#cli(PR #126) - 2026-02 —
ghistory/lhistorywith time range, glob, session highlight#cli(PR #124) - 2026-02 — Break help into topics;
help-<topic>commands#cli(PR #121) - 2026-02 — CLI scripting variables, aliases, bookmarks, and history
#cli(PR #116) - 2026-02 — Session-aware history commands
#cli(PR #111) - 2026-02 — Advanced scripting: env vars, conditional chaining, history, continuation
#cli(PR #107, PR #109)
2026-01¶
- 2026-01 — Standalone
fpsexecexecutables for image_gen (mkpolygon, mkdisk, mkspdisk)#fps#build(PR #103, PR #104) - 2026-01 — Fully static musl fpsexec build support
#build#performance(PR #99) - 2026-01 —
USE_STATIC_LTOcross-module LTO for fpsexec standalones#build#performance(PR #55) - 2026-01 — Context-aware tab completion for streams and FPS
#cli(PR #92) - 2026-01 — Runtime perf sweeps 1–10: SIMD alignment, restrict, omp simd, BLAS MVM, powf specialization,
__builtin_memcpy, UINT16 fast-path#performance(PR #53, PR #91) - 2026-01 — PGO per-executable profile isolation
#build#performance - 2026-01 — GCC optimization infrastructure (
milk_compiler.h) + codebase-wide annotations#performance#api - 2026-01 — Reduce transitive includes in
CLIcore.handfps.h#build#refactor(PR #54) - 2026-01 — MkDocs Material documentation site
#docs(PR #57) - 2026-01 — Codebase-wide IMGID API migration (streams, FFT, linalgebra, image_basic, …)
#api#refactor - 2026-01 — Gen 4 V2 CLI registration for all modules
#cli#refactor - 2026-01 — FPS parameter tab-completion + argument hints
#cli#fps(PR #71)