* reimplement threadpool
just a set of threads that get recycled
"ninja test" passes and dzsave seems to work, though pytest fails for
some reason
* clean up threading code a bit
move base stuff into thread.c, so we have a simple
thread -> threadset -> threadpool
layering
* start trying to revert g_threadpool
based on the original commit
* working!
nice low systime again
still need to repply cnages to threadpool.c since 80e0cc3d1
* reapply fixes from master
so threadpool.c is now up to date
* rename VipsThread as VipsWorker
a bit less confusing
* use a semaphore to count workers in a pool
* tidy up
* formatting
* dynamic threadpool sizing
based on counting the number of blocked threads in each pool
it works, but the improvement is not great :(
* add "concurrency" metadata item
so operators can hint threadpool size (dzsave especially)
* don't use thinstrip for small images
* add RGB mode to openslide
since flatten was taking 20% of CPU time for dzsave
* fix up rgb mode
now actually works
* make the tile buffer per thread
in the new openslideload rgb mode
* fix dynamic pool downsize
* mild refactoring
* fix the buffer system
oops, turned it off by mistake
* all done!
* revise changelog
* Update libvips/iofuncs/threadset.c
Co-authored-by: Kleis Auke Wolthuizen <github@kleisauke.nl>
* Update libvips/iofuncs/threadset.c
Co-authored-by: Kleis Auke Wolthuizen <github@kleisauke.nl>
* LSan: add libMagickCore to suppression file
* Revert "Remove mutex lock for VipsThreadStartFn"
This reverts commit 41440491.
* add VIPS_MAX_THREADS
to set a hard limit on the threadset size
* Revert "Revert "Remove mutex lock for VipsThreadStartFn""
This reverts commit 77e8520966ba79194fff3b4e648bbd295cd5c260.
* remove sslock from sink.c
* move fixed threadpool build to init
not first use
* add some doc comments
* revert test suite threshold change
* add a test for MAX_THREADS
and move the test tmp/ area into the builddir
* limit VIPS_MAX_THREADS to sane values
* use tabs rather than spaces
Co-authored-by: Kleis Auke Wolthuizen <github@kleisauke.nl>
* tests: consolidate redundant, duplicated helper code
These functions currently exist in a sourced shell library, but there is
an identical copy of them in a single test file. Get rid of this
duplicate definition.
* tests: mark some tests as skipped if bc is not installed
`exit 77` is the GNU exitcode protocol for tests that cannot be run
because their prerequisites are not available. If `bc` is not installed,
and it often isn't, the test can be short-circuited instead of failing;
meson will report them in "warning yellow".
* tests: mark some tests as skipped if support is not compiled
Not all test cases can be cleanly marked as skipped -- sometimes,
multiple things are checked, and having one be unavailable should not
mean skipping all tests.
But in a couple cases, a test file only tests one thing, and that may be
skipped. In such cases, it can be semantically indicated in the test
harness report collection, that a skip occurred.
* CI: upgrade macOS runner to version 12 (Monterey)
* CI: upgrade actions/checkout to v3
* CI: remove retry logic for apt
The Linux runners on GitHub Actions already retries up to 10 times,
see:
6c93c24107/images/linux/scripts/base/apt.sh (L11-L12)
* CI: remove redundant `DEBIAN_FRONTEND=noninteractive` env
The Linux runners on GitHub Actions already sets this env variable,
see:
6c93c24107/images/linux/scripts/installers/dpkg-config.sh (L10)
* CI: remove redundant `HOMEBREW_NO_AUTO_UPDATE=1` env
The macOS runners on GitHub Actions already sets this env variable,
see:
6c93c24107/images/macos/provision/configuration/environment/bashrc (L26)
* CI: prefer shorthand flag of apt-get `--fix-missing`
* CI: install libjxl on macOS runner
* Update test suite's README.md
To disable DoS limits for JPEG loading. Adding API on a stable branch is
bad, but this fixes a regression, so I think it's necessary,
unfortunately.
See https://github.com/libvips/libvips/issues/2973
* Allow to modify/create EXIF GPS* tags
Make `tag_is_ascii` aware of the EXIF GPS* ASCII tags that are
available since libexif 0.6.23.
See: https://github.com/lovell/sharp/issues/2767
* Add tests
* remove autotools
It seems to all work. I tested with gtk-doc enabled. I probably missed a
few things argh.
* remove some old cruft
* oop, forgot m4/
* remove version check
since we no longer have a wrapper script
* CI: upgrade runner to Ubuntu 22.04
- Compile with GCC 11 and Clang 14.
- Remove redundant PPAs.
- Use system provided Meson.
- Update LeakSanitizer suppressions.
* CI: ensure `VIPS_BLOCK_UNTRUSTED` is tested
`magicksave` cannot be used for testing when building with
`-Dmodules=enabled` (default), since that would require the
loadable modules to be installed first.
* Allow to modify/create EXIF 2.3 ASCII tags
Make `tag_is_ascii` aware of the EXIF 2.3 ASCII tags that are
available since libexif 0.6.22.
See: https://github.com/kleisauke/net-vips/issues/167
* Fix CI
* quick proposal
warn on startup if untrusted operations might run
use vips_block_untrusted_set() to block untrusted operations, set an env
var or make a file to stop the warning
* mark fits, nifti and svg as untrusted
* remove the annoying "untrusted" warning message
better to warn on the download page
leave vips_block_untrusted_set() since it's obviously useful
* separate UNTRUSTED and BLOCKED
* typos
* add VIPS_BLOCK_UNTRUSTED env var
* move BLOCK_UNTRUSTED after plugin load
obviously, ooops
* add a test, disable *magick
although *magick is fuzzed, it's probably safer to disable it in
untrusted environments
* mark some more operations as untrusted
* LSan: remove GLib suppression
* LSan: disable the fast unwinder to get full stacktraces
* Move ASan/UBSan fuzzer options to CI configuration
* LSan: remove EOLed python2.7 suppression
* LSan: remove libstdc++ suppression
* LSan: add libx265 to suppression file
* Try to reproduce small memleak
* Try a possible patch
* Skip test if `im_benchmark` is not available
* CI: upgrade Clang version to 13
* CI: correct job names
* Meson: increase the timeout for tests
* README.md: correct Meson invocation
- Remove unused libgif-dev dependency from CI.
- Remove no longer relevant comment from testsuite.
- Use yes/no instead of boolean values in configure.ac.
Instead of a simple fail/don't-fail boolean switch, add fail-on, an enum which sets the sensitivity of loaders to errors.
There's a new sensitivity level which tries to detect truncated images, but ignores other types of error.