953d63f | Bruce Merry | 08 September 2023, 12:52:18 UTC | Fix dependency on numpy and spelling of test-numba There was a typo in pyproject.toml that made 4.0.0 not depend on numpy at runtime. Also normalise the 'test-numba' extra (from 'test_numba'). | 08 September 2023, 12:52:18 UTC |
2ddae17 | Bruce Merry | 03 September 2023, 11:17:28 UTC | Merge pull request #263 from ska-sa/pyi-removals Remove .pyi file entries for removed functionality | 03 September 2023, 11:17:28 UTC |
0307a94 | Bruce Merry | 01 September 2023, 14:45:26 UTC | Remove .pyi file entries for removed functionality This was missed in #247. | 01 September 2023, 14:46:59 UTC |
0d1cfe7 | Bruce Merry | 01 September 2023, 14:44:23 UTC | Fix changelog entry made in wrong place | 01 September 2023, 14:44:23 UTC |
d8b23f3 | Bruce Merry | 01 September 2023, 14:42:48 UTC | Merge pull request #262 from ska-sa/wheel-fixed-builddir Build wheels in fixed build directory on Linux | 01 September 2023, 14:42:48 UTC |
247be83 | Bruce Merry | 01 September 2023, 12:37:55 UTC | Build wheels in fixed build directory on Linux This makes the debug info more usable, since it doesn't reference ephemeral build directories. See https://github.com/mesonbuild/meson-python/issues/440#issuecomment-1702668770 for more info. | 01 September 2023, 12:37:55 UTC |
e505fb4 | Bruce Merry | 01 September 2023, 11:07:21 UTC | Merge pull request #260 from ska-sa/release-notes-4.0 Add release notes for 4.0.0 final release | 01 September 2023, 11:07:21 UTC |
764e9f6 | Bruce Merry | 31 August 2023, 11:45:40 UTC | Add release notes for 4.0.0 final release Also bump the version number and update docs to reference the MacOS wheels. | 31 August 2023, 11:46:08 UTC |
1946a68 | Bruce Merry | 31 August 2023, 11:20:10 UTC | Merge pull request #259 from ska-sa/fix-test-fh-leak Clear some objects at the end of tests | 31 August 2023, 11:20:10 UTC |
c450550 | Bruce Merry | 31 August 2023, 10:58:55 UTC | Merge pull request #258 from ska-sa/cibuildwheel-macos-squash Create wheels for MacOS | 31 August 2023, 10:58:55 UTC |
adf8423 | Bruce Merry | 31 August 2023, 10:52:43 UTC | Reference pytest-dev/pytest#11374 in comments | 31 August 2023, 10:52:43 UTC |
c852e21 | Bruce Merry | 31 August 2023, 09:03:24 UTC | Merge pull request #256 from ska-sa/no-cuda-dep meson: simplify cuda_dep | 31 August 2023, 09:03:24 UTC |
dedfa92 | Bruce Merry | 31 August 2023, 09:01:16 UTC | Merge pull request #257 from ska-sa/doc-min-meson Document that Meson 1.2+ is required | 31 August 2023, 09:01:16 UTC |
8ccf75a | Bruce Merry | 29 August 2023, 18:34:57 UTC | Create wheels for MacOS | 31 August 2023, 08:45:33 UTC |
fa8127e | Bruce Merry | 31 August 2023, 08:35:14 UTC | Document that Meson 1.2+ is required The meson_version in meson.build doesn't really work, because old versions error out when seeing the unknown license_files kwarg. | 31 August 2023, 08:35:14 UTC |
2c93274 | Bruce Merry | 31 August 2023, 08:30:21 UTC | meson: simplify cuda_dep Using `dependency('cuda')` is only necessary if linking CUDA into a project that isn't using nvcc, or if using extra libs like cublas. Neither applies here, so I've replaced cuda_dep with an empty dependency. Dependencies are still helpful because one can use a disabler if CUDA is not found or is disabled by user options. | 31 August 2023, 08:30:21 UTC |
0338834 | Bruce Merry | 30 August 2023, 13:12:19 UTC | Clear some objects at the end of tests This is something of a hack to avoid running out of file descriptors. Probably deeper changes (and maybe even API changes) are needed to ensure that stopping a stream/queue is sufficient to release file descriptors held by semaphores. | 30 August 2023, 13:12:19 UTC |
dca65e2 | Bruce Merry | 30 August 2023, 12:47:49 UTC | Remove ccache-path.sh It's no longer used. | 30 August 2023, 12:47:49 UTC |
a4cb226 | Bruce Merry | 30 August 2023, 09:05:29 UTC | Merge pull request #250 from ska-sa/meson-improvements Meson improvements | 30 August 2023, 09:05:29 UTC |
7b70151 | Bruce Merry | 29 August 2023, 08:58:05 UTC | Add a comment explaining why not dependency('pybind11') | 29 August 2023, 09:32:38 UTC |
904a9bd | Bruce Merry | 29 August 2023, 08:32:45 UTC | Move the version number into VERSION.txt This avoid needing to mess with sed to extract it from meson.build. | 29 August 2023, 09:32:38 UTC |
18f2c35 | Bruce Merry | 29 August 2023, 08:06:17 UTC | Change gen_loader.py to write to file This is the recommended custom_target approach for meson. | 29 August 2023, 09:32:38 UTC |
7b2bfe7 | Bruce Merry | 29 August 2023, 07:54:16 UTC | meson: use py instead of py.full_path() It's not necessary to get the path to run the Python installation as an executable. Also use the detected Python to run get_version.py, so that it will work even if there isn't a 'python3' in $PATH (particularly useful when running pip install with a Python that isn't on $PATH). | 29 August 2023, 09:32:38 UTC |
231c3b5 | Bruce Merry | 29 August 2023, 07:46:42 UTC | Remove ninja from build-system.requires meson-python automatically installs it if needed. | 29 August 2023, 09:32:38 UTC |
86d510c | Bruce Merry | 29 August 2023, 07:11:32 UTC | Merge pull request #249 from ska-sa/fix-gdrapi-detection Fix detection of gdrapi | 29 August 2023, 07:11:32 UTC |
79c9b0f | Bruce Merry | 28 August 2023, 14:12:38 UTC | Work around meson bug in detecting gdrapi See https://github.com/mesonbuild/meson/issues/12169. This is only an issue if the user has configured extra arguments in the meson configuration. | 28 August 2023, 14:13:04 UTC |
8f2383b | Bruce Merry | 28 August 2023, 13:08:13 UTC | Fix detection of gdrapi It was using the C++ compiler for detection, but the CUDA compiler when building. They have different options to configure them (cxx_flags versus cuda_flags). The implementation is more complex than I would have liked, because the cuda compiler support in meson doesn't implement has_function. | 28 August 2023, 13:08:13 UTC |
e8e7850 | Bruce Merry | 28 August 2023, 11:27:29 UTC | Merge pull request #248 from ska-sa/prepare-release-4.x-2 A few more fixes before 4.x release | 28 August 2023, 11:27:29 UTC |
2d2279c | Bruce Merry | 28 August 2023, 11:22:23 UTC | Increase the TTL of gpudirect_example.cu It wasn't working in our lab without this. | 28 August 2023, 11:22:23 UTC |
5429487 | Bruce Merry | 28 August 2023, 11:21:10 UTC | Fix another lingering reference to nv_peer_mem | 28 August 2023, 11:21:10 UTC |
3ef5f07 | Bruce Merry | 28 August 2023, 11:16:50 UTC | Add cuda_std=c++17 to meson.build meson doesn't pass cpp_std to nvcc when compiling C++. | 28 August 2023, 11:16:50 UTC |
d9f73f1 | Bruce Merry | 28 August 2023, 11:01:24 UTC | Update some comments in gpudirect_example | 28 August 2023, 11:01:24 UTC |
6cfe2a8 | Bruce Merry | 28 August 2023, 10:58:49 UTC | Bump shared-lib-version in preparation for release | 28 August 2023, 10:58:49 UTC |
16d9f51 | Bruce Merry | 28 August 2023, 09:51:44 UTC | Merge pull request #247 from ska-sa/prepare-release-4.x Prepare for 4.x release | 28 August 2023, 09:51:44 UTC |
e24e329 | Bruce Merry | 28 August 2023, 09:34:17 UTC | Merge pull request #246 from ska-sa/meson Switch to Meson build system | 28 August 2023, 09:34:17 UTC |
6daf52c | Bruce Merry | 28 August 2023, 09:19:22 UTC | Merge pull request #239 from ska-sa/cxx17 Update to require at least C++17 | 28 August 2023, 09:19:22 UTC |
2fce3da | Bruce Merry | 28 August 2023, 08:27:55 UTC | Disable b_staticpic by default Meson defaults it to enabled, but it causes a performance regression compared to spead2 3.x. | 28 August 2023, 08:27:55 UTC |
a421cc6 | Bruce Merry | 26 August 2023, 13:09:46 UTC | CI improvements - Split linting into a separate step, that installs both Python 3.8 and 3.12 and hence should be able to run pip-compile (might need some tweaking to get paths right). - Use allow-prereleases on setup-python instead of specifying Python 3.12rc1 (so it will automatically switch to 3.12.0 on release). - Add a job that runs a matrix of build options to check for compilation failures. | 27 August 2023, 17:35:54 UTC |
1b7689d | Bruce Merry | 25 August 2023, 12:23:59 UTC | Remove all deprecated functionality | 27 August 2023, 17:35:54 UTC |
e50e75c | Bruce Merry | 25 August 2023, 10:36:34 UTC | Bump manylinux wheel versions of boost and rdma-core | 27 August 2023, 17:35:54 UTC |
77d99d8 | Bruce Merry | 25 August 2023, 10:32:25 UTC | Fix spead2_bench.py when ibverbs support is not compiled in | 27 August 2023, 17:35:54 UTC |
50b7b8f | Bruce Merry | 21 August 2023, 15:10:23 UTC | Fix pre-commit (black) errors on some files No idea how this has been passing CI up until now... | 27 August 2023, 17:33:56 UTC |
b5dc805 | Bruce Merry | 27 August 2023, 14:43:54 UTC | Remove target-version from tool.ruff No longer needed: ruff gets it from pyproject.python-requires. | 27 August 2023, 17:33:56 UTC |
2e49137 | Bruce Merry | 25 August 2023, 20:12:20 UTC | Fix more issues with combinations of options If CUDA is detected but ibv is not, it would try to build the gpudirect example; but it depends on ibv. | 27 August 2023, 17:33:56 UTC |
6736eaf | Bruce Merry | 25 August 2023, 14:46:54 UTC | Fix some bugs in detecting gdrapi If it wasn't detected, but CUDA was, it would try to build the gdrapi example anyway. Similarly if ibv wasn't detected but gdrapi was. Now make the gdrapi detection first check for ibv and cuda, and if it's not found, use a disabler. | 27 August 2023, 17:33:56 UTC |
2d16caf | Bruce Merry | 25 August 2023, 10:29:10 UTC | Don't try to detect ibv_hw_rate_limit without use_ibv Shouldn't really affect anything, but it give a smaller possible parameter space. | 27 August 2023, 17:33:56 UTC |
2162a75 | Bruce Merry | 25 August 2023, 10:25:50 UTC | Fix combination ibv=disabled mlx5dv=enabled Only try to detect mlx5dv if ibv libraries are found first. | 27 August 2023, 17:33:56 UTC |
03a90ca | Bruce Merry | 25 August 2023, 10:08:28 UTC | Write a draft changelog for 4.0.0b1 | 27 August 2023, 17:33:56 UTC |
32306bf | Bruce Merry | 25 August 2023, 10:02:08 UTC | Bump some copyright notices that got missed | 27 August 2023, 17:33:56 UTC |
7a73a85 | Bruce Merry | 25 August 2023, 08:05:07 UTC | Note change in pcap detection on migration page | 27 August 2023, 17:33:56 UTC |
c267a3b | Bruce Merry | 24 August 2023, 13:06:40 UTC | Python: switch visibility to inlineshidden This makes the module fractionally smaller. It's the default for meson for Python 3.9 and later. Since pybind11 takes care of exporting symbols I assume it ought to be safe on 3.8 as well. | 27 August 2023, 17:33:56 UTC |
acd4192 | Bruce Merry | 24 August 2023, 12:35:19 UTC | Note limitations on editable installs. | 27 August 2023, 17:33:56 UTC |
dcc175e | Bruce Merry | 24 August 2023, 12:26:03 UTC | Remove build-time deps from requirements.in There is a separate CI script that extracts build requirements from pyproject.toml, so we don't need to duplicate the information. | 27 August 2023, 17:33:56 UTC |
df886ae | Bruce Merry | 21 August 2023, 19:21:42 UTC | Use sccache in Github Actions There are a few advantages over ccache: - It uses Github Action's cache directly, instead of an on-disk cache. That makes it viable for cibuildwheel since there are no issues with persisting the cache between runs. - It has an official Action to set it up. Also use the 'cache' key on the setup-python action instead of trying to do it by hand. | 27 August 2023, 17:33:56 UTC |
bb56fcc | Bruce Merry | 23 August 2023, 13:25:46 UTC | Remove installation of ccache from cibuildwheel It was ineffectual, because there were no hits even between wheels for different Python versions, and it is not persisted between runs in an way. Something like the workaround described in https://github.com/pypa/cibuildwheel/issues/1030 would be needed. | 27 August 2023, 17:33:56 UTC |
6d7e144 | Bruce Merry | 23 August 2023, 13:25:19 UTC | Install libpcap from source in cibuildwheel This allows deploying a more recent version of it in the wheels. | 27 August 2023, 17:33:56 UTC |
340c9da | Bruce Merry | 23 August 2023, 10:02:49 UTC | Make readthedocs work again Now that Meson is the build system, it needed revisiting. The good news is that readthedocs can install apt packages now, so install the package "properly" instead of doing hacky stuff with mocks. | 27 August 2023, 17:33:56 UTC |
4822e0a | Bruce Merry | 23 August 2023, 09:28:27 UTC | Add back support for building a shared library | 27 August 2023, 17:33:56 UTC |
676a5dc | Bruce Merry | 22 August 2023, 19:35:10 UTC | Add max_log_level config option Replaces --enable-debug-log | 27 August 2023, 17:33:56 UTC |
89e4958 | Bruce Merry | 22 August 2023, 19:18:27 UTC | Strip down .gitignore - meson does only out-of-tree builds, so it's not necessary to ignore most of the build artifacts - mypy now writes a .gitignore into its cache directory | 27 August 2023, 17:33:56 UTC |
af0fd5a | Bruce Merry | 22 August 2023, 15:32:11 UTC | Start updating documentation for migration to 4.x | 27 August 2023, 17:33:56 UTC |
36c5bae | Bruce Merry | 22 August 2023, 14:37:28 UTC | Fix debug symbol extraction at end of cibuildwheel | 27 August 2023, 17:33:56 UTC |
1aa87b1 | Bruce Merry | 22 August 2023, 14:01:41 UTC | Avoid compiling spead2_cmdline.o multiple times | 27 August 2023, 15:46:13 UTC |
dc0ca29 | Bruce Merry | 22 August 2023, 13:40:14 UTC | Implement split debug for Python wheels | 27 August 2023, 15:46:13 UTC |
7e17be0 | Bruce Merry | 22 August 2023, 08:29:01 UTC | CI: no longer install libboost-system-dev It's a placeholder package now that boost-system is header-only. | 27 August 2023, 15:46:13 UTC |
46fa485 | Bruce Merry | 22 August 2023, 08:28:59 UTC | Add TODO about PEP 639 | 27 August 2023, 15:46:13 UTC |
43f134f | Bruce Merry | 21 August 2023, 14:15:47 UTC | Initial messing around with CI and Meson It will almost certainly fail (at least when it gets to cibuildwheel), but it'll be useful to see how far it gets. | 27 August 2023, 15:46:13 UTC |
353be0c | Bruce Merry | 27 August 2023, 15:07:37 UTC | Remove the old autotools/setuptools files. | 27 August 2023, 15:46:13 UTC |
4990931 | Bruce Merry | 22 August 2023, 09:18:08 UTC | Add meson.build for example directory Also add the detection for gdrapi. | 27 August 2023, 15:46:13 UTC |
58f7101 | Bruce Merry | 21 August 2023, 17:55:18 UTC | Skip building non-Python stuff in Python build | 27 August 2023, 15:46:13 UTC |
1eafaca | Bruce Merry | 22 August 2023, 07:55:55 UTC | Make meson.build the source of the version number spead2/_version.py is now generated rather than being the source of truth. | 27 August 2023, 15:46:13 UTC |
315f2b1 | Bruce Merry | 22 August 2023, 07:27:33 UTC | Handle libraries without pkgconfig setup - For rdma-core libraries, fall back to testing function presence in headers. - For pcap, use dependency('pcap', ...) when triggers special handling in meson. | 27 August 2023, 15:46:13 UTC |
3fded0b | Bruce Merry | 21 August 2023, 10:05:15 UTC | First attempt at generating Python build with meson | 27 August 2023, 15:46:13 UTC |
199596d | Bruce Merry | 21 August 2023, 14:19:54 UTC | Specify a minimum meson version Probably only 1.1 is required, but that's newer than most OSes will provide, so it might as well require 1.2 (the latest). | 27 August 2023, 15:46:03 UTC |
509b2be | Bruce Merry | 21 August 2023, 08:44:26 UTC | Generate common_loader_* as part of the build | 27 August 2023, 15:46:03 UTC |
25c2813 | Bruce Merry | 18 August 2023, 11:22:29 UTC | Initial work on meson build system | 27 August 2023, 15:46:03 UTC |
bafe539 | Bruce Merry | 21 August 2023, 15:00:03 UTC | Remove an unneeded lambda capture It was giving a warning on Clang and hence failing CI. | 27 August 2023, 14:11:57 UTC |
b25c65f | Bruce Merry | 21 August 2023, 15:14:28 UTC | Work around for GCC 9 It doesn't seem to properly handle [[maybe_unused]] on function parameters. | 27 August 2023, 14:11:57 UTC |
f8cfc72 | Bruce Merry | 25 August 2023, 20:12:32 UTC | Fix a number of compiler warnings I have no idea why these only started showing up after switching to Meson. They're all either unused variables (mostly function parameters that need to match a signature, but some dead code) and signed/unsigned comparisons. Some of them only showed up when using particular combinations of build options that weren't previously exercised. | 27 August 2023, 14:11:57 UTC |
0b56675 | Bruce Merry | 16 August 2023, 12:52:43 UTC | Make use of C++17 std::clamp | 27 August 2023, 14:11:57 UTC |
554d1df | Bruce Merry | 16 August 2023, 12:41:46 UTC | Make use of C++17 as_const | 27 August 2023, 14:11:57 UTC |
a9aa2a3 | Bruce Merry | 16 August 2023, 12:30:04 UTC | Get rid of definitions of constexpr members C++17 changes static constexpr class members to be implicitly inline, so it's no longer necessary to including a definition in a .cpp file. | 27 August 2023, 14:11:57 UTC |
461b251 | Bruce Merry | 16 August 2023, 12:05:45 UTC | Run CI with a wider range of compiler versions | 27 August 2023, 14:11:57 UTC |
9d8515e | Bruce Merry | 16 August 2023, 11:19:01 UTC | Use C++17 structured bindings to make code more readable | 27 August 2023, 14:11:57 UTC |
6c97fdf | Bruce Merry | 16 August 2023, 08:37:01 UTC | Use std::literals for chrono durations | 27 August 2023, 14:11:57 UTC |
c080716 | Bruce Merry | 16 August 2023, 08:15:52 UTC | Eliminate make_pair and make_tuple No longer needed in C++17 thanks to class template parameter deduction. | 27 August 2023, 14:11:57 UTC |
590d367 | Bruce Merry | 16 August 2023, 08:07:28 UTC | Update comment around cache_line_size | 27 August 2023, 14:11:57 UTC |
e9160d1 | Bruce Merry | 15 August 2023, 14:25:15 UTC | Introduce 'storage' class This replaces std::aligned_storage. It's a safer API, and aligned_storage is deprecated in C++23. Also make some use of std::launder where it seemed appropriate. Since I don't fully understand the rules around std::launder, I can't be sure I've put it in all the right places, but this should at least reduce the amount of undefined behaviour. | 27 August 2023, 14:11:57 UTC |
c39585b | Bruce Merry | 15 August 2023, 14:15:48 UTC | Use C++14 "..."s string syntax It's a bit more compact than std::string("...") | 27 August 2023, 14:11:57 UTC |
0eb5cc0 | Bruce Merry | 15 August 2023, 14:08:00 UTC | Simplify allocation of an aligned ringbuffer It seems like C++ (even C++11?) supports over-aligned types in automatic storage (it's just dynamic allocation that requires C++17), so the problem can be solved with `alignas` rather than doing alignment manually. | 27 August 2023, 14:11:57 UTC |
9436125 | Bruce Merry | 15 August 2023, 13:40:10 UTC | Make use of _t and _v helper types/values. | 27 August 2023, 14:11:57 UTC |
4e4e9c5 | Bruce Merry | 15 August 2023, 13:14:12 UTC | Make use of C++17 [[maybe_unused]] attribute This is more self-documenting and standardised than casting to void. | 27 August 2023, 14:11:57 UTC |
afbcf81 | Bruce Merry | 15 August 2023, 13:05:03 UTC | Use std::make_unique where appropriate This simplifies the pattern of creating a unique_ptr holding newly allocated memory. Since C++17 doesn't provide std::make_unique_for_overwrite (important for performance when allocating large arrays of raw storage space), add a home-brew implementation in common_unique.h. This file isn't intended to be part of the public API, so it is in the src directory rather than include (and fortunately it happens not to be needed by any of the header files). | 27 August 2023, 14:11:57 UTC |
e755e88 | Bruce Merry | 15 August 2023, 12:41:13 UTC | Avoid possible UB in test_ringbuffer.cpp When using placement new inside a char array on the stack, it wasn't laundering the pointer properly. I'm not 100% sure that's undefined behaviour, but it looks like the sort of thing std::launder is designed to protect against. | 27 August 2023, 14:11:57 UTC |
8c11ccc | Bruce Merry | 15 August 2023, 12:00:40 UTC | Reduce some copies in lambda expressions Use C++14 lambda capture initialisers to move instead of copy. | 27 August 2023, 14:11:57 UTC |
841bfc7 | Bruce Merry | 15 August 2023, 10:48:45 UTC | Update some comments around std::launder | 27 August 2023, 14:11:57 UTC |
6e612fc | Bruce Merry | 15 August 2023, 10:14:36 UTC | Use 'namespace A::B' C++17 syntax This reduces the code size a bit and makes it fractionally more readable. | 27 August 2023, 14:11:57 UTC |
4dc6f65 | Bruce Merry | 14 August 2023, 13:02:05 UTC | Simplify SPEAD2_PTMF macro Use C++17 features (auto template parameters and deduced return types) to significantly simplify the whole thing. It's also no longer necessary to fiddle with spurious GCC warnings, due to explicitly downcasting the this pointer. | 27 August 2023, 14:11:57 UTC |
93fb4b5 | Bruce Merry | 14 August 2023, 11:16:15 UTC | Simplify some return types using decltype(auto) | 27 August 2023, 14:11:57 UTC |
3385f73 | Bruce Merry | 14 August 2023, 10:51:49 UTC | Update an outdated comment referring to C++11 | 27 August 2023, 14:11:57 UTC |