Memory Pool System ================== :Author: Richard Brooksby :Organization: Ravenbrook Limited :Date: 2013-06-03 :Revision: $Id: //info.ravenbrook.com/project/mps/index.rst#15 $ :Confidentiality: public :Readership: anyone :Template: rst-project-index .. image:: art/2013-06-05/mps-logotype/mps-logotype-713-transparent.png :width: 60% :align: center :alt: Memory Pool System The Memory Pool System is a flexible and adaptable `memory manager`_. Among its many advantages are an `incremental garbage collector`_ with very low pause times, and an extremely robust implementation. It's both open source and commercially licensed_. Features -------- - **fast**: lock-free `inline allocation`_ in just a few instructions - **responsive**: GC with low pause times even when heavily loaded - **flexible**: wide range of pluggable `memory pools`_ - **easy**: GC uncooperative programs using `conservative collection`_ - **easy to build**: `basically `__ ``cc -c mps.c`` - **cooperative**: returns memory to the OS (believe it or not, this is rare) - **portable**: many platforms_, strict `ISO C`_ easily ported to others - **embeddable**: can compile down to a 200K freestanding C library - **robust**: high quality software engineering since 1994 - **supported**: Ravenbrook_ commercially support and develop the MPS .. _Ravenbrook: https://www.ravenbrook.com .. _platforms: master/manual/html/guide/build.html#platforms .. _`conservative collection`: master/manual/html/glossary/c.html#term-conservative-garbage-collection Interested? ----------- - `Read the documentation `__ - `Download the latest release `__ - `Join the mailing list `__ - `Fork it on GitHub `__ More Resources -------------- `Master Sources `_ Browse the `latest source code `__, `designs `__, and `other good stuff `__. `Versions `_, `Releases `_, and `Issues `_ Versions are stable supported branches, and releases are fixed builds from versions [RB_1999-05-20]_. Issues record defects and tasks -- our bug tracker. For a more detailed overview of the MPS, see "The Memory Pool System: Thirty person-years of memory management development goes Open Source" [BB_2002-01-30]_. For an introduction to memory management in general, see the `Introduction to Memory Management`_, which also has links to numerous other resources. Any other questions? Worried about licensing? Write to us at mps-questions@ravenbrook.com. We're friendly. References ---------- .. [BB_2002-01-30] "The Memory Pool System: Thirty person-years of memory management development goes Open Source"; Nicholas Barnes, Richard Brooksby; Ravenbrook Limited; 2002-01-30; . .. [RB_1999-05-20] "Product Quality through Change Management"; Richard Brooksby; Ravenbrook Limited; 1999-05-20; . .. Document History ---------------- - 2001-08-13 NDL_ Created. - 2001-10-05 NDL_ Added MM group mail archives, 1994-2000. - 2001-10-08 NDL_ Links to MMDoc and MMInfo. - 2001-10-31 NDL_ Added master/. - 2002-06-18 RB_ Added doc/. - 2002-06-18 RB_ Substantial rewrite. Claimed authorship. Added version 1.100 and release 1.100.0. - 2002-06-20 NDL_ Updated copyright / license to match the rest of the open-source distribution. Added glossary link for "incremental". - 2002-06-21 NB_ Added release 1.100.1. - 2004-12-13 RHSK Starting MPS Project Review: add link. Changed Quick Q&A. Other updates. - 2006-01-19 RHSK Update for start of 2006. - 2006-04-13 RHSK Update with release/1.106.2. - 2006-12-13 RHSK Version 1.107. - 2007-02-21 RHSK Update project status. - 2007-07-06 RHSK Version 1.108 and release 1.108.0. - 2010-08-10 RHSK Update project status. - 2011-07-15 PNJ_ Altered style, removed section numbering, updated status. - 2012-09-12 RB_ Quick update based on recent major changes to the sources. But this whole page needs a redesign. - 2012-09-14 RB_ Released 1.110.0. - 2012-09-28 RB_ Added link to distribution materials. - 2013-06-03 RB_ Complete redesign to make the page an outward facing document, rather than a mixture. Converted to reST_. - 2014-01-13 GDR_ Released 1.112.0. - 2014-03-18 GDR_ Released 1.113.0. - 2016-01-28 RB_ Git repository renamed from mps-temporary to mps. .. _RB: /consultants/rb .. _GDR: /consultants/gdr .. _NDL: /consultants/ndl .. _NB: /consultants/nb .. _PNJ: /consultants/pnj .. _reST: http://docutils.sourceforge.net/rst.html .. _`memory manager`: master/manual/html/glossary/m.html#term-memory-manager .. _`incremental garbage collector`: master/manual/html/glossary/i.html#term-incremental-garbage-collection .. _licensed: master/license?format=rst .. _`memory pools`: master/manual/html/pool/intro.html .. _`Introduction to Memory Management`: master/manual/html/mmref/index.html .. _`inline allocation`: master/manual/html/topic/allocation.html#allocation-points .. _`ISO C`: https://en.wikipedia.org/wiki/ISO_C