Skip to content

Release/1.0.0#45

Merged
doodspav merged 13 commits into
mainfrom
release/1.0.0
Dec 25, 2024
Merged

Release/1.0.0#45
doodspav merged 13 commits into
mainfrom
release/1.0.0

Conversation

@doodspav

Copy link
Copy Markdown
Owner

[1.0.0] - 2024-12-25

Added

  • Initial stable API and ABI
  • Initial implementation supporting only atomic operations using <stdatomic.h>
    (no transaction operations are supported)
  • Complete binary testing except for thread-safety tests

doodspav added 13 commits March 12, 2023 19:36
## Scope

- create core source files (`includes/patomic/patomic.h` and
`src/patomic.c`)
- setup CMake to build and install library

---------

Signed-off-by: doodspav <doodspav@gmail.com>
## Scope

- create core test files (`test`)
- setup CMake to build and install tests
- each test has its own target as well as targets for test kind, and target for all tests
- each test kind group is its own component and can be installed per component
- all tests can also be installed together
- path is automatically set for tests run with ctest on windows (unless disabled via option)
- file containing path for test dependencies can be created on windows if option is enabled
- tests can be built as a completely independent project
- user can choose which tests to build using regex option

---------

Signed-off-by: doodspav <doodspav@gmail.com>
## Scope

- make `patomic_` options all-caps
- make `patomic_test_` options all-caps, rename slightly, and remove
`test` from prefix
- make project scope variables snake-case and remove `patomic_` prefix
- prefix argument names with `ARG_`
- move all options to the relevant `OptionVariables.cmake`

---------

Signed-off-by: doodspav <doodspav@gmail.com>
The few visible changes made:
- renamed `create_test(...)` to `_create_test(...)`
- added `create_bt(...)` and `create_ut(...)`
- BTs are skipped if `patomic::patomic` isn't available and can't be
found
- UTs are skipped if `patomic_test` isn't build as a sub-project of
`patomic` (because `patomic` sets `PATOMIC_{BINARY, SOURCE}_DIR`
variables for the UTs to find the required files)
- `gmock` currently not linked because it breaks automatic test lookup
(might add later once there's a pipeline)

---------

Signed-off-by: doodspav <doodspav@gmail.com>
- created CMake presets for compiling with the following flags (on supported platforms)
  - ansi
  - coverage
  - warning
  - sanitize
- improved tests:
  - tests now reside in their own `kind` directory
  - tests in CMake now have a label corresponding to their kind (to make it easier to run just one kind of test)
  - added a new kind, System Test (ST), currently used to check that sanitisers work
- add pipeline steps that:
  - run tests on all possible platforms, both natively and with QEMU, check that all tests succeed, and display results in GitHub summary and PR
  - check that we have achieved our minimum coverage goals, and display results in GitHub summary and PR
  - check that there are no fixmes/todos in code without an open GitHub issue linked
- update option variables:
  - `PATOMIC_BUILD_TESTING` now works properly, and depends on `PROJECT_IS_TOP_LEVEL`
  - `PATOMIC_INSTALL_CMAKEDIR` is now versioned
Implemented full public API with BTs on the API and UTs on the whole existing codebase.
Currently, only the null implementation exists.
- add macro wrappers for direct and cmpxchg implementations
- implement all operations using c11 std atomics
- added logic binary tests for all operations
- improved transaction api
  - split status into exit code, exit info, and abort reason
  - added fp_tdepth
- if fp_tdepth is supported, fp_ttest must also be supported and behave
identically to fp_tdepth
- if any raw operation is supported, both fp_tbegin and fp_tcommit must
be supported too
- if any non-flag operation is supported, all flag operations must be
supported, otherwise no flag operations may be supported
  - split fp_tabort into fp_tabort_single and fp_tabort_all
  - fp_tabort_all must be supported if fp_tabort_single is supported
- add `wrapped/tsx.h` to easily create transactional operations from
`tbegin` and `tcommit`
- remove `patomic_transaction_recommended_t`
- add `patomic_transaction_exit_info_t`
- change `PATOMIC_TRANSACTION_STATUS_ABORT_REASON` and corresponding
function to omit explicit abort check
- all transaction operations now abort without retry if flag is set
- add death tests
- assert on invalid orders in patomic_create
- license under LGPL3.0+ with linking exception
- add license and copyright notice to all files (except LICENSE.txt,
README.md, CHANGELOG.md, and json files)
- add a changelog
- rename .yml files to .yaml
- add pipeline check to ensure all files contain license and copyright
notice
@doodspav doodspav self-assigned this Dec 25, 2024
@doodspav doodspav requested a review from amaanq December 25, 2024 09:49
@doodspav doodspav merged commit 0b5d803 into main Dec 25, 2024
@doodspav doodspav deleted the release/1.0.0 branch December 25, 2024 10:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants