rgo

rgo (Runtime-alGOrithmic, pronounced as are-go) is a C/C++ library for runtime algorithmics on memory sequences.

rgo, by default, implements it's algorithms in C. On some platforms (see section Supported Platforms), we implement them in assembly instead. This is to ensure that architecture features (such as SIMD) are used to make the algorithms as efficient as possible.

Note: This library is still in it's early stages and is NOT anywhere near being fully optimised.


Supported Platforms

rgo is written in C except on some platforms where we have implemented the algorithms in assembly instead.

Our implementations are only compatbile with System V-based operating systems. Support for Windows in a future release is being reflected.

Currently, we have only implemented algorithms in assembly for the following architectures:

They have been implemented using the GNU C extension for inline assembly, meaning a supporting compiler is required (such as Clang, GCC, and ICC).


Building

The provided makefile has been tested to work with GNU make and BSD make and should work with other make implementations.

The target rgo builds the static library file (located at rgo/librgo.a). The target clean removes all object files, whilst purge removes all object files and the static library file.

Instructions for building the test program may be found on the first line of test.c.


Copyright and License

Copyright 2022 Gabriel Jensen.

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.

If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.