# CMM

> Customisable Memory Manager - conservative garbage collector for C++ developed for PoSSo (Polynomial System Solver) project

**Wikidata**: [Q109375562](https://www.wikidata.org/wiki/Q109375562)  
**Source**: https://4ort.xyz/entity/cmm

## Summary
CMM (Customisable Memory Manager) is a conservative garbage collector for C++ developed as part of the PoSSo (Polynomial System Solver) project. It provides customizable memory management capabilities and supports multiple operating systems, including Microsoft Windows, macOS, and OpenVMS.

## Key Facts
- CMM was developed for the PoSSo (Polynomial System Solver) project.
- It is a conservative garbage collector designed for C++.
- Created by Giuseppe Attardi and Tito Flagella.
- Supports platforms such as SunOS 4.x, Solaris 2.x, Linux (versions 1.x and 2.x), IBM AIX (RS6000), Microsoft Windows, macOS, and OpenVMS.
- The latest version is 1.9, released on 1998-03-02.
- CMM is classified as software with main subjects being garbage collection and memory management.
- It is copyrighted but dedicated to the public domain by its copyright holder.
- Source code is available at: https://archive.softwareheritage.org/swh:1:dir:557869d98df80317f2d7835460388cfc41414aa5;origin=https://github.com/Unipisa/CMM;visit=swh:1:snp:9dabc2692c9a6032b81f31676af04a487d95ebb3;anchor=swh:1:rev:c0f12bb6f3ea8f1350371695b42990a5c2eb93f2
- Contributors include: Pietro Iglio, Christian Heckler, Hans-J. Boehm, Joachim Hollman, John Abbott, Patrick C. Beard, Uttam M. Narsu.
- Related documentation includes: 
  - CoverMailForCMMAttardiToDiCosmo.pdf
  - A_CUSTOMISABLE_MEMORY_MANAGEMENT_FRAMEWORK.pdf
- Creator Giuseppe Attardi is an Italian computer scientist born in 1950, who also works as a university teacher.

## FAQs
### What is CMM?
CMM stands for Customisable Memory Manager. It is a conservative garbage collector for C++ developed under the PoSSo (Polynomial System Solver) project. Its primary function is to provide customizable memory management solutions.

### Who created CMM?
CMM was created by Giuseppe Attardi and Tito Flagella. Giuseppe Attardi is an Italian computer scientist born in 1950, known for his work in computer science and as a university teacher.

### On which platforms does CMM run?
CMM supports several platforms including SunOS 4.x, Solaris 2.x, Linux (versions 1.x and 2.x), IBM AIX (RS6000), Microsoft Windows, macOS, and OpenVMS.

### What are the key features of CMM?
CMM offers customizable memory management for C++ applications, supports multiple operating systems, and implements conservative garbage collection techniques. It is designed to be integrated into complex software systems like those used in polynomial solving.

### Is CMM open-source or proprietary?
CMM is copyrighted but has been dedicated to the public domain by its copyright holder, making it effectively open for public use.

### Where can I find the source code for CMM?
The source code repository for CMM is hosted on GitHub and archived at Software Heritage: [https://archive.softwareheritage.org/swh:1:dir:557869d98df80317f2d7835460388cfc41414aa5;origin=https://github.com/Unipisa/CMM](https://archive.softwareheritage.org/swh:1:dir:557869d98df80317f2d7835460388cfc41414aa5;origin=https://github.com/Unipisa/CMM;visit=swh:1:snp:9dabc2692c9a6032b81f31676af04a487d95ebb3;anchor=swh:1:rev:c0f12bb6f3ea8f1350371695b42990a5c2eb93f2)

### What versions of CMM have been released?
CMM has had multiple version releases:
- Version 1.1 (1994-10-27)
- Version 1.3 (1994-11-07)
- Version 1.4 (1995-10-03)
- Version 1.5 (1995-11-02)
- Version 1.6 (1996-06-06)
- Version 1.8 (1997-05-15)
- Version 1.9 (1998-03-02)

### What documentation is available for CMM?
Documentation includes:
- CoverMailForCMMAttardiToDiCosmo.pdf
- A_CUSTOMISABLE_MEMORY_MANAGEMENT_FRAMEWORK.pdf

### Who contributed to the development of CMM?
Key contributors include Pietro Iglio, Christian Heckler, Hans-J. Boehm, Joachim Hollman, John Abbott, Patrick C. Beard, and Uttam M. Narsu.

## Why It Matters
CMM plays a critical role in enabling efficient memory management for C++ programs, particularly within the context of large-scale computational projects like PoSSo. By implementing a conservative garbage collector, it addresses the complexity of manual memory management in C++, reducing the risk of memory leaks and improving system stability. Its cross-platform support enhances its utility across diverse computing environments, from academic research to enterprise systems. As part of the public domain, CMM contributes to the broader software development community by offering reusable, customizable memory management tools.

## Notable For
- Being one of the early conservative garbage collectors tailored for C++.
- Integration into the PoSSo (Polynomial System Solver) project, a significant academic initiative.
- Cross-platform compatibility including legacy systems like OpenVMS and IBM AIX.
- Public domain licensing despite original copyright, encouraging reuse and modification.
- Contributions from notable figures in computer science and systems programming.
- Longevity of development, with version history spanning from 1994 to 1998.
- Support for both 32-bit and 64-bit architectures through platform-specific builds.

## Body

### History
CMM was developed as part of the PoSSo (Polynomial System Solver) project, aimed at providing a robust and flexible memory management solution for C++ applications. The development was led by Giuseppe Attardi and Tito Flagella, with contributions from a range of experts including Pietro Iglio, Christian Heckler, Hans-J. Boehm, Joachim Hollman, John Abbott, Patrick C. Beard, and Uttam M. Narsu. The project saw iterative development from 1994 to 1998, with version 1.9 being the final major release.

### Architecture and Technical Details
CMM is designed as a conservative garbage collector, which means it identifies and manages memory without requiring explicit programmer intervention for deallocation. It supports a wide array of platforms including SunOS 4.x, Solaris 2.x, Linux (1.x and 2.x), IBM AIX (RS6000), Microsoft Windows, macOS, and OpenVMS. This broad compatibility makes it suitable for deployment in heterogeneous computing environments.

### Ecosystem and Integration
CMM is part of the PoSSo project, which focuses on solving polynomial systems through computational methods. Its modular design allows integration into larger software systems where dynamic memory management is crucial. The software is classified under the broader category of "software" and is primarily concerned with garbage collection and memory management.

### Community and Contributors
The development of CMM involved a multidisciplinary team of contributors from both academic and industrial backgrounds. Key individuals include:
- Giuseppe Attardi: Creator and Italian computer scientist.
- Tito Flagella: Co-creator.
- Additional contributors: Pietro Iglio, Christian Heckler, Hans-J. Boehm, Joachim Hollman, John Abbott, Patrick C. Beard, Uttam M. Narsu.

### Licensing and Availability
CMM is copyrighted but has been dedicated to the public domain by its copyright holder, making it freely available for use and modification. The source code is archived and accessible via the Software Heritage archive, ensuring long-term preservation and access. Documentation includes technical papers and correspondence related to its development.

### Related Projects and Documentation
CMM is associated with the following documents:
- *CoverMailForCMMAttardiToDiCosmo.pdf*
- *A_CUSTOMISABLE_MEMORY_MANAGEMENT_FRAMEWORK.pdf*

These resources provide insight into the design philosophy and implementation details of CMM. The project also links to the broader field of memory management frameworks and garbage collection methodologies.

## References

1. [Source](https://archive.softwareheritage.org/swh:1:rev:c0f12bb6f3ea8f1350371695b42990a5c2eb93f2;origin=https://github.com/Unipisa/CMM;visit=swh:1:snp:9dabc2692c9a6032b81f31676af04a487d95ebb3)
2. [Source](https://archive.softwareheritage.org/browse/revision/55778ad8b99c136e1886959c1f1333c776df14e1/?origin_url=https://github.com/Unipisa/CMM&snapshot=9dabc2692c9a6032b81f31676af04a487d95ebb3)
3. [Source](https://archive.softwareheritage.org/browse/revision/b2be05bf9df919837e45359f90f640bbd6975330/?origin_url=https://github.com/Unipisa/CMM&snapshot=9dabc2692c9a6032b81f31676af04a487d95ebb3)
4. [Source](https://archive.softwareheritage.org/browse/revision/bf76b38a16a1c7c2b9b54c40b3d6e1471fe79c7b/?origin_url=https://github.com/Unipisa/CMM&snapshot=9dabc2692c9a6032b81f31676af04a487d95ebb3)
5. [Source](https://archive.softwareheritage.org/browse/revision/b9c41e1dc870c04d12224f01cf5ef2d18b035756/?origin_url=https://github.com/Unipisa/CMM&snapshot=9dabc2692c9a6032b81f31676af04a487d95ebb3)
6. [Source](https://archive.softwareheritage.org/browse/revision/29c7c5881c0ff2ef9e3a96be37e6eaef9b33a201/?origin_url=https://github.com/Unipisa/CMM&snapshot=9dabc2692c9a6032b81f31676af04a487d95ebb3)
7. [Source](https://archive.softwareheritage.org/browse/revision/0e186db83a043dcfe9c666dd4c90f9e8d1b9234e/?origin_url=https://github.com/Unipisa/CMM&snapshot=9dabc2692c9a6032b81f31676af04a487d95ebb3)