[med-svn] [Git][med-team/libatomic-queue][master] 3 commits: New upstream version 1.6.9

Stephan Lachnit (@stephanlachnit) gitlab at salsa.debian.org
Tue Jun 24 20:12:16 BST 2025



Stephan Lachnit pushed to branch master at Debian Med / libatomic-queue


Commits:
f2b7705e by Stephan Lachnit at 2025-06-24T20:31:38+02:00
New upstream version 1.6.9
- - - - -
889d3f8a by Stephan Lachnit at 2025-06-24T20:31:38+02:00
Update upstream source from tag 'upstream/1.6.9'

Update to upstream version '1.6.9'
with Debian dir 2b8f75ee73d9c0a66b86b1aaffe24a563130dbd0
- - - - -
ad2de3d8 by Stephan Lachnit at 2025-06-24T21:11:09+02:00
Update to 1.6.9 and build using meson

- - - - -


24 changed files:

- + .github/workflows/ci-meson.yml
- .github/workflows/ci.yml
- CONTRIBUTORS.txt
- Makefile
- README.md
- debian/changelog
- debian/control
- − debian/libatomic-queue0.symbols
- − debian/patches/compiler.patch
- − debian/patches/concurrentqueue.patch
- − debian/patches/fix_unused_variable.patch
- − debian/patches/generate-shared-library.patch
- − debian/patches/no-native
- − debian/patches/no_thin_archives.patch
- − debian/patches/series
- debian/rules
- debian/salsa-ci.yml
- debian/tests/control
- debian/tests/run-unit-test
- include/atomic_queue/atomic_queue.h
- include/atomic_queue/defs.h
- meson.build
- meson_options.txt
- src/tests.cc


Changes:

=====================================
.github/workflows/ci-meson.yml
=====================================
@@ -0,0 +1,34 @@
+name: Meson Continuous Integrations
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+
+jobs:
+  build-and-test:
+    strategy:
+      fail-fast: false
+      matrix:
+        cpp_compiler: [g++, clang++]
+        sanitize: [address ,undefined, thread]
+
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: actions/checkout at v4
+
+      - name: Install Meson and Boost.Test
+        run: sudo apt-get --quiet --yes install meson libboost-test-dev
+
+      - name: Setup
+        env:
+          CXX: ${{ matrix.cpp_compiler }}
+        run: meson setup build -Dwerror=true -Dwarning_level=3 -Db_sanitize=${{ matrix.sanitize }}
+
+      - name: Compile
+        run: meson compile -C build
+
+      - name: Test
+        run: meson test -C build --print-errorlogs


=====================================
.github/workflows/ci.yml
=====================================
@@ -11,11 +11,7 @@ jobs:
     strategy:
       matrix:
         toolset: [gcc, clang]
-        os: [ubuntu-20.04, ubuntu-22.04, ubuntu-24.04]
-        include:
-            - sanitize: 1
-            - os: ubuntu-20.04 # Work-around for https://bugs.launchpad.net/ubuntu/+source/gcc-10/+bug/2029910
-              sanitize: 0
+        os: [ubuntu-22.04, ubuntu-24.04]
 
     runs-on: ${{ matrix.os }}
 


