From 4dc4db63747f4539ddb42f0a88d34e20989dc263 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Wed, 22 Feb 2023 18:05:09 +0000 Subject: [PATCH 1/8] Creating branch/2023-02-22/migrate-plan to migrate the MPS project plan into the Git MPS tree Copied from Perforce Change: 199022 From ef4fe680d40171742df198ffd2c8e12f336c5373 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Wed, 22 Feb 2023 18:16:25 +0000 Subject: [PATCH 2/8] Integrating the MPS project plan to branch/2023-02-22/migrate-plan. Copied from Perforce Change: 199026 --- plan.rst | 199 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 plan.rst diff --git a/plan.rst b/plan.rst new file mode 100644 index 0000000000..0635b80e6a --- /dev/null +++ b/plan.rst @@ -0,0 +1,199 @@ +.. mode: -*- rst -*- + +Memory Pool System Project Plan +=============================== + +:Author: Gareth Rees +:Date: 2014-05-16 +:Status: live +:Revision: $Id$ +:Copyright: See `Copyright and License`_. + + +Introduction +------------ + +This is the plan for development of the Memory Pool System. + +This document will be modified as the project progresses. + +The readership of this document is anyone interested in the project. + +This document is not confidential. + + +Future versions +--------------- + +Version 1.116 +............. + +Better measurement and visualization of space and time performance. + +Improvements to performance and tunability via separation of concerns +(see [GDR_2014-05-15]_). + +* job003783_ (ChainCondemnAuto condemns too many generations) +* job003796_ (White segment lookup is slow) +* job003797_ (AMC space is lost to pinning) +* job003799_ (Incrementally collecting the nursery may be a waste) + +.. _job003783: https://www.ravenbrook.com/project/mps/issue/job003783/ +.. _job003796: https://www.ravenbrook.com/project/mps/issue/job003796/ +.. _job003797: https://www.ravenbrook.com/project/mps/issue/job003797/ +.. _job003799: https://www.ravenbrook.com/project/mps/issue/job003799/ + +Improvements to flexibility by removing special cases and +introducing abstractions: + +* job003765_ (Pools use GCSeg when they are not GC pools) +* job003838_ (MVT uses segments unnecessarily) + +.. _job003765: https://www.ravenbrook.com/project/mps/issue/job003765/ +.. _job003838: https://www.ravenbrook.com/project/mps/issue/job003838/ + +Improvements to usability: + +* job003794_ (Hard to predict the mortality in a generation) + +.. _job003794: https://www.ravenbrook.com/project/mps/issue/job003794/ + +Improvements to testing: + +* job003839_ (No benchmarks for space performance) + +.. _job003839: https://www.ravenbrook.com/project/mps/issue/job003839/ + + +Past versions +------------- + +Version 1.115 +............. + +Gain client control over pause times (see [GDR_2014-05-14]_ and [GDR_2014-05-15]_). + +* job003539_ (MPS pause times are not well regulated) + +.. _job003539: https://www.ravenbrook.com/project/mps/issue/job003539/ + + +Version 1.114 +............. + +Improvements to performance and tunability via separation of concerns +(see [GDR_2014-05-15]_). + +* job003509_ (MVFF uses segments unnecessarily) +* job003554_ (MPS slows down considerably when arena is extended) +* job003701_ (MVSpanAlloc shows up in GC profiles) +* job003812_ (MVAlloc taking significant CPU in profiles) +* job003823_ (No control over constant factor in tract management) +* job003824_ (No control over the constant factor in AMC segment overhead) + +.. _job003509: https://www.ravenbrook.com/project/mps/issue/job003509/ +.. _job003554: https://www.ravenbrook.com/project/mps/issue/job003554/ +.. _job003701: https://www.ravenbrook.com/project/mps/issue/job003701/ +.. _job003812: https://www.ravenbrook.com/project/mps/issue/job003812/ +.. _job003823: https://www.ravenbrook.com/project/mps/issue/job003823/ +.. _job003824: https://www.ravenbrook.com/project/mps/issue/job003824/ + +Improvements to flexibility by removing special cases and +introducing abstractions: + +* job003684_ (Too hard to swap out address range managers) +* job003685_ (No encapsulation of CBS-failing-over-to-Freelist pattern) +* job003745_ (AWL alignment is not configurable) +* job003748_ (Alignment requirements for manual classes are needlessly strict) +* job003787_ (No systematic interface to size of pools) + +.. _job003684: https://www.ravenbrook.com/project/mps/issue/job003684/ +.. _job003685: https://www.ravenbrook.com/project/mps/issue/job003685/ +.. _job003745: https://www.ravenbrook.com/project/mps/issue/job003745/ +.. _job003748: https://www.ravenbrook.com/project/mps/issue/job003748/ +.. _job003787: https://www.ravenbrook.com/project/mps/issue/job003787/ + +Improvements to robustness: + +* job001549_ (Assertion failure ``!AMS_IS_INVALID_COLOUR``) +* job003359_ (Ambiguous interior pointers do not keep objects alive) +* job003496_ (Assertion failure in ``mps_arena_roots_walk``) +* job003751_ (MVFF debug does not work with large objects) +* job003771_ (AMS with default args never gets collected) +* job003772_ (AWL doesn't provoke collections) +* job003773_ (Objects in LO pools are not all finalized) + +.. _job001549: https://www.ravenbrook.com/project/mps/issue/job001549/ +.. _job003359: https://www.ravenbrook.com/project/mps/issue/job003359/ +.. _job003496: https://www.ravenbrook.com/project/mps/issue/job003496/ +.. _job003751: https://www.ravenbrook.com/project/mps/issue/job003751/ +.. _job003771: https://www.ravenbrook.com/project/mps/issue/job003771/ +.. _job003772: https://www.ravenbrook.com/project/mps/issue/job003772/ +.. _job003773: https://www.ravenbrook.com/project/mps/issue/job003773/ + +Improvements to testing: + +* job003659_ (Too hard to maintain the test suite) +* job003716_ ("ANSI" platform is not regularly tested) +* Static analysis using Coverity_. +* Test coverage up to 84%. + +.. _job003659: https://www.ravenbrook.com/project/mps/issue/job003659/ +.. _job003716: https://www.ravenbrook.com/project/mps/issue/job003716/ +.. _Coverity: http://www.coverity.com/ + + +References +---------- + +.. [GDR_2014-05-14] "MPS strategic direction proposals"; Gareth Rees; + Ravenbrook Limited; 2014-05-14; + . + +.. [GDR_2014-05-15] "More MPS strategy"; Gareth Rees; + Ravenbrook Limited; 2014-05-15; + . + + + +Copyright and License +--------------------- + +Copyright © 2013-2014 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: + +#. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +#. 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. + +#. 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.** From dae5eda934e180043e37734cc8df4839fba9065c Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Wed, 22 Feb 2023 18:25:53 +0000 Subject: [PATCH 3/8] Fixing markup, headers, and licence. --- plan.rst | 83 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 43 insertions(+), 40 deletions(-) diff --git a/plan.rst b/plan.rst index 0635b80e6a..19d4be916a 100644 --- a/plan.rst +++ b/plan.rst @@ -1,17 +1,20 @@ .. mode: -*- rst -*- +=============================== Memory Pool System Project Plan =============================== +:tag: plan.mps :Author: Gareth Rees :Date: 2014-05-16 :Status: live -:Revision: $Id$ -:Copyright: See `Copyright and License`_. +:confidentiality: public +:copyright: See `C. Copyright and License`_ +:readership: MPS project managers, MPS developers -Introduction ------------- +1. Introduction +--------------- This is the plan for development of the Memory Pool System. @@ -22,8 +25,8 @@ The readership of this document is anyone interested in the project. This document is not confidential. -Future versions ---------------- +2. Future versions +------------------ Version 1.116 ............. @@ -65,8 +68,8 @@ Improvements to testing: .. _job003839: https://www.ravenbrook.com/project/mps/issue/job003839/ -Past versions -------------- +3. Past versions +---------------- Version 1.115 ............. @@ -143,8 +146,8 @@ Improvements to testing: .. _Coverity: http://www.coverity.com/ -References ----------- +A. References +------------- .. [GDR_2014-05-14] "MPS strategic direction proposals"; Gareth Rees; Ravenbrook Limited; 2014-05-14; @@ -155,45 +158,45 @@ References . +B. Document History +------------------- + +========== ===== ================================================== +2023-02-22 RB_ Migrated from Perforce to `MPS public Git repo`_ +========== ===== ================================================== -Copyright and License ---------------------- +.. _RB: mailto:rb@ravenbrook.com -Copyright © 2013-2014 Ravenbrook Limited. All rights reserved. -. This is an open source license. Contact -Ravenbrook for commercial licensing options. +.. _MPS public Git repo: https://github.com/Ravenbrook/mps + + +C. Copyright and License +------------------------ + +Copyright © 2013–2023 `Ravenbrook Limited `_. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: -#. Redistributions of source code must retain the above copyright +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -#. Redistributions in binary form must reproduce the above copyright +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. -#. 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.** +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 AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR 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. + + +.. end From ac6b5369253dfb089cb14aadd6ce463e6cd951d2 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Wed, 22 Feb 2023 18:37:15 +0000 Subject: [PATCH 4/8] Drafting plan for version 1.118. --- plan.rst | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/plan.rst b/plan.rst index 19d4be916a..9dc8b651d6 100644 --- a/plan.rst +++ b/plan.rst @@ -28,6 +28,43 @@ This document is not confidential. 2. Future versions ------------------ +Version 1.118 +............. + +Migration from Perforce to Git. + +Bring Configura forward from version 1.115. + +* Assessment of risk to Configura of all changes since 1.115. + +* `GitHub issue #110 `_ + (Ravenbrook MPS sources are out of sync with Configura's sources) + +* `GitHub issue #125 `_ + (Version and release procedures use Perforce) + +* `GitHub pull request #76 `_ + (Apply all changes from Configura to the public MPS) + +* Inspection of `GitHub pull request #34 + `_ (New API function + mps_pool_walk) with particular attention to Configura requirements + +[FIXME: These are the outstanding items as of 2023-02-22. The plan +should be updated with items closed and included since 1.117. RB +2023-02-22] + + +3. Past versions +---------------- + +Version 1.117 +............. + +[The plan for version 1.117 was not recorded in +//info.ravenbrook.com/project/mps/plan/index.rst#14. RB 2023-02-22] + + Version 1.116 ............. @@ -68,9 +105,6 @@ Improvements to testing: .. _job003839: https://www.ravenbrook.com/project/mps/issue/job003839/ -3. Past versions ----------------- - Version 1.115 ............. From dbcb9ac76cadbec8beef5037c4383c127909dfbb Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Wed, 22 Feb 2023 18:47:16 +0000 Subject: [PATCH 5/8] Listing items under categories, in the manner of previous version plans. --- plan.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/plan.rst b/plan.rst index 9dc8b651d6..befc30e352 100644 --- a/plan.rst +++ b/plan.rst @@ -31,18 +31,18 @@ This document is not confidential. Version 1.118 ............. -Migration from Perforce to Git. +Migration from Perforce to Git: -Bring Configura forward from version 1.115. +* `GitHub issue #125 `_ + (Version and release procedures use Perforce) + +Bring Configura forward from version 1.115: * Assessment of risk to Configura of all changes since 1.115. * `GitHub issue #110 `_ (Ravenbrook MPS sources are out of sync with Configura's sources) -* `GitHub issue #125 `_ - (Version and release procedures use Perforce) - * `GitHub pull request #76 `_ (Apply all changes from Configura to the public MPS) From cfe12f68a39edc8dd680b6b8fbc19e67064123df Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Wed, 22 Feb 2023 18:55:09 +0000 Subject: [PATCH 6/8] Removing duplicate info in introduction and clarifying what sort of plan this is. --- plan.rst | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/plan.rst b/plan.rst index befc30e352..81e795cd9f 100644 --- a/plan.rst +++ b/plan.rst @@ -10,20 +10,17 @@ Memory Pool System Project Plan :Status: live :confidentiality: public :copyright: See `C. Copyright and License`_ -:readership: MPS project managers, MPS developers +:readership: MPS users, MPS project managers, MPS developers 1. Introduction --------------- -This is the plan for development of the Memory Pool System. +This is the version plan [RB-1999-05-20]_ for development of the +Memory Pool System. This document will be modified as the project progresses. -The readership of this document is anyone interested in the project. - -This document is not confidential. - 2. Future versions ------------------ @@ -191,6 +188,10 @@ A. References Ravenbrook Limited; 2014-05-15; . +.. [RB-1999-05-20] "Product Quality through Change Management"; + Richard Brooksby; Ravenbrook Limited; 1999-05-20; + . + B. Document History ------------------- From 120d4bc7b01f5caf8a6c861ef9f186586f1fc2eb Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Tue, 14 Mar 2023 09:29:28 +0000 Subject: [PATCH 7/8] Bringing version plan up to date with current planning. --- plan.rst | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/plan.rst b/plan.rst index 81e795cd9f..b524ebbad4 100644 --- a/plan.rst +++ b/plan.rst @@ -1,7 +1,7 @@ .. mode: -*- rst -*- =============================== -Memory Pool System Project Plan +Memory Pool System Version Plan =============================== :tag: plan.mps @@ -31,21 +31,19 @@ Version 1.118 Migration from Perforce to Git: * `GitHub issue #125 `_ - (Version and release procedures use Perforce) + (Version and release procedures use Perforce). This will be the + first version created and managed in Git, and the first release from + a Git version. Bring Configura forward from version 1.115: -* Assessment of risk to Configura of all changes since 1.115. - * `GitHub issue #110 `_ - (Ravenbrook MPS sources are out of sync with Configura's sources) - -* `GitHub pull request #76 `_ - (Apply all changes from Configura to the public MPS) + (Ravenbrook MPS sources are out of sync with Configura's sources). + This includes a complete assessment of risk to Configura of all + changes since 1.115. -* Inspection of `GitHub pull request #34 - `_ (New API function - mps_pool_walk) with particular attention to Configura requirements +* `GitHub issue #111 `_ + (Public MPS source code does not include transforms). [FIXME: These are the outstanding items as of 2023-02-22. The plan should be updated with items closed and included since 1.117. RB From 5a520e67a877ff661c2d3711678c173c4a7ca162 Mon Sep 17 00:00:00 2001 From: Richard Brooksby Date: Tue, 14 Mar 2023 09:58:22 +0000 Subject: [PATCH 8/8] Linking version plan headings to GitHub projects. --- plan.rst | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/plan.rst b/plan.rst index b524ebbad4..0a535e893e 100644 --- a/plan.rst +++ b/plan.rst @@ -28,14 +28,14 @@ This document will be modified as the project progresses. Version 1.118 ............. -Migration from Perforce to Git: +`Migrate the MPS from Perforce to Git `_: * `GitHub issue #125 `_ (Version and release procedures use Perforce). This will be the first version created and managed in Git, and the first release from a Git version. -Bring Configura forward from version 1.115: +`Bring Configura forward from version 1.115 `_: * `GitHub issue #110 `_ (Ravenbrook MPS sources are out of sync with Configura's sources). @@ -45,10 +45,6 @@ Bring Configura forward from version 1.115: * `GitHub issue #111 `_ (Public MPS source code does not include transforms). -[FIXME: These are the outstanding items as of 2023-02-22. The plan -should be updated with items closed and included since 1.117. RB -2023-02-22] - 3. Past versions ----------------