summaryrefslogtreecommitdiff
path: root/graphics/asymptote/libatomic_ops/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/libatomic_ops/README.md')
-rw-r--r--graphics/asymptote/libatomic_ops/README.md130
1 files changed, 130 insertions, 0 deletions
diff --git a/graphics/asymptote/libatomic_ops/README.md b/graphics/asymptote/libatomic_ops/README.md
new file mode 100644
index 0000000000..1e96a70bc2
--- /dev/null
+++ b/graphics/asymptote/libatomic_ops/README.md
@@ -0,0 +1,130 @@
+# The atomic_ops library (`libatomic_ops`)
+
+IN NEW CODE, PLEASE USE C11 OR C++14 STANDARD ATOMICS INSTEAD OF THE CORE
+LIBRARY IN THIS PACKAGE.
+
+This is version 7.8.2 of libatomic_ops.
+
+License: [MIT](LICENSE) for core library / [GPL-2.0](COPYING) for gpl
+extension.
+
+
+## Download
+
+You might find a more recent/stable version on the
+[Download](https://github.com/ivmai/libatomic_ops/wiki/Download) page, or
+[BDWGC site](http://www.hboehm.info/gc/).
+
+Also, the latest bug fixes and new features are available in the
+[development repository](https://github.com/ivmai/libatomic_ops).
+
+
+## Overview
+
+This package provides semi-portable access to hardware-provided
+atomic memory update operations on a number of architectures. These might
+allow you to write code:
+
+* That does more interesting things in signal handlers.
+
+* Makes more effective use of multiprocessors by allowing you to write
+ clever lock-free code. Note that such code is very difficult to get
+ right, and will unavoidably be less portable than lock-based code. It
+ is also not always faster than lock-based code. But it may occasionally
+ be a large performance win.
+
+* To experiment with new and much better thread programming paradigms, etc.
+
+Please see other README files for the details:
+
+* [README_details.txt](README_details.txt) - details about atomic_ops.h
+
+* [README_malloc.txt](README_malloc.txt) - a simple almost-lock-free malloc
+ implementation (part of libatomic_ops_gpl)
+
+* [README_stack.txt](README_stack.txt) - an almost lock-free LIFO linked
+ lists (stack) implementation (part of libatomic_ops_gpl)
+
+
+## Installation and Usage
+
+The configuration and build scripts for this package were generated by
+Automake/Autoconf. `./configure; make; sudo make install` in this
+directory should work. For a more customized build, see the output of
+`./configure --help`. To build it from the development repository,
+`./autogen.sh` should be executed first.
+
+Alternatively, CMake could be use to build this package, e.g.
+`cmake . && cmake --build .` in this directory should work.
+
+Note that much of the content of this library is in the header files.
+However, two small libraries are built and installed:
+
+* `libatomic_ops.a` is a support (core) library, which is not needed on some
+ platforms. This is intended to be usable, under some mild restrictions,
+ in free or proprietary code, as are all the header files.
+ See [LICENSE](LICENSE) for more details about the licensing.
+
+* `libatomic_ops_gpl.a` is a so called gpl extension library containing some
+ higher level facilities. This code is covered by the GPL. The contents
+ correspond to the headers `atomic_ops_malloc.h` and `atomic_ops_stack.h`.
+ Not built and not installed if `--disable-gpl` option is passed to
+ `configure` (or if `-Denable_gpl=OFF` option is passed to `cmake` if the
+ latter is used to build the package). The licensing details are given in
+ [COPYING](COPYING) and [LICENSE](LICENSE) files.
+
+
+## Platform Specific Notes
+
+Win32/64: src/Makefile.msft contains a very simple Makefile for building
+and running tests and building the gpl library. The core `libatomic_ops`
+implementation is entirely in header files (libatomic_ops.lib is built anyway
+to match that of the configure-based build process, but libatomic_ops.lib has
+only the implementation of the internal AO_pause() used by the gpl library).
+More information is provided in [README_win32.txt](README_win32.txt) file.
+
+HP-UX/PA-RISC: `aCC -Ae` won't work as a C compiler, since it doesn't support
+inline assembly code. Use cc.
+
+
+## Feedback, Contribution, Questions and Notifications
+
+Please address bug reports and new feature ideas to
+[GitHub issues](https://github.com/ivmai/libatomic_ops/issues). Before the
+submission please check that it has not been done yet by someone else.
+
+If you want to contribute, submit
+a [pull request](https://github.com/ivmai/libatomic_ops/pulls) to GitHub.
+
+If you need help, use
+[Stack Overflow](https://stackoverflow.com/questions/tagged/atomic-ops).
+Older questions on the site can be found by
+[this query](https://stackoverflow.com/search?q=atomic_ops).
+Older technical discussions are also available in `bdwgc` mailing list
+archive - it can be downloaded as a
+[compressed file](https://github.com/ivmai/bdwgc/files/1038163/bdwgc-mailing-list-archive-2017_04.tar.gz)
+or browsed at [Narkive](http://bdwgc.opendylan.narkive.com) (please search
+for _atomic_ keyword).
+
+To get new release announcements, subscribe to
+[RSS feed](https://github.com/ivmai/libatomic_ops/releases.atom).
+(To receive the notifications by email, a 3rd-party free service like
+[IFTTT RSS Feed](https://ifttt.com/feed) can be setup.)
+To be notified on all issues, please
+[watch](https://github.com/ivmai/libatomic_ops/watchers) the project on
+GitHub.
+
+
+## Copyright & Warranty, Contributors
+
+Please be aware of the dual nature of the license of libatomic_ops:
+
+* the core part (implementing semi-portable access to hardware-provided
+ atomic memory operations) is released under MIT license
+
+* the gpl extension (almost lock-free malloc and stack implementations) and
+ the tests are released under GPL-2.0 license
+
+The exact licensing information is provided in [LICENSE](LICENSE) file.
+
+The library contributors are listed in [AUTHORS](AUTHORS) file.