Git Product home page Git Product logo

ocean's Introduction

Description CI

Ocean is a general purpose library, compatible with both D1 and D2, with a focus on supporting the development of high-performance, real-time applications. This focus has led to several noteworthy design choices:

  • Ocean is not cross-platform. The only supported platform is Linux.
  • Ocean assumes a single-threaded environment. Fiber-based multi-tasking is favoured, internally.
  • Ocean aims to minimise use of the D garbage collector. GC collect cycles can be very disruptive to real-time applications, so Ocean favours a model of allocating resources once then reusing them, wherever possible.

Ocean began life as an extension of Tango, some elements of which were eventually merged into Ocean.

D2 Compatibility

Since v5.0.0, Ocean is a D2-only library.

Build / Use

Dependencies

This library has quite a number of dependencies, but it depends on which modules you want to use. Usually the easiest way to find out is just using it and see which libraries the linker fails to find and then install by demand.

If you want to install everything, then the list is as follows (for an absolutely up to date list you can take a look at the Build.mak file, in the $O/%unittests target):

  • -lglib-2.0
  • -lpcre
  • -lxml2
  • -lxslt
  • -lebtree
  • -lreadline
  • -lhistory
  • -llzo2
  • -lbz2
  • -lz
  • -ldl
  • -lgcrypt
  • -lgpg-error
  • -lrt

To install those dependencies on Ubuntu refer to the apt-get install command in docker/build.

Please note that ebtree is not the vanilla upstream version. We created our own fork of it to be able to write D bindings more easily. You can find the needed ebtree library in https://github.com/sociomantic-tsunami/ebtree/releases (look only for the v6.0.socioX releases, some pre-built Ubuntu packages are provided).

If you plan to use the provided Makefile (you need it to convert code to D2, or to run the tests), you need to also checkout the submodules with git submodule update --init. This will fetch the Makd project in submodules/makd.

Versioning

ocean's versioning follows Neptune.

This means that the major version is increased for breaking changes, the minor version is increased for feature releases, and the patch version is increased for bug fixes that don't cause breaking changes.

Support Guarantees

  • Major branch development period: 6 months
  • Maintained minor versions: 2 most recent

Maintained Major Branches

Major Initial release date Supported until
v5.x.x v5.0.0: 04/04/2019 TBD

Releases

Latest release notes | All releases

Releases are handled using GitHub releases. The notes associated with a major or minor github release are designed to help developers to migrate from one version to another. The changes listed are the steps you need to take to move from the previous version to the one listed.

The release notes are structured in 3 sections, a Migration Instructions, which are the mandatory steps that users have to do to update to a new version, Deprecated which contains deprecated functions that are recommended not to use but will not break any old code, and the New Features which are optional new features available in the new version that users might find interesting. Using them is optional, but encouraged.

Contributing

See the guide for contributing to Neptune-versioned libraries.

ocean's People

Contributors

mihails-strasuns-sociomantic avatar nemanja-boric-sociomantic avatar mathias-lang-sociomantic avatar geod24 avatar leandro-lucarella-sociomantic avatar david-eckardt-sociomantic avatar don-clugston-sociomantic avatar matthias-wende-sociomantic avatar ben-palmer-sociomantic avatar gautam-kotian-sociomantic avatar scott-gibson-sociomantic avatar joseph-wakeling-sociomantic avatar tiyash-basu-sociomantic avatar andrew-stevenson-sociomantic avatar bogdan-szabo-sociomantic avatar joseph-wakeling-frequenz avatar llucax avatar mathias-baumann-sociomantic avatar gkotian avatar stefan-brus-sociomantic avatar jens-mueller-sociomantic avatar vasileios-karavasilis-sociomantic avatar stefan-koch-sociomantic avatar oraby avatar burak-tutanlar-sociomantic avatar david-eckardt-frequenz avatar razvann7 avatar rainers avatar martinnowak avatar kinke avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.