Ravenbrook / Projects


Memory Pool System Project

Richard Brooksby, Ravenbrook Limited, 2002-06-18

Quick Q&A

What? The Memory Pool System (MPS) is a flexible and adaptable memory management software library.
Why? The MPS Project aims to disseminate this technology through sharing and licensing.
When? MPS is available now. Open-source licensing was announced at ISMM 2002.
Where? From Ravenbrook.
Now read on.

1. Introduction

This is the project document for the Memory Pool System Project. This document will be updated as the project develops to provide an index to all the project materials, and an overview of the project, its status, and so on. It's the starting point for anyone interested in the project, and a document to read to check on the project's progress.

The readership of this document is anyone interested in the project.

This document is not confidential.

2. Project Overview

This is a project to develop the Memory Pool System (MPS).

The Memory Pool System is a very general, adaptable, flexible, reliable, and efficient memory management system. It permits the flexible combination of memory management techniques, supporting manual and automatic memory management, in-line allocation, finalization, weakness, and multiple concurrent co-operating incremental generational garbage collections. It also includes a library of memory pool classes implementing specialized memory management policies.

For a more detailed overview of the MPS, see "The Memory Pool System: Thirty person-years of memory management development goes Open Source" [RB 2002-01-30].

For an introduction to memory management in general, see the Memory Management Reference Beginner's Guide, which also has links to numerous other resources.

3. Downloads

The latest open-source release of the software is freely downloadable from release/1.106.2/. There is also a full list of releases.

4. Project Status

This section was updated on 2007-07-06.

4.1. Previously

2001: We obtained the remaining project sources and documents from Global Graphics and imported them into our repository. We knocked as many as possible into shape and prepared them for publication.

2002: The MPS was made open source at the 2002 International Symposium on Memory Management. You can download the sources from the release directory or browse them in place.

2003-2006: Further commercial support and development.

2007: The MPS is in use by various proprietary and open-source projects. We recently (2007-04-01) gave a tutorial talk on using the MPS, and the techniques it uses, at ILC07 -- the International Lisp Conference 2007.

4.2. Currently

July 2007: Expanding the rank system. Semantics, programming patterns, and performance of finalization and weakness are all being worked on.

Background task: We are making the MPS give more feedback about its state and current activities.

Background task: We are supporting and developing the MPS for our current clients, and improving the introductory documentation.

4.3. Next

Summer 2007: likely topics include changes / additions to weak reference semantics, and improving collection scheduling.

Planned for 2007: integrate the MPS with a lisp-like language, and make this integration process easier for new MPS users. Update (July 2007): some initial investigation complete, but further work is on hold during (unrelated) work on finalization and weakness.

5. Project Tree

master/ Master product sources: code, designs, manuals, etc.
branch/ Development branches, both predating our acquisition of the MPS (and in particular the imported trunk) and postdating that acquisition. Most of these documents are confidential and not available to the public.
doc/ Project documents: reports, meeting notes, etc.
version/ Product version source branches (branched from master): 1.100 .. 1.108.
release/ Product releases (built from version sources): 1.100.0 .. 1.108.0 (latest release).
issue/ Issues with the project and its products.
changes/ Changes made to the product. These documents are not available to the public.
procedure/ Procedures governing the project: for the one-off import of RCS hierarchy into Ravenbrook's perforce repository , etc.
import/ Material imported from outside the project. Some of these documents are confidential and not available to the public.
tool/ Tools for managing the project (but not for development, building, or testing).
mail/ Mail archives of the MM group at Harlequin (as was). These documents are confidential and not available to the public.

6. Project Contacts

If you have questions about the project please write to mps-questions@ravenbrook.com

You can also join the mps-discussion mailing list if you are interested in project progress, or if you're adapting or extending the MPS. The goals of the list are:

  1. to provide feedback to the project on requirements, design, implementation, etc.;
  2. to allow people to exchange information and experience with using and adapting the project;
  3. to keep people informed about project progress.

To join, send a message with the word "subscribe" in the body to mps-discussion-request@ravenbrook.com or send the word "help" for general information.

Please note that the mailing list will be archived and the archive may be published.

A. References

[RB 2002-01-30] "The Memory Pool System: Thirty person-years of memory management development goes Open Source"; Richard Brooksby; Ravenbrook Limited; 2002-01-30.

B. 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.

C. Copyright and License

This document is copyright © 2001, 2002, 2004, 2006-2007 Ravenbrook Limited. All rights reserved. This is an open source license. Contact Ravenbrook for commercial licensing options.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Redistributions in any form must be accompanied by information on how to obtain complete source code for this software and any accompanying software that uses this software. The source code must either be included in the distribution or be available for no more than the cost of distribution plus a nominal fee, and must be freely redistributable under reasonable conditions. For an executable file, complete source code means the source code for all modules it contains. It does not include source code for modules or files that typically accompany the major components of the operating system on which the executable file runs.

This software is provided by the copyright holders and contributors "as is" and any express or implied warranties, including, but not limited to, the implied warranties of merchantability, fitness for a particular purpose, or non-infringement, are disclaimed. In no event shall the copyright holders and contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.


$Id: //info.ravenbrook.com/project/mps/index.html#25 $

Ravenbrook / Projects