=====================================
CONTRIBUTORS.txt
=====================================
@@ -18,3 +18,10 @@ Contributors:
 - Yvan (https://github.com/max0x7ba/atomic_queue/pull/63)
 - Luiz Feldmann (https://github.com/max0x7ba/atomic_queue/pull/72)
 - dummyunit (https://github.com/max0x7ba/atomic_queue/pull/73)
+- NakanoMiku (https://github.com/max0x7ba/atomic_queue/pull/74)
+- Stephan Lachnit (https://github.com/max0x7ba/atomic_queue/pull/77)
+- Stephan Lachnit (https://github.com/max0x7ba/atomic_queue/pull/78)
+- Stephan Lachnit (https://github.com/max0x7ba/atomic_queue/pull/79)
+- Stephan Lachnit (https://github.com/max0x7ba/atomic_queue/pull/80)
+- Stephan Lachnit (https://github.com/max0x7ba/atomic_queue/pull/81)
+- Stephan Lachnit (https://github.com/max0x7ba/atomic_queue/pull/82)


=====================================
Makefile
=====================================
@@ -38,23 +38,24 @@ AR := ${ar.${TOOLSET}}
 cxxflags.gcc.debug := -Og -fstack-protector-all -fno-omit-frame-pointer # -D_GLIBCXX_DEBUG
 cxxflags.gcc.release := -O3 -mtune=native -ffast-math -falign-{functions,loops}=64 -DNDEBUG
 cxxflags.gcc.sanitize := ${cxxflags.gcc.release} -fsanitize=thread
-cxxflags.gcc := -pthread -march=native -std=gnu++14 -W{all,extra,error,no-{maybe-uninitialized,unused-variable,unused-function,unused-local-typedefs,error=array-bounds}} -g -fmessage-length=0 ${cxxflags.gcc.${BUILD}}
+cxxflags.gcc := -std=gnu++14 -pthread -march=native -W{all,extra,error,no-{array-bounds,maybe-uninitialized,unused-variable,unused-function,unused-local-typedefs}} -fmessage-length=0 ${cxxflags.gcc.${BUILD}}
 ldflags.gcc.sanitize := ${ldflags.gcc.release} -fsanitize=thread
 ldflags.gcc := ${ldflags.gcc.${BUILD}}
 
-cflags.gcc := -pthread -march=native -W{all,extra} -g -fmessage-length=0 ${cxxflags.gcc.${BUILD}}
+cflags.gcc := -pthread -march=native -W{all,extra} -fmessage-length=0 ${cxxflags.gcc.${BUILD}}
 
 cxxflags.clang.debug := -O0 -fstack-protector-all
 cxxflags.clang.release := -O3 -mtune=native -ffast-math -falign-functions=64 -DNDEBUG
 cxxflags.clang.sanitize := ${cxxflags.clang.release} -fsanitize=thread
-cxxflags.clang := -stdlib=libstdc++ -pthread -march=native -std=gnu++14 -W{all,extra,error,no-{unused-variable,unused-function,unused-local-typedefs}} -g -fmessage-length=0 ${cxxflags.clang.${BUILD}}
+cxxflags.clang := -std=gnu++14 -pthread -march=native -stdlib=libstdc++ -W{all,extra,error,no-{unused-variable,unused-function,unused-local-typedefs}} -fmessage-length=0 ${cxxflags.clang.${BUILD}}
 ldflags.clang.sanitize := ${ldflags.clang.release} -fsanitize=thread
+ldflags.clang.debug := -latomic
 ldflags.clang := -stdlib=libstdc++ ${ldflags.clang.${BUILD}}
 
 # Additional CPPFLAGS, CXXFLAGS, CFLAGS, LDLIBS, LDFLAGS can come from the command line, e.g. make CPPFLAGS='-I<my-include-dir>', or from environment variables.
-cxxflags := ${cxxflags.${TOOLSET}} ${CXXFLAGS}
-cflags := ${cflags.${TOOLSET}} ${CFLAGS}
-cppflags := ${CPPFLAGS} -Iinclude
+cxxflags := ${cxxflags.${TOOLSET}} -g ${CXXFLAGS}
+cflags := ${cflags.${TOOLSET}} -g ${CFLAGS}
+cppflags := -Iinclude ${CPPFLAGS}
 ldflags := -fuse-ld=gold -pthread -g ${ldflags.${TOOLSET}} ${LDFLAGS}
 ldlibs := -lrt ${LDLIBS}
 
@@ -65,14 +66,13 @@ cppflags.moodycamel := -I$(abspath ..)
 ldlibs.moodycamel :=
 
 cppflags.xenium := -I${abspath ../xenium}
+cxxflags.xenium := -std=gnu++17
 ldlibs.xenium :=
 
 recompile := ${build_dir}/.make/recompile
 relink := ${build_dir}/.make/relink
 
 COMPILE.CXX = ${CXX} -o $@ -c ${cppflags} ${cxxflags} -MD -MP $(abspath $<)
-COMPILE.S = ${CXX} -o- -S -fverbose-asm -masm=intel ${cppflags} ${cxxflags} $(abspath $<) | c++filt | egrep -v '^[[:space:]]*\.(loc|cfi|L[A-Z])' > $@
-PREPROCESS.CXX = ${CXX} -o $@ -E ${cppflags} ${cxxflags} $(abspath $<)
 COMPILE.C = ${CC} -o $@ -c ${cppflags} ${cflags} -MD -MP $(abspath $<)
 LINK.EXE = ${LD} -o $@ $(ldflags) $(filter-out ${relink},$^) $(ldlibs)
 LINK.SO = ${LD} -o $@ -shared $(ldflags) $(filter-out ${relink},$^) $(ldlibs)
@@ -86,15 +86,17 @@ else
 strip2 = $(strip ${1})
 endif
 
+#
+# Build targets definitions begin.
+#
+
 exes := benchmarks tests example
 
 all : ${exes}
 
-${exes} : % : ${build_dir}/%
-	ln -sf ${<:${CURDIR}/%=%}
-
 benchmarks_src := benchmarks.cc cpu_base_frequency.cc huge_pages.cc
 ${build_dir}/benchmarks : cppflags += ${cppflags.tbb} ${cppflags.moodycamel} ${cppflags.xenium}
+${build_dir}/benchmarks : cxxflags += ${cxxflags.tbb} ${cxxflags.moodycamel} ${cxxflags.xenium}
 ${build_dir}/benchmarks : ldlibs += ${ldlibs.tbb} ${ldlibs.moodycamel} ${ldlibs.xenium} -ldl
 ${build_dir}/benchmarks : ${benchmarks_src:%.cc=${build_dir}/%.o} ${relink} | ${build_dir}
 	$(call strip2,${LINK.EXE})
@@ -112,6 +114,13 @@ ${build_dir}/example : ${example_src:%.cc=${build_dir}/%.o} ${relink} | ${build_
 	$(call strip2,${LINK.EXE})
 -include ${example_src:%.cc=${build_dir}/%.d}
 
+#
+# Build targets definitions end.
+#
+
+${exes} : % : ${build_dir}/%
+	ln -sf ${<:${CURDIR}/%=%}
+
 ${build_dir}/%.so : cxxflags += -fPIC
 ${build_dir}/%.so : ${relink} | ${build_dir}
 	$(call strip2,${LINK.SO})
@@ -125,14 +134,6 @@ ${build_dir}/%.o : src/%.cc ${recompile} | ${build_dir}
 ${build_dir}/%.o : src/%.c ${recompile} | ${build_dir}
 	$(call strip2,${COMPILE.C})
 
-${build_dir}/%.S : cppflags += ${cppflags.tbb} ${cppflags.moodycamel} ${cppflags.xenium}
-${build_dir}/%.S : src/%.cc ${recompile} | ${build_dir}
-	$(call strip2,${COMPILE.S})
-
-${build_dir}/%.I : cppflags += ${cppflags.tbb} ${cppflags.moodycamel} ${cppflags.xenium}
-${build_dir}/%.I : src/%.cc ${recompile} | ${build_dir}
-	$(call strip2,${PREPROCESS.CXX})
-
 ${build_dir}/%.d : ;
 
 ${build_dir}/.make : | ${build_dir}
@@ -141,7 +142,7 @@ ${build_dir} ${build_dir}/.make:
 
 ver = "$(shell ${1} --version | head -n1)"
 # Trigger recompilation when compiler environment change.
-env.compile := $(call ver,${CXX}) ${cppflags} ${cxxflags} ${cppflags.tbb} ${cppflags.moodycamel} ${cppflags.xenium}
+env.compile := $(call ver,${CXX}) ${cppflags} ${cxxflags} ${cppflags.tbb} ${cppflags.moodycamel} ${cppflags.xenium} ${cxxflags.tbb} ${cxxflags.moodycamel} ${cxxflags.xenium}
 # Trigger relink when linker environment change.
 env.link := $(call ver,${LD}) ${ldflags} ${ldlibs} ${ldlibs.tbb} ${ldlibs.moodycamel} ${ldlibs.xenium}
 
@@ -174,7 +175,7 @@ rtags :
 	${MAKE} --always-make --just-print all | { rtags-rc -c -; true; }
 
 clean :
-	rm -rf ${build_dir} ${exes}
+	rm -rf ${exes} ${build_dir}
 
 versions:
 	${MAKE} --version | awk 'FNR<2'
@@ -184,3 +185,10 @@ env :
 	env | sort --ignore-case
 
 .PHONY : update_env_txt env versions rtags run_benchmarks clean all run_%
+.DELETE_ON_ERROR:
+.SECONDARY:
+.SUFFIXES:
+
+# Local Variables:
+# compile-command: "/bin/time make -rC ~/src/atomic_queue -j$(($(nproc)/2)) BUILD=debug run_tests"
+# End:


=====================================
README.md
=====================================
@@ -7,6 +7,7 @@
 <br>
 [![Makefile Continuous Integrations](https://github.com/max0x7ba/atomic_queue/actions/workflows/ci.yml/badge.svg)](https://github.com/max0x7ba/atomic_queue/actions/workflows/ci.yml)
 [![CMake Continuous Integrations](https://github.com/max0x7ba/atomic_queue/actions/workflows/cmake-gcc-clang.yml/badge.svg)](https://github.com/max0x7ba/atomic_queue/actions/workflows/cmake-gcc-clang.yml)
+[![Meson Continuous Integrations](https://github.com/max0x7ba/atomic_queue/actions/workflows/ci-meson.yml/badge.svg)](https://github.com/max0x7ba/atomic_queue/actions/workflows/ci-meson.yml)
 <br>
 ![platform Linux x86_64](https://img.shields.io/badge/platform-Linux%20x86_64--bit-yellow)
 ![platform Linux ARM](https://img.shields.io/badge/platform-Linux%20ARM-yellow)
@@ -15,13 +16,17 @@
 ![platform Linux IBM System/390](https://img.shields.io/badge/platform-Linux%20IBM%20System/390-yellow)
 
 # atomic_queue
-C++14 multiple-producer-multiple-consumer *lock-free* queues based on circular buffer and [`std::atomic`][3]. Designed with a goal to minimize the latency between one thread pushing an element into a queue and another thread popping it from the queue.
+C++14 multiple-producer-multiple-consumer *lock-free* queues based on circular buffers and [`std::atomic`][3].
 
-It has been developed, tested and benchmarked on Linux, but should support any C++14 platforms which implement `std::atomic`. Reported as compatible with Windows, but the continuous integrations hosted by GitHub are currently set up only for x86_64 platform on Ubuntu-20.04 and Ubuntu-22.04. Pull requests to extend the [continuous integrations][18] to run on other architectures and/or platforms are welcome.
+Designed with a goal to minimize the latency between one thread pushing an element into a queue and another thread popping it from the queue.
+
+It has been developed, tested and benchmarked on Linux, but should support any C++14 platforms which implement `std::atomic`. Reported as compatible with Windows, but the continuous integrations hosted by GitHub are currently set up only for x86_64 platform on Ubuntu-22.04 and Ubuntu-24.04. Pull requests to extend the [continuous integrations][18] to run on other architectures and/or platforms are welcome.
 
 ## Design Principles
 When minimizing latency a good design is not when there is nothing left to add, but rather when there is nothing left to remove, as these queues exemplify.
 
+Minimizing latency naturally maximizes throughput. Low latency reciprocal is high throuhput, in ideal mathematical and practical engineering sense. Low latency is incompatible with any delays and/or batching, which destroy original (hardware) global time order of events pushed into one queue by different threads. Maximizing throughput, on the other hand, can be done at expense of latency by delaying and batching multiple updates.
+
 The main design principle these queues follow is _minimalism_, which results in such design choices as:
 
 * Bare minimum of atomic instructions. Inlinable by default push and pop functions can hardly be any cheaper in terms of CPU instruction number / L1i cache pressure.
@@ -38,20 +43,6 @@ These design choices are also limitations:
 
 Ultra-low-latency applications need just that and nothing more. The minimalism pays off, see the [throughput and latency benchmarks][1].
 
-Available containers are:
-* `AtomicQueue` - a fixed size ring-buffer for atomic elements.
-* `OptimistAtomicQueue` - a faster fixed size ring-buffer for atomic elements which busy-waits when empty or full. It is `AtomicQueue` used with `push`/`pop` instead of `try_push`/`try_pop`.
-* `AtomicQueue2` - a fixed size ring-buffer for non-atomic elements.
-* `OptimistAtomicQueue2` - a faster fixed size ring-buffer for non-atomic elements which busy-waits when empty or full. It is `AtomicQueue2` used with `push`/`pop` instead of `try_push`/`try_pop`.
-
-These containers have corresponding `AtomicQueueB`, `OptimistAtomicQueueB`, `AtomicQueueB2`, `OptimistAtomicQueueB2` versions where the buffer size is specified as an argument to the constructor.
-
-Totally ordered mode is supported. In this mode consumers receive messages in the same FIFO order the messages were posted. This mode is supported for `push` and `pop` functions, but for not the `try_` versions. On Intel x86 the totally ordered mode has 0 cost, as of 2019.
-
-Single-producer-single-consumer mode is supported. In this mode, no expensive atomic read-modify-write CPU instructions are necessary, only the cheapest atomic loads and stores. That improves queue throughput significantly.
-
-Move-only queue element types are fully supported. For example, a queue of `std::unique_ptr<T>` elements would be `AtomicQueue2B<std::unique_ptr<T>>` or `AtomicQueue2<std::unique_ptr<T>, CAPACITY>`.
-
 ## Role Models
 Several other well established and popular thread-safe containers are used for reference in the [benchmarks][1]:
 * `std::mutex` - a fixed size ring-buffer with `std::mutex`.
@@ -102,7 +93,30 @@ make -r -j4 run_benchmarks
 
 The benchmark also requires Intel TBB library to be available. It assumes that it is installed in `/usr/local/include` and `/usr/local/lib`. If it is installed elsewhere you may like to modify `cppflags.tbb` and `ldlibs.tbb` in `Makefile`.
 
-# API
+# Library contents
+## Available queues
+* `AtomicQueue` - a fixed size ring-buffer for atomic elements.
+* `OptimistAtomicQueue` - a faster fixed size ring-buffer for atomic elements which busy-waits when empty or full. It is `AtomicQueue` used with `push`/`pop` instead of `try_push`/`try_pop`.
+* `AtomicQueue2` - a fixed size ring-buffer for non-atomic elements.
+* `OptimistAtomicQueue2` - a faster fixed size ring-buffer for non-atomic elements which busy-waits when empty or full. It is `AtomicQueue2` used with `push`/`pop` instead of `try_push`/`try_pop`.
+
+These containers have corresponding `AtomicQueueB`, `OptimistAtomicQueueB`, `AtomicQueueB2`, `OptimistAtomicQueueB2` versions where the buffer size is specified as an argument to the constructor.
+
+Totally ordered mode is supported. In this mode consumers receive messages in the same FIFO order the messages were posted. This mode is supported for `push` and `pop` functions, but for not the `try_` versions. On Intel x86 the totally ordered mode has 0 cost, as of 2019.
+
+Single-producer-single-consumer mode is supported. In this mode, no expensive atomic read-modify-write CPU instructions are necessary, only the cheapest atomic loads and stores. That improves queue throughput significantly.
+
+Move-only queue element types are fully supported. For example, a queue of `std::unique_ptr<T>` elements would be `AtomicQueue2B<std::unique_ptr<T>>` or `AtomicQueue2<std::unique_ptr<T>, CAPACITY>`.
+
+## Queue schematics
+
+```
+queue-end                 queue-front
+[newest-element, ..., oldest-element]
+push()                          pop()
+```
+
+## Queue API
 The queue class templates provide the following member functions:
 * `try_push` - Appends an element to the end of the queue. Returns `false` when the queue is full.
 * `try_pop` - Removes an element from the front of the queue. Returns `false` when the queue is empty.
@@ -121,15 +135,13 @@ Note that _optimism_ is a choice of a queue modification operation control flow,
 
 See [example.cc](src/example.cc) for a usage example.
 
-TODO: full API reference.
-
+# Implementation Notes
 ## Memory order of non-atomic loads and stores
 `push` and `try_push` operations _synchronize-with_ (as defined in [`std::memory_order`][17]) with any subsequent `pop` or `try_pop` operation of the same queue object. Meaning that:
 * No non-atomic load/store gets reordered past `push`/`try_push`, which is a `memory_order::release` operation. Same memory order as that of `std::mutex::unlock`.
 * No non-atomic load/store gets reordered prior to `pop`/`try_pop`, which is a `memory_order::acquire` operation. Same memory order as that of `std::mutex::lock`.
 * The effects of a producer thread's non-atomic stores followed by `push`/`try_push` of an element into a queue become visible in the consumer's thread which `pop`/`try_pop` that particular element.
 
-# Implementation Notes
 ## Ring-buffer capacity
 The available queues here use a ring-buffer array for storing elements. The capacity of the queue is fixed at compile time or construction time.
 
@@ -190,6 +202,8 @@ There are a few OS behaviours that complicate benchmarking:
 * Real-time thread throttling disabled.
 * Adverse address space randomisation may cause extra CPU cache conflicts, as well as other processes running on the system. To minimise effects of that `benchmarks` executable is run at least 33 times. The benchmark charts display average values. The chart tooltip also displays the standard deviation, minimum and maximum values.
 
+Benchmark performance of single-producer-single-consumer queues `boost::lockfree::spsc_queue`, `moodycamel::ReaderWriterQueue` and these queues in single-producer-single-consumer mode should be identical because they implement exactly the same algorithm using exactly the same atomic load and store instructions. `boost::lockfree::spsc_queue` implementation benchmarked at that time had no optimizations for minimizing L1d cache contention, cold branch misprediction or pipeline stalls from subtler issues noticable only in the generated assembly code.
+
 I only have access to a few x86-64 machines. If you have access to different hardware feel free to submit the output file of `scripts/run-benchmarks.sh` and I will include your results into the benchmarks page.
 
 ### Huge pages
@@ -216,7 +230,7 @@ One thread posts an integer to another thread through one queue and waits for a
 Contributions are more than welcome. `.editorconfig` and `.clang-format` can be used to automatically match code formatting.
 
 # Reading material
-Some books on the subject of multi-threaded programming I found instructive:
+Some books on the subject of multi-threaded programming I found quite instructive:
 
 * _Programming with POSIX Threads_ by David R. Butenhof.
 * _The Art of Multiprocessor Programming_ by Maurice Herlihy, Nir Shavit.


=====================================
debian/changelog
=====================================
@@ -1,3 +1,11 @@
+libatomic-queue (1.6.9-1) experimental; urgency=medium
+
+  * New upstream version 1.6.9
+  * d/control: declare compliance to standards version 4.7.2.
+  * Use meson for installation, removes libatomic-queue0. (Closes: #1104583)
+
+ -- Stephan Lachnit <stephanlachnit at debian.org>  Tue, 24 Jun 2025 20:31:53 +0200
+
 libatomic-queue (1.6.5-2) unstable; urgency=medium
 
   * d/control: build depends on binutils-gold to pull ld.gold.


=====================================
debian/control
=====================================
@@ -2,69 +2,24 @@ Source: libatomic-queue
 Maintainer: Debian Med Packaging Team <debian-med-packaging at lists.alioth.debian.org>
 Uploaders: Steffen Moeller <moeller at debian.org>,
            Andreas Tille <tille at debian.org>,
-           Étienne Mollier <emollier at debian.org>
+           Étienne Mollier <emollier at debian.org>,
+           Stephan Lachnit <stephanlachnit at debian.org>,
 Section: libs
 Priority: optional
 Build-Depends: debhelper-compat (= 13),
-               binutils-gold,
-               d-shlibs,
-               libboost-dev,
+               meson,
                libboost-test-dev,
-               libconcurrentqueue-dev,
-               libreaderwriterqueue-dev,
-               libtbb-dev,
-               libxenium-dev
-Standards-Version: 4.7.1
+Standards-Version: 4.7.2
 Vcs-Browser: https://salsa.debian.org/med-team/libatomic-queue
 Vcs-Git: https://salsa.debian.org/med-team/libatomic-queue.git
 Homepage: https://github.com/max0x7ba/atomic_queue
 Rules-Requires-Root: no
 
-Package: libatomic-queue0
-Architecture: any
-Depends: ${shlibs:Depends},
-         ${misc:Depends}
-Description: C++ atomic_queue library
- C++11 multiple-producer-multiple-consumer lockless queues based on
- circular buffer with std::atomic.  The main design principle these
- queues follow is simplicity: the bare minimum of atomic operations,
- fixed size buffer, value semantics.
- .
- The circular buffer side-steps the memory reclamation problem inherent
- in linked-list based queues for the price of fixed buffer size. See
- Effective memory reclamation for lock-free data structures in C++
- for more details.
- .
- These qualities are also limitations:
- .
-  * The maximum queue size must be set at compile time or construction time.
-  * There are no OS-blocking push/pop functions.
- .
- Nevertheless, ultra-low-latency applications need just that and nothing
- more. The simplicity pays off, see the throughput and latency benchmarks.
- .
- Available containers are:
- .
-  * AtomicQueue - a fixed size ring-buffer for atomic elements.
-  * OptimistAtomicQueue - a faster fixed size ring-buffer for atomic
-    elements which busy-waits when empty or full.
-  * AtomicQueue2 - a fixed size ring-buffer for non-atomic elements.
-  * OptimistAtomicQueue2 - a faster fixed size ring-buffer for non-atomic
-    elements which busy-waits when empty or full.
- .
- These containers have corresponding AtomicQueueB, OptimistAtomicQueueB,
- AtomicQueueB2, OptimistAtomicQueueB2 versions where the buffer size is
- specified as an argument to the constructor.
- .
- This package contains the dynamic library.
-
 Package: libatomic-queue-dev
 Architecture: any
 Section: libdevel
-Depends: libatomic-queue0 (= ${binary:Version}),
-         libboost-dev,
-         ${shlibs:Depends},
-         ${misc:Depends}
+Depends: ${shlibs:Depends},
+         ${misc:Depends},
 Description: devel files for C++ atomic_queue library
  C++11 multiple-producer-multiple-consumer lockless queues based on
  circular buffer with std::atomic.  The main design principle these
@@ -96,5 +51,3 @@ Description: devel files for C++ atomic_queue library
  These containers have corresponding AtomicQueueB, OptimistAtomicQueueB,
  AtomicQueueB2, OptimistAtomicQueueB2 versions where the buffer size is
  specified as an argument to the constructor.
- .
- This package contains the header files and static library.


=====================================
debian/libatomic-queue0.symbols deleted
=====================================
@@ -1,238 +0,0 @@
-libatomic_queue.so.0 libatomic-queue0 #MINVER#
-* Build-Depends-Package: libatomic-queue-dev
- _ZGVZNKSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb0EEclEcE5__nul at Base 0.0+git20201007.df79403
- _ZGVZNKSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb1EEclEcE5__nul at Base 0.0+git20201007.df79403
- _ZGVZNKSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb0EEclEcE5__nul at Base 0.0+git20201007.df79403
- _ZGVZNKSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb1EEclEcE5__nul at Base 0.0+git20201007.df79403
- _ZN12atomic_queue12hw_thread_idERKSt6vectorINS_15CpuTopologyInfoESaIS1_EE at Base 0.0+git20201007.df79403
- _ZN12atomic_queue15sort_by_core_idERKSt6vectorINS_15CpuTopologyInfoESaIS1_EE at Base 0.0+git20201007.df79403
- _ZN12atomic_queue18cpu_base_frequencyEv at Base 0.0+git20201007.df79403
- _ZN12atomic_queue19set_thread_affinityEj at Base 0.0+git20201007.df79403
- _ZN12atomic_queue20sort_by_hw_thread_idERKSt6vectorINS_15CpuTopologyInfoESaIS1_EE at Base 0.0+git20201007.df79403
- _ZN12atomic_queue21HugePageAllocatorBase2hpE at Base 0.0+git20201007.df79403
- _ZN12atomic_queue21get_cpu_topology_infoEv at Base 0.0+git20201007.df79403
- _ZN12atomic_queue21reset_thread_affinityEv at Base 0.0+git20201007.df79403
- _ZN12atomic_queue27set_default_thread_affinityEj at Base 0.0+git20201007.df79403
- _ZN12atomic_queue9HugePages17warn_no_1GB_pagesE at Base 0.0+git20201007.df79403
- _ZN12atomic_queue9HugePages17warn_no_2MB_pagesE at Base 0.0+git20201007.df79403
- _ZN12atomic_queue9HugePagesC1ENS0_4TypeEm at Base 0.0+git20201007.df79403
- _ZN12atomic_queue9HugePagesC2ENS0_4TypeEm at Base 0.0+git20201007.df79403
- _ZN12atomic_queue9HugePagesD1Ev at Base 0.0+git20201007.df79403
- _ZN12atomic_queue9HugePagesD2Ev at Base 0.0+git20201007.df79403
- (optional)_ZNKSt5ctypeIcE8do_widenEc at Base 0.0+git20201007.df79403
- (optional)_ZNKSt5ctypeIcE9do_narrowEcc at Base 0.0+git20201007.df79403
- (optional)_ZNKSt7__cxx1112regex_traitsIcE16lookup_classnameIPKcEENS1_10_RegexMaskET_S6_b at Base 0.0+git20201007.df79403
- (optional)_ZNKSt7__cxx1112regex_traitsIcE16translate_nocaseEc at Base 0.0+git20201007.df79403
- (optional)_ZNKSt7__cxx1112regex_traitsIcE17transform_primaryIPKcEENS_12basic_stringIcSt11char_traitsIcESaIcEEET_SA_ at Base 0.0+git20201007.df79403
- (optional)_ZNKSt7__cxx1112regex_traitsIcE18lookup_collatenameIPKcEENS_12basic_stringIcSt11char_traitsIcESaIcEEET_SA_ at Base 0.0+git20201007.df79403
- (optional)_ZNKSt8__detail20_RegexTranslatorBaseINSt7__cxx1112regex_traitsIcEELb0ELb1EE12_M_transformEc at Base 0.0+git20201007.df79403
- (optional)_ZNKSt8__detail20_RegexTranslatorBaseINSt7__cxx1112regex_traitsIcEELb1ELb1EE12_M_transformEc at Base 0.0+git20201007.df79403
- (optional)_ZNKSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb0EE16_M_word_boundaryEv at Base 0.0+git20201007.df79403
- (optional)_ZNKSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb0EE21_M_is_line_terminatorEc at Base 0.0+git20211209.7db4cea
- (optional)_ZNKSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb1EE16_M_word_boundaryEv at Base 0.0+git20201007.df79403
- (optional)_ZNKSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb1EE21_M_is_line_terminatorEc at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt11_Deque_baseINSt8__detail9_StateSeqINSt7__cxx1112regex_traitsIcEEEESaIS5_EED1Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt11_Deque_baseINSt8__detail9_StateSeqINSt7__cxx1112regex_traitsIcEEEESaIS5_EED2Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt11_Deque_baseIlSaIlEE17_M_initialize_mapEm at Base 0.0+git20201007.df79403
- (optional)_ZNSt11_Deque_baseIlSaIlEED1Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt11_Deque_baseIlSaIlEED2Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt12system_errorC1ESt10error_codePKc at Base 0.0+git20201007.df79403
- (optional)_ZNSt12system_errorC2ESt10error_codePKc at Base 0.0+git20201007.df79403
- (optional)_ZNSt14_Function_baseD1Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt14_Function_baseD2Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv at Base 0.0+git20211209.7db4cea
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb0EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb0EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb1EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb1EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb0EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb0EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb1EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb1EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb0EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb0EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb1EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb1EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb0EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb0EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb1EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb1EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1EEEE10_M_managerERSt9_Any_dataRKS8_St18_Manager_operation at Base 0.0+git20201007.df79403
- _ZNSt17_Function_handlerIFbcENSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1EEEE9_M_invokeERKSt9_Any_dataOc at Base 0.0+git20201007.df79403
- (optional)_ZNSt23_Sp_counted_ptr_inplaceINSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEEESaIvELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt23_Sp_counted_ptr_inplaceINSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEEESaIvELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt23_Sp_counted_ptr_inplaceINSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEEESaIvELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt23_Sp_counted_ptr_inplaceINSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEEESaIvELN9__gnu_cxx12_Lock_policyE2EED0Ev at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt23_Sp_counted_ptr_inplaceINSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEEESaIvELN9__gnu_cxx12_Lock_policyE2EED1Ev at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt23_Sp_counted_ptr_inplaceINSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEEESaIvELN9__gnu_cxx12_Lock_policyE2EED2Ev at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt5dequeINSt8__detail9_StateSeqINSt7__cxx1112regex_traitsIcEEEESaIS5_EE12emplace_backIJS5_EEEvDpOT_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt5dequeINSt8__detail9_StateSeqINSt7__cxx1112regex_traitsIcEEEESaIS5_EE16_M_push_back_auxIJRKS5_EEEvDpOT_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt5dequeINSt8__detail9_StateSeqINSt7__cxx1112regex_traitsIcEEEESaIS5_EE17_M_reallocate_mapEmb at Base 0.0+git20201007.df79403
- (optional)_ZNSt5dequeINSt8__detail9_StateSeqINSt7__cxx1112regex_traitsIcEEEESaIS5_EE9push_backERKS5_ at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt5dequeIlSaIlEE16_M_push_back_auxIJRKlEEEvDpOT_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorIN12atomic_queue15CpuTopologyInfoESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRKS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC1ERKS7_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2ERKS7_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED1Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorINSt7__cxx1112regex_traitsIcE10_RegexMaskESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EE14_M_fill_assignEmRKSC_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EED1Ev at Base 0.0+git20230629.b770bb2
- (optional)_ZNSt6vectorINSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS0_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISC_EED2Ev at Base 0.0+git20230629.b770bb2
- (optional)_ZNSt6vectorINSt8__detail6_StateIcEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorISt4pairIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEiESaISC_EED1Ev at Base 0.0+git20230629.b770bb2
- (optional)_ZNSt6vectorISt4pairIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEiESaISC_EED2Ev at Base 0.0+git20230629.b770bb2
- (optional)_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ESaIS7_EE17_M_realloc_insertIJS7_EEEvN9__gnu_cxx17__normal_iteratorIPS7_S9_EEDpOT_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ESaIS7_EEC1ERKS9_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ESaIS7_EEC2ERKS9_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ESaIS7_EED1Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ESaIS7_EED2Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorISt4pairIccESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorISt4pairIccESaIS1_EED1Ev at Base 0.0+git20230629.b770bb2
- (optional)_ZNSt6vectorISt4pairIccESaIS1_EED2Ev at Base 0.0+git20230629.b770bb2
- (optional)_ZNSt6vectorISt4pairIlS_INSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS1_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISD_EEESaISG_EE12emplace_backIJRlRKSF_EEEvDpOT_ at Base 0.0+git20201108.d9d66b6
- (optional)_ZNSt6vectorISt4pairIlS_INSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS1_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISD_EEESaISG_EE17_M_realloc_insertIJRlRKSF_EEEvNS4_IPSG_SI_EEDpOT_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorISt4pairIlS_INSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS1_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISD_EEESaISG_EED1Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorISt4pairIlS_INSt7__cxx119sub_matchIN9__gnu_cxx17__normal_iteratorIPKcNS1_12basic_stringIcSt11char_traitsIcESaIcEEEEEEESaISD_EEESaISG_EED2Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorIcSaIcEE12emplace_backIJcEEEvDpOT_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorIcSaIcEE17_M_realloc_insertIJcEEEvN9__gnu_cxx17__normal_iteratorIPcS1_EEDpOT_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt6vectorIcSaIcEED1Ev at Base 0.0+git20230629.b770bb2
- (optional)_ZNSt6vectorIcSaIcEED2Ev at Base 0.0+git20230629.b770bb2
- (optional)_ZNSt6vectorImSaImEE17_M_realloc_insertIJRKmEEEvN9__gnu_cxx17__normal_iteratorIPmS1_EEDpOT_ at Base 0.0+git20201007.df79403
- (optional)_ZNSt7__cxx1111basic_regexIcNS_12regex_traitsIcEEED1Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt7__cxx1111basic_regexIcNS_12regex_traitsIcEEED2Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EE8_M_readyEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EED1Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EED2Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1EE13_M_make_rangeEcc at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1EED1Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1EED2Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0EED1Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0EED2Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1EE13_M_make_rangeEcc at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1EED1Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1EED2Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail17__regex_algo_implIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEEcNS5_12regex_traitsIcEEEEbT_SH_RNS5_13match_resultsISH_T0_EERKNS5_11basic_regexIT1_T2_EENSt15regex_constants15match_flag_typeENS_20_RegexExecutorPolicyEb at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEE15_M_insert_dummyEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEE15_M_insert_stateENS_6_StateIcEE at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEE16_M_insert_acceptEv at Base 0.0+git20230629.b770bb2
- (optional)_ZNSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEE16_M_insert_repeatEllb at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEE17_M_insert_backrefEm at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEE17_M_insert_matcherESt8functionIFbcEE at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEE21_M_insert_subexpr_endEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEE23_M_insert_subexpr_beginEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail8_ScannerIcE12_M_eat_classEc at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail8_ScannerIcE14_M_scan_normalEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail8_ScannerIcE16_M_scan_in_braceEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail8_ScannerIcE17_M_eat_escape_awkEv at Base 0.0+git20201007.df79403
- _ZNSt8__detail8_ScannerIcE18_M_eat_escape_ecmaEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail8_ScannerIcE18_M_scan_in_bracketEv at Base 0.0+git20201007.df79403
- _ZNSt8__detail8_ScannerIcE19_M_eat_escape_posixEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail8_ScannerIcEC1EPKcS3_NSt15regex_constants18syntax_option_typeESt6locale at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail8_ScannerIcEC2EPKcS3_NSt15regex_constants18syntax_option_typeESt6locale at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE11_M_try_charEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE12_M_assertionEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE13_M_quantifierEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE14_M_alternativeEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE14_M_disjunctionEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE16_M_cur_int_valueEi at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE18_M_expression_termILb0ELb0EEEbRNS4_13_BracketStateERNS_15_BracketMatcherIS3_XT_EXT0_EEE at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE18_M_expression_termILb0ELb1EEEbRNS4_13_BracketStateERNS_15_BracketMatcherIS3_XT_EXT0_EEE at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE18_M_expression_termILb1ELb0EEEbRNS4_13_BracketStateERNS_15_BracketMatcherIS3_XT_EXT0_EEE at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE18_M_expression_termILb1ELb1EEEbRNS4_13_BracketStateERNS_15_BracketMatcherIS3_XT_EXT0_EEE at Base 0.0+git20211209.7db4cea
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE21_M_bracket_expressionEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE25_M_insert_bracket_matcherILb0ELb0EEEvb at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE25_M_insert_bracket_matcherILb0ELb1EEEvb at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE25_M_insert_bracket_matcherILb1ELb0EEEvb at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE25_M_insert_bracket_matcherILb1ELb1EEEvb at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE33_M_insert_character_class_matcherILb0ELb0EEEvv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE33_M_insert_character_class_matcherILb0ELb1EEEvv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE33_M_insert_character_class_matcherILb1ELb0EEEvv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE33_M_insert_character_class_matcherILb1ELb1EEEvv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE6_M_popEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE7_M_atomEv at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC1EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEEC2EPKcS6_RKSt6localeNSt15regex_constants18syntax_option_typeE at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb0EE12_M_lookaheadEl at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb0EE16_M_rep_once_moreENSH_11_Match_modeEl at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb0EE6_M_dfsENSH_11_Match_modeEl at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb0EED1Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb0EED2Ev at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb1EE12_M_lookaheadEl at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb1EE16_M_rep_once_moreENSH_11_Match_modeEl at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb1EE6_M_dfsENSH_11_Match_modeEl at Base 0.0+git20201007.df79403
- (optional)_ZNSt8__detail9_StateSeqINSt7__cxx1112regex_traitsIcEEE8_M_cloneEv at Base 0.0+git20201007.df79403
- (optional)_ZSt13binary_searchIN9__gnu_cxx17__normal_iteratorIPKcSt6vectorIcSaIcEEEEcEbT_S8_RKT0_ at Base 0.0+git20201007.df79403
- (optional)_ZSt19__throw_regex_errorNSt15regex_constants10error_typeEPKc at Base 0.0+git20201007.df79403
- (optional)_ZSt4findIN9__gnu_cxx17__normal_iteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEES7_ET_SE_SE_RKT0_ at Base 0.0+git20201108.d9d66b6
- _ZTINSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb0EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb1EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb0EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb1EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb0EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb1EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb0EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb1EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0EEE at Base 0.0+git20201007.df79403
- _ZTINSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1EEE at Base 0.0+git20201007.df79403
- _ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE at Base 0.0+git20201007.df79403
- _ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE at Base 0.0+git20201007.df79403
- (optional)_ZTISt23_Sp_counted_ptr_inplaceINSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEEESaIvELN9__gnu_cxx12_Lock_policyE2EE at Base 0.0+git20211209.7db4cea
- _ZTSNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb0EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb1EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb0EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb1EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb0EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb1EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb0EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb1EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail12_CharMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0EEE at Base 0.0+git20201007.df79403
- _ZTSNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1EEE at Base 0.0+git20201007.df79403
- _ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE at Base 0.0+git20201007.df79403
- _ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE at Base 0.0+git20201007.df79403
- _ZTSSt19_Sp_make_shared_tag at Base 0.0+git20201007.df79403
- (optional)_ZTSSt23_Sp_counted_ptr_inplaceINSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEEESaIvELN9__gnu_cxx12_Lock_policyE2EE at Base 0.0+git20211209.7db4cea
- (optional)_ZTVSt23_Sp_counted_ptr_inplaceINSt8__detail4_NFAINSt7__cxx1112regex_traitsIcEEEESaIvELN9__gnu_cxx12_Lock_policyE2EE at Base 0.0+git20211209.7db4cea
- _ZZNKSt7__cxx1112regex_traitsIcE16lookup_classnameIPKcEENS1_10_RegexMaskET_S6_bE12__classnames at Base 0.0+git20201007.df79403
- _ZZNKSt7__cxx1112regex_traitsIcE18lookup_collatenameIPKcEENS_12basic_stringIcSt11char_traitsIcESaIcEEET_SA_E14__collatenames at Base 0.0+git20201007.df79403
- _ZZNKSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb0EEclEcE5__nul at Base 0.0+git20201007.df79403
- _ZZNKSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb1EEclEcE5__nul at Base 0.0+git20201007.df79403
- _ZZNKSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb0EEclEcE5__nul at Base 0.0+git20201007.df79403
- _ZZNKSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb1EEclEcE5__nul at Base 0.0+git20201007.df79403
- (optional)_ZZNKSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1EE8_M_applyEcSt17integral_constantIbLb0EEENKUlvE_clEv at Base 0.0+git20201007.df79403
- (optional)_ZZNKSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0EE8_M_applyEcSt17integral_constantIbLb0EEENKUlvE_clEv at Base 0.0+git20201007.df79403
- (optional)_ZZNKSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1EE8_M_applyEcSt17integral_constantIbLb0EEENKUlvE_clEv at Base 0.0+git20201007.df79403
- _ZZNKSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb0EE10_M_is_wordEcE3__s at Base 0.0+git20201007.df79403
- _ZZNKSt8__detail9_ExecutorIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS5_9sub_matchISB_EEENS5_12regex_traitsIcEELb1EE10_M_is_wordEcE3__s at Base 0.0+git20201007.df79403
- _ZZNSt19_Sp_make_shared_tag5_S_tiEvE5__tag at Base 0.0+git20201007.df79403
- (optional)_ZZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE18_M_expression_termILb1ELb0EEEbRNS4_13_BracketStateERNS_15_BracketMatcherIS3_XT_EXT0_EEEENKUlcE_clEc at Base 0.0+git20230629.b770bb2
- (optional)_ZZNSt8__detail9_CompilerINSt7__cxx1112regex_traitsIcEEE18_M_expression_termILb1ELb1EEEbRNS4_13_BracketStateERNS_15_BracketMatcherIS3_XT_EXT0_EEEENKUlcE_clEc at Base 0.0+git20230629.b770bb2
- pthread_create at Base 0.0+git20201007.df79403


=====================================
debian/patches/compiler.patch deleted
=====================================
@@ -1,21 +0,0 @@
-Description: don't erase compiler environment variables.
- This helps with testing alternative compilers, and it should also give a
- little hand to cross-builds.
-Author: Étienne Mollier <emollier at debian.org>
-Forwarded: not-needed
-Last-Update: 2022-07-01
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- libatomic-queue.orig/Makefile
-+++ libatomic-queue/Makefile
-@@ -31,8 +31,8 @@
- ld.clang := clang++
- ar.clang := ar
- 
--CXX := ${cxx.${TOOLSET}}
--CC := ${cc.${TOOLSET}}
-+CXX ?= ${cxx.${TOOLSET}}
-+CC ?= ${cc.${TOOLSET}}
- LD := ${ld.${TOOLSET}}
- AR := ${ar.${TOOLSET}}
- 


=====================================
debian/patches/concurrentqueue.patch deleted
=====================================
@@ -1,22 +0,0 @@
-Description: fix concurrentqueue.h import
- For some reason, possibly Debian specific, the concurrentqueue include has
- a moodycamel namespace straight in the libconcurrentqueue-dev path, which is
- not compatible with what is currently specified in upstream source code.  It's
- a bit unclear right now whether the issue is in concurrentqueue or in the
- libatomic-queue.
-Author: Étienne Mollier <emollier at debian.org>
-Forwarded: no
-Last-Update: 2023-07-18
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- libatomic-queue.orig/src/moodycamel.h
-+++ libatomic-queue/src/moodycamel.h
-@@ -6,7 +6,7 @@
- 
- #include "benchmarks.h"
- 
--#include <concurrentqueue/concurrentqueue.h>
-+#include <concurrentqueue/moodycamel/concurrentqueue.h>
- #include <readerwriterqueue/readerwriterqueue.h>
- 
- #include "atomic_queue/defs.h"


=====================================
debian/patches/fix_unused_variable.patch deleted
=====================================
@@ -1,42 +0,0 @@
-Author: Andreas Tille <tille at debian.org>
-Last-Update: 2020-10-23
-Description: Fix unused variable
-
---- libatomic-queue.orig/src/benchmarks.cc
-+++ libatomic-queue/src/benchmarks.cc
-@@ -180,7 +180,7 @@
-     cycles_t expected = 0;
-     t0->compare_exchange_strong(expected, __builtin_ia32_rdtsc(), std::memory_order_acq_rel, std::memory_order_relaxed);
-
--    region_guard_t<Queue> guard;
-+    //region_guard_t<Queue> guard;
-     ProducerOf<Queue> producer{*queue};
-     for(unsigned n = 1, stop = N + 1; n <= stop; ++n)
-         producer.push(*queue, n);
-@@ -191,7 +191,7 @@
-     unsigned const stop = N + 1;
-     sum_t sum = 0;
-
--    region_guard_t<Queue> guard;
-+    //region_guard_t<Queue> guard;
-     ConsumerOf<Queue> consumer{*queue};
-     for(;;) {
-         unsigned n = consumer.pop(*queue);
-@@ -393,7 +393,7 @@
- template<class Queue>
- void ping_pong_thread_impl(Queue* q1, Queue* q2, unsigned N, cycles_t* time, std::false_type /*sender*/) {
-     cycles_t t0 = __builtin_ia32_rdtsc();
--    region_guard_t<Queue> guard;
-+    //region_guard_t<Queue> guard;
-     ConsumerOf<Queue> consumer_q1{*q1};
-     ProducerOf<Queue> producer_q2{*q2};
-     for(unsigned i = 1, j = 0; j < N; ++i) {
-@@ -407,7 +407,7 @@
- template<class Queue>
- void ping_pong_thread_impl(Queue* q1, Queue* q2, unsigned N, cycles_t* time, std::true_type /*sender*/) {
-     cycles_t t0 = __builtin_ia32_rdtsc();
--    region_guard_t<Queue> guard;
-+    //region_guard_t<Queue> guard;
-     ProducerOf<Queue> producer_q1{*q1};
-     ConsumerOf<Queue> consumer_q2{*q2};
-     for(unsigned i = 1, j = 0; j < N; ++i) {


=====================================
debian/patches/generate-shared-library.patch deleted
=====================================
@@ -1,91 +0,0 @@
-Author: Nilesh Patra <npatra974 at gmail.com>,
-        Andreas Tille <tille at debian.org>
-Reviewed-By: Étienne Mollier <emollier at debian.org>
-Last-Update: 2024-08-23
-Description: add rules to generate a shared library.
-
---- libatomic-queue.orig/Makefile
-+++ libatomic-queue/Makefile
-@@ -19,6 +19,7 @@
- TOOLSET := gcc
- 
- build_dir := ${CURDIR}/build/${BUILD}/${TOOLSET}
-+build_dir_shared := ${CURDIR}/build_shared/${BUILD}/${TOOLSET}
- 
- cxx.gcc := g++
- cc.gcc := gcc
-@@ -75,7 +76,8 @@
- PREPROCESS.CXX = ${CXX} -o $@ -E ${cppflags} ${cxxflags} $(abspath $<)
- COMPILE.C = ${CC} -o $@ -c ${cppflags} ${cflags} -MD -MP $(abspath $<)
- LINK.EXE = ${LD} -o $@ $(ldflags) $(filter-out ${relink},$^) $(ldlibs)
--LINK.SO = ${LD} -o $@ -shared $(ldflags) $(filter-out ${relink},$^) $(ldlibs)
-+SOVERSION := 0
-+LINK.SO = ${LD} -o $@.$(SOVERSION) -shared -Wl,-soname,`basename $@`.$(SOVERSION) $(ldflags) $(filter-out Makefile,$^) $(ldlibs)
- LINK.A = ${AR} rscT $@ $(filter-out ${relink},$^)
- 
- ifneq (,$(findstring n,$(firstword -${MAKEFLAGS})))
-@@ -90,9 +92,17 @@
- 
- all : ${exes}
- 
--${exes} : % : ${build_dir}/%
-+${exes} : % : ${build_dir}/% ${build_dir}/libatomic_queue.a  ${build_dir_shared}/libatomic_queue.so
- 	ln -sf ${<:${CURDIR}/%=%}
- 
-+${build_dir}/libatomic_queue.a : $(addprefix ${build_dir}/,cpu_base_frequency.o huge_pages.o)
-+-include ${build_dir}/cpu_base_frequency.d
-+-include ${build_dir}/huge_pages.d
-+
-+${build_dir_shared}/libatomic_queue.so : $(addprefix ${build_dir_shared}/,cpu_base_frequency.o huge_pages.o)
-+-include ${build_dir_shared}/cpu_base_frequency.d
-+-include ${build_dir_shared}/huge_pages.d
-+
- benchmarks_src := benchmarks.cc cpu_base_frequency.cc huge_pages.cc
- ${build_dir}/benchmarks : cppflags += ${cppflags.tbb} ${cppflags.moodycamel} ${cppflags.xenium}
- ${build_dir}/benchmarks : ldlibs += ${ldlibs.tbb} ${ldlibs.moodycamel} ${ldlibs.xenium} -ldl
-@@ -112,9 +122,10 @@
- 	$(call strip2,${LINK.EXE})
- -include ${example_src:%.cc=${build_dir}/%.d}
- 
--${build_dir}/%.so : cxxflags += -fPIC
--${build_dir}/%.so : ${relink} | ${build_dir}
--	$(call strip2,${LINK.SO})
-+${build_dir_shared}/%.so : cxxflags += -fPIC
-+${build_dir_shared}/%.so : Makefile | ${build_dir_shared}
-+	${LINK.SO}
-+	ln -s `basename $@`.$(SOVERSION) $@
- 
- ${build_dir}/%.a : ${relink} | ${build_dir}
- 	$(call strip2,${LINK.A})
-@@ -125,6 +136,12 @@
- ${build_dir}/%.o : src/%.c ${recompile} | ${build_dir}
- 	$(call strip2,${COMPILE.C})
- 
-+${build_dir_shared}/%.o : src/%.cc Makefile | ${build_dir_shared}
-+	$(call strip2,${COMPILE.CXX})
-+
-+${build_dir_shared}/%.o : src/%.c Makefile | ${build_dir_shared}
-+	$(call strip2,${COMPILE.C})
-+
- ${build_dir}/%.S : cppflags += ${cppflags.tbb} ${cppflags.moodycamel} ${cppflags.xenium}
- ${build_dir}/%.S : src/%.cc ${recompile} | ${build_dir}
- 	$(call strip2,${COMPILE.S})
-@@ -139,6 +156,10 @@
- ${build_dir} ${build_dir}/.make:
- 	mkdir -p $@
- 
-+${build_dir_shared}/.make : | ${build_dir_shared}
-+${build_dir_shared} ${build_dir_shared}/.make:
-+	mkdir -p $@
-+
- ver = "$(shell ${1} --version | head -n1)"
- # Trigger recompilation when compiler environment change.
- env.compile := $(call ver,${CXX}) ${cppflags} ${cxxflags} ${cppflags.tbb} ${cppflags.moodycamel} ${cppflags.xenium}
-@@ -175,6 +196,7 @@
- 
- clean :
- 	rm -rf ${build_dir} ${exes}
-+	rm -rf ${build_dir_shared}
- 
- versions:
- 	${MAKE} --version | awk 'FNR<2'


=====================================
debian/patches/no-native deleted
=====================================
@@ -1,32 +0,0 @@
-Author: Michael R. Crusoe <crusoe at debian.org>
-Description: Don't build with -m{arch,tune}=native
-Bug-Debian: https://bugs.debian.org/987532
-Forwarded: not-needed
-
-It violates Debian's architectual baseline and causes reproducibilty problems
---- libatomic-queue.orig/Makefile
-+++ libatomic-queue/Makefile
-@@ -37,18 +37,18 @@
- AR := ${ar.${TOOLSET}}
- 
- cxxflags.gcc.debug := -Og -fstack-protector-all -fno-omit-frame-pointer # -D_GLIBCXX_DEBUG
--cxxflags.gcc.release := -O3 -mtune=native -ffast-math -falign-{functions,loops}=64 -DNDEBUG
-+cxxflags.gcc.release := -O3 -ffast-math -falign-{functions,loops}=64 -DNDEBUG
- cxxflags.gcc.sanitize := ${cxxflags.gcc.release} -fsanitize=thread
--cxxflags.gcc := -pthread -march=native -std=gnu++14 -W{all,extra,error,no-{maybe-uninitialized,unused-variable,unused-function,unused-local-typedefs,error=array-bounds}} -g -fmessage-length=0 ${cxxflags.gcc.${BUILD}}
-+cxxflags.gcc := -pthread -std=gnu++14 -W{all,extra,error,no-{maybe-uninitialized,unused-variable,unused-function,unused-local-typedefs,error=array-bounds}} -g -fmessage-length=0 ${cxxflags.gcc.${BUILD}}
- ldflags.gcc.sanitize := ${ldflags.gcc.release} -fsanitize=thread
- ldflags.gcc := ${ldflags.gcc.${BUILD}}
- 
--cflags.gcc := -pthread -march=native -W{all,extra} -g -fmessage-length=0 ${cxxflags.gcc.${BUILD}}
-+cflags.gcc := -pthread -W{all,extra} -g -fmessage-length=0 ${cxxflags.gcc.${BUILD}}
- 
- cxxflags.clang.debug := -O0 -fstack-protector-all
--cxxflags.clang.release := -O3 -mtune=native -ffast-math -falign-functions=64 -DNDEBUG
-+cxxflags.clang.release := -O3 -ffast-math -falign-functions=64 -DNDEBUG
- cxxflags.clang.sanitize := ${cxxflags.clang.release} -fsanitize=thread
--cxxflags.clang := -stdlib=libstdc++ -pthread -march=native -std=gnu++14 -W{all,extra,error,no-{unused-variable,unused-function,unused-local-typedefs}} -g -fmessage-length=0 ${cxxflags.clang.${BUILD}}
-+cxxflags.clang := -stdlib=libstdc++ -pthread -std=gnu++14 -W{all,extra,error,no-{unused-variable,unused-function,unused-local-typedefs}} -g -fmessage-length=0 ${cxxflags.clang.${BUILD}}
- ldflags.clang.sanitize := ${ldflags.clang.release} -fsanitize=thread
- ldflags.clang := -stdlib=libstdc++ ${ldflags.clang.${BUILD}}
- 


=====================================
debian/patches/no_thin_archives.patch deleted
=====================================
@@ -1,17 +0,0 @@
-Author: Andreas Tille <tille at debian.org>
-Last-Update: 2021-12-21
-Description: The build system is set up to produce "thin" archives
- that can't stand on their own
-Origin: https://lists.debian.org/debian-med/2021/12/msg00131.html
-
---- libatomic-queue.orig/Makefile
-+++ libatomic-queue/Makefile
-@@ -78,7 +78,7 @@
- LINK.EXE = ${LD} -o $@ $(ldflags) $(filter-out ${relink},$^) $(ldlibs)
- SOVERSION := 0
- LINK.SO = ${LD} -o $@.$(SOVERSION) -shared -Wl,-soname,`basename $@`.$(SOVERSION) $(ldflags) $(filter-out Makefile,$^) $(ldlibs)
--LINK.A = ${AR} rscT $@ $(filter-out ${relink},$^)
-+LINK.A = ${AR} rsc $@ $(filter-out ${relink},$^)
-
- ifneq (,$(findstring n,$(firstword -${MAKEFLAGS})))
- # Perform bash parameter expansion when --just-print for rtags.


=====================================
debian/patches/series deleted
=====================================
@@ -1,6 +0,0 @@
-fix_unused_variable.patch
-generate-shared-library.patch
-no-native
-no_thin_archives.patch
-compiler.patch
-concurrentqueue.patch


=====================================
debian/rules
=====================================
@@ -1,21 +1,4 @@
 #!/usr/bin/make -f
-export DEB_BUILD_MAINT_OPTIONS = optimize=+lto
 
 %:
-	dh $@
-
-override_dh_install:
-	dh_install
-	mv `find . -name "*.a"` `dirname $$(find . -name "*.so")`
-	d-shlibmove --commit \
-		    --multiarch \
-		    --devunversioned \
-		    --exclude-la \
-		    --movedev include usr \
-		    $$(find . -name "*.so")
-	rm -vf debian/libatomic-queue-dev/usr/include/CMakeLists.txt
-
-override_dh_auto_test:
-ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
-	$(MAKE) example run_tests
-endif
+	dh $@ -Smeson


=====================================
debian/salsa-ci.yml
=====================================
@@ -1,8 +1,4 @@
 ---
 include:
-  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
-  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
-
-# Build-Depends on libxenium-dev which is not available on i386
-variables:
-  SALSA_CI_DISABLE_BUILD_PACKAGE_I386: 1
+    - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
+    - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml


=====================================
debian/tests/control
=====================================
@@ -1,3 +1,2 @@
 Tests: run-unit-test
-Depends: libatomic-queue-dev, libboost-test-dev, g++
-Restrictions: allow-stderr
+Depends: g++, meson, pkgconf, libatomic-queue-dev, libboost-test-dev


=====================================
debian/tests/run-unit-test
=====================================
@@ -1,18 +1,20 @@
 #!/bin/bash
 set -e
 
-pkg=libatomic-queue
+# Copy tests to temporary directory
+cp src/tests.cc "${AUTOPKGTEST_TMP}"/
+cd ${AUTOPKGTEST_TMP}
 
-export LC_ALL=C.UTF-8
-if [ "${AUTOPKGTEST_TMP}" = "" ] ; then
-  AUTOPKGTEST_TMP=$(mktemp -d /tmp/${pkg}-test.XXXXXX)
-  trap "rm -rf ${AUTOPKGTEST_TMP}" 0 INT QUIT ABRT PIPE TERM
-fi
+# Create meson file
+cat > $AUTOPKGTEST_TMP/meson.build << EOL
+project('atomic_queue_tests', 'cpp')
+atomic_queue_dep = dependency('atomic_queue')
+boost_dep = dependency('boost', modules: ['unit_test_framework'])
+atomic_queue_tests_exe = executable('atomic_queue_tests', 'tests.cc', dependencies: [atomic_queue_dep, boost_dep])
+test('atomic_queue_tests', atomic_queue_tests_exe)
+EOL
 
-cp  Makefile "${AUTOPKGTEST_TMP}"/
-mkdir "${AUTOPKGTEST_TMP}/src"
-cp src/tests.cc "${AUTOPKGTEST_TMP}/src/"
-
-cd "${AUTOPKGTEST_TMP}"
-
-make run_tests
+# Compile and run test
+meson setup build
+meson compile -C build
+meson test -C build


=====================================
include/atomic_queue/atomic_queue.h
=====================================
@@ -334,7 +334,7 @@ public:
     }
 
     bool was_full() const noexcept {
-        return was_size() >= static_cast<int>(static_cast<Derived const&>(*this).size_);
+        return was_size() >= capacity();
     }
 
     unsigned was_size() const noexcept {


=====================================
include/atomic_queue/defs.h
=====================================
@@ -56,6 +56,14 @@ static inline void spin_loop_pause() noexcept {
     asm volatile (".insn i 0x0F, 0, x0, x0, 0x010");
 }
 } // namespace atomic_queue
+#elif defined(__loongarch__)
+namespace atomic_queue {
+constexpr int CACHE_LINE_SIZE = 64;
+static inline void spin_loop_pause() noexcept
+{
+    asm volatile("nop \n nop \n nop \n nop \n nop \n nop \n nop \n nop");
+}
+} // namespace atomic_queue
 #else
 #ifdef _MSC_VER
 #pragma message("Unknown CPU architecture. Using L1 cache line size of 64 bytes and no spinloop pause instruction.")


=====================================
meson.build
=====================================
@@ -1,6 +1,6 @@
 # Copyright (c) 2019 Maxim Egorushkin. MIT License. See the full licence in file LICENSE.
 
-# (rm -rf build; meson build; cd build; time ninja -v)
+# (rm -rf build; meson setup build; time ninja -C build -v)
 
 project(
   'atomic_queue', 'cpp',
@@ -8,35 +8,63 @@ project(
   default_options : ['cpp_std=gnu++14', 'buildtype=release', 'b_ndebug=if-release']
 )
 
-cxx = meson.get_compiler('cpp')
-dl = cxx.find_library('dl', required : true)
-threads = dependency('threads')
-unit_test_framework = dependency('boost', modules : ['unit_test_framework'])
-if get_option('benchmarks')
-  tbb = cxx.find_library('tbb', required : true)
-  xenium = declare_dependency(include_directories : '../xenium')
-  moodycamel = declare_dependency(include_directories : '../')
-endif
+threads_dep = dependency('threads')
 
-atomic_queue = declare_dependency(include_directories : ['include'], dependencies : threads)
+atomic_queue_dep = declare_dependency(include_directories : ['include'], dependencies : threads_dep)
 
-tests_exe = executable(
-  'tests',
-  'src/tests.cc',
-  dependencies : [atomic_queue, unit_test_framework]
-)
-test('tests', tests_exe)
+if get_option('tests')
+  unit_test_framework_dep = dependency('boost', modules : ['unit_test_framework'])
 
-example_exe = executable(
-  'example',
-  'src/example.cc',
-  dependencies : [atomic_queue]
-)
+  tests_exe = executable(
+    'tests',
+    'src/tests.cc',
+    dependencies : [atomic_queue_dep, unit_test_framework_dep],
+  )
+  test('tests', tests_exe)
+
+  example_exe = executable(
+    'example',
+    'src/example.cc',
+    dependencies : [atomic_queue_dep],
+  )
+  test('example', example_exe)
+endif
 
 if get_option('benchmarks')
+  incompatible_cpp_std = ['c++98', 'c++03', 'c++11', 'c++14', 'gnu++03', 'gnu++11', 'gnu++14', 'vc++14']
+  if incompatible_cpp_std.contains(get_option('cpp_std'))
+    error('Benchmarks require C++17 or higher')
+  endif
+
+  cxx = meson.get_compiler('cpp')
+  dl_dep = cxx.find_library('dl')
+  xenium_dep = declare_dependency(include_directories : '../xenium')
+  boost_dep = dependency('boost')
+  tbb_dep = cxx.find_library('tbb')
+  moodycamel_dep = declare_dependency(include_directories : '../')
+
   benchmarks_exe = executable(
     'benchmarks',
     ['src/benchmarks.cc', 'src/cpu_base_frequency.cc', 'src/huge_pages.cc'],
-    dependencies : [atomic_queue, xenium, moodycamel, tbb, dl]
+    include_directories : ['src'],
+    dependencies : [atomic_queue_dep, dl_dep, xenium_dep, boost_dep, tbb_dep, moodycamel_dep],
   )
+  benchmark('benchmarks', benchmarks_exe)
 endif
+
+install_headers(
+  files(
+    'include/atomic_queue/atomic_queue.h',
+    'include/atomic_queue/atomic_queue_mutex.h',
+    'include/atomic_queue/barrier.h',
+    'include/atomic_queue/defs.h',
+    'include/atomic_queue/spinlock.h',
+  ),
+  subdir: 'atomic_queue'
+)
+pkg = import('pkgconfig')
+pkg.generate(
+  name: 'atomic_queue',
+  description: 'C++14 multiple-producer-multiple-consumer lock-free queues based on circular buffers',
+  libraries: [threads_dep]
+)


=====================================
meson_options.txt
=====================================
@@ -1,2 +1,4 @@
-option('benchmarks', type : 'boolean', value : true,
-       description : 'Do not build benchmarks; ignore their dependencies')
+option('benchmarks', type : 'boolean', value : false,
+       description : 'Build benchmarks (requires Boost, TBB, Xenium, moodycamel and C++17)')
+option('tests', type : 'boolean', value : true,
+       description : 'Build tests and example (requires Boost)')


=====================================
src/tests.cc
=====================================
@@ -6,7 +6,6 @@
 #include <boost/test/unit_test.hpp>
 
 #include "atomic_queue/atomic_queue.h"
-#include "atomic_queue/atomic_queue_mutex.h"
 #include "atomic_queue/barrier.h"
 
 #include <cstdint>
@@ -250,6 +249,8 @@ BOOST_AUTO_TEST_CASE(try_push) {
 BOOST_AUTO_TEST_CASE(size) {
     atomic_queue::RetryDecorator<atomic_queue::AtomicQueueB2<float>> q(10);
     BOOST_CHECK_EQUAL(q.capacity(), CACHE_LINE_SIZE * CACHE_LINE_SIZE);
+    BOOST_CHECK(q.was_empty());
+    BOOST_CHECK(!q.was_full());
 }
 
 BOOST_AUTO_TEST_CASE(power_of_2) {



View it on GitLab: https://salsa.debian.org/med-team/libatomic-queue/-/compare/7b31c445db9bdbb8548e41bbee63745e8c062f1e...ad2de3d8a3d151513720a8337006834b46b65298

-- 
View it on GitLab: https://salsa.debian.org/med-team/libatomic-queue/-/compare/7b31c445db9bdbb8548e41bbee63745e8c062f1e...ad2de3d8a3d151513720a8337006834b46b65298
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20250624/9521c2a3/attachment-0001.htm>


More information about the debian-med-commit mailing list