2.8.0
Major Changes
Database & performance
- better read/write concurrency on the local DB
- Schema bumped to v42: 15 redundant single-column indexes dropped, flavors VIEW added, shlib_id indexes added
- Read-only databases opened with SQLITE_OPEN_READONLY, falling back to immutable=1
- Binary repositories: 16K pages and synchronous=OFF during bulk catalog updates
- Implicit SQL-89 JOINs converted to explicit JOIN syntax, several queries optimized
- Some database concurrency issues fixed
New features
pkg-checksum(8): new command to generate and validate checksums- Blake2b used everywhere possible for checksums; repositories use blake2 instead of sha256
rwhich: file tracking and search for remote repositories (requires repositories to be built with -l)pkg delete -G/--exclude-glob: exclude packages by glob pattern- Repositories: enable/disable/reset support
pkg autoremove -qn: quiet, script-friendly outputpkg query: %{...} falls back to pkg_printf(3) evaluation- lua:
pkg.exec_capture-- captures stdout/stderr of pkg.exec - plist: @for ... @end loops and # comments
- Triggers: per-file instead of per-directory
- RC script support rewritten to be safer
- DECOMPRESSION_THREADS respected when decompressing
- Arbitrary data can be stored in the repository meta file
- OSVf updated to official JSON schema 1.7.5 with CVE name parsing and osv_type for VuXML compatibility
- Periodic script for dependency checking
- CheriBSD and CheriABI OS/ABI declared
Minor Changes
- Handle getgrnam_r/getpwnam_r upon ERANGE
- Replace system() with execlp() for man page display
- query_select no longer discards valid input on EOF without newline
- Handle trailing %% in printf format strings
- input validation hardened via fuzzing
- which: always show the matched path
- info -e: only return 0 if all packages on the command line exist
- install: respect -q
- upgrade: do not propose downgrades to solve provides/requires
- upgrade: clarified messages for missing packages and changes
- fetch: respect RFC 3986
- lock: do not error in expected (un)lock state
- shlibs: also remove ignored shlibs provided from shlibs required
- backup_libraries: atomic replacement, fully respects rootdir
- backup_lib: prevent accumulating old libs and badly matching them
- DB: loudly complain if the DB cannot be opened
- DB: in case of remote DB corruption, destroy it to allow rebuilding
- Repo: do not delete repositories in overrides, simply disable them
- Honor --repository flag for disabled repos as documented
- search: improved error message and fixed multiple JSON formatted results
- update: warn when trying to update a non-existent repository
- fingerprints: fallback on the host to find them when using -r
- libelf: fix Linux/powerpc64 build
- libecc: support Linux/ppc64
- pkg-which: fix spurious warning message with -p
- extract: prefer mtime from manifest over archive
- periodic: daily checksum is now off by default
- plug multiple memory leaks and resource leaks
Dependency updates
- SQLite 3.53.2
- Lua 5.4.8
- libucl 0.9.5