NBAda

A library of lock-free data structures and algorithms for Ada

Copyright (C) 2005 - 2016 Anders Gidenstam

Feel free to drop me an e-mail (see bottom of page for the address) if you find some of this software useful or have other comments, suggestions or questions.

News

2015-05-16 The development tree of NBAda is now available at github.com. 2011-09-24 The development tree of NBAda is now available at gitorious.org. 2008-09-17 The first prerelease of NBAda, my library of lock-free algorithms and data structures, is now available. It includes the the separate packages that were avaialble here previously and additional lock-free data structures and algorithms.

For more information on lock-free and wait-free synchronization, see e.g. the publications page of the research group on Distributed Computing and Systems where I did my Ph.D.

If you are looking for a production quality library of non-blocking data structures and algorithms I highly recommend NOBLE - a library of non-blocking synchronization protocols by Håkan Sundell and Philippas Tsigas. (What I have here has not reached that level of maturity yet.)

The current set of data structures and algorithms implemented in NBAda

Atomic 1-writer N-reader registers.

Atomic multi-writer snapshots.

Lock-free software load-linked/store-conditional for multi-word objects.

Lock-Free stacks of dynamic size.

Lock-free FIFO queues of bounded and dynamic size.

Lock-free deques of dynamic size.

Lock-free priority queues of dynamic size.

Lock-free sets of dynamic size.

Lock-free dictionaries of dynamic size.

Lock-free memory reclamation algorithms of various strength: epoch-based reclamation, hazard pointers, pass-the-buck, SLFRC, Beware & Cleanup.

Abstraction layer for the hardware synchronization primitives provided by most multiprocessor systems.

See the NBAda reference manual draft for more information.

Compilers/Platforms

NBAda is written in Ada 95, but with some specific dependences on GNAT (e.g. for inline assembler) and some (fairly reasonable) assumptions on how various data types are represented that are not guranteed by the Ada Language Reference Manual but seem to hold on the platforms and compilers I have tried.

The 0.1.0-pre0 release has been tested on:

Debian GNU/Linux testing, i686 (4x Intel Core2 Q9400), GNAT GPL 2008. Currently only tested in 32bit mode. Tests in 64bit x86_64 mode are forthcomming.

Debian GNU/Linux 3.1, i686 (2x Intel T2500 Centrino Duo), GNAT GPL 2007 and 2008.

Debian GNU/Linux testing, i686 (1x AMD Athlon XP), GNAT GPL 2008.

Older versions have been tested on (among others):

Debian GNU/Linux testing/unstable, i686 (1x AMD Athlon XP), GNAT 3.15p.

Red Hat Linux, i686 (4x Intel Xeon), GCC 3.4.4.

Solaris 9, SPARCv8+ (32-bit) and SPARCv9 (64-bit) (64x UltraSPARC III+), GNAT GPL 2006. (No access anymore)

Solaris 9, SPARCv8+ (6x UltraSPARC III+), GNAT 3.14p. (Works with the rts-pthread runtime system.)

IRIX 6.5.18f, MIPS (30x MIPS R10000), GCC 3.4. (No access anymore) [link]

(NOTE: With GNAT 3.14p and 3.15p the gnat.adc file usually present in my packages might need to be removed.)

Releases

NBAda is released under the GNU General Public License version 2 or later.

NBAda - A library of lock-free data structures and algorithms for Ada Copyright (C) 2004 - 2013 Anders Gidenstam This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

The development tree of NBAda is available at gitorious.org.

NBAda 0.1.0-pre0

Released 2008-09-17.

back to Anders' Ada software page

back to Anders' home page