mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-03-23 07:12:12 -07:00
Mainline changes to make a standard nt build environment based on nt6.1
(Windows7) and its SDK. The w3i3m9 pseudo platform has been removed and w3i3mv adjusted for this framework. Copied from Perforce Change: 175966 ServerID: perforce.ravenbrook.com
This commit is contained in:
parent
b153ddbb83
commit
36dd1ada0f
5 changed files with 188 additions and 153 deletions
|
|
@ -128,7 +128,9 @@ CFLAGSCOMMONPRE = /nologo /W4 /WX $(PFMDEFS) $(CFLAGSTARGETPRE)
|
|||
CFLAGSCOMMONPOST = $(CFLAGSTARGETPOST)
|
||||
|
||||
# Flags for use in the variety combinations
|
||||
CFLAGSHOT = /Ox /DNDEBUG
|
||||
CFLAGSHOT = /O2 /DNDEBUG
|
||||
# (above /O2 (maximise speed) used to be set to /Ox
|
||||
# (maximise optimisations) in for tool versions before VS 9)
|
||||
# We used to have /GZ here (stack probe).
|
||||
# Note that GZ is specific to version 12 of the cl tool. drj 2003-11-04
|
||||
# It is ignored on earlier versions of the cl tool.
|
||||
|
|
@ -158,7 +160,8 @@ CFTI = /DCONFIG_VAR_TI $(CRTFLAGSC) $(CFLAGSCOOL) $(CFLAGSINTERNAL)
|
|||
# %%VARIETY: define a macro containing the flags for the new variety
|
||||
LINKER = link
|
||||
LINKFLAGSCOMMON = /nologo
|
||||
LINKFLAGSINTERNAL = /DEBUG:full
|
||||
LINKFLAGSINTERNAL =
|
||||
# ( Internal flags used to be set to /DEBUG:full )
|
||||
LINKFLAGSEXTERNAL = /RELEASE
|
||||
|
||||
LFWE = $(LINKFLAGSWHITE) $(LINKFLAGSEXTERNAL)
|
||||
|
|
@ -202,18 +205,18 @@ LIBFLAGSTI =
|
|||
# Copyright (C) 2001-2002 Ravenbrook Limited <http://www.ravenbrook.com/>.
|
||||
# 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
|
||||
|
|
@ -224,7 +227,7 @@ LIBFLAGSTI =
|
|||
# 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
|
||||
|
|
|
|||
|
|
@ -26,27 +26,27 @@
|
|||
*
|
||||
* Sometimes the platform is *already* known by the buildsystem:
|
||||
* - the Global Graphics buildsystem always sets CONFIG_PF_*.
|
||||
* - the Ravenbrook buildsystem knows the platform and may (but
|
||||
* - the Ravenbrook buildsystem knows the platform and may (but
|
||||
* typically does not) set CONFIG_PF_*.
|
||||
*
|
||||
* Regardless of this, mpstd.h still attempts to detect the platform.
|
||||
* (This is intentional). However if both CONFIG_PF_* and
|
||||
* (This is intentional). However if both CONFIG_PF_* and
|
||||
* CONFIG_PF_STRING are set, then mpstd.h performs a third function:
|
||||
* 3. checking that the detected platform corresponds to that
|
||||
* 3. checking that the detected platform corresponds to that
|
||||
* specified by CONFIG_PF_*.
|
||||
*
|
||||
* Sometimes no MPS buildsystem is in use, so the platform *must*
|
||||
* be detected. For example, when client software #includes mps.h,
|
||||
* we want it to just work out of the box with whatever compiler is
|
||||
* being used. In other words we do not require the client to define
|
||||
* Sometimes no MPS buildsystem is in use, so the platform *must*
|
||||
* be detected. For example, when client software #includes mps.h,
|
||||
* we want it to just work out of the box with whatever compiler is
|
||||
* being used. In other words we do not require the client to define
|
||||
* CONFIG_PF_*.
|
||||
* (This is the case that justifes mpstd.h doing platform detection
|
||||
* by looking at preprocessor symbols; otherwise we'd simply use
|
||||
* (This is the case that justifes mpstd.h doing platform detection
|
||||
* by looking at preprocessor symbols; otherwise we'd simply use
|
||||
* CONFIG_PF_*).
|
||||
*
|
||||
* mpstd.h fails if it cannot detect the platform (even if CONFIG_PF_*
|
||||
* is specified). This is intentional. mpstd.h does *not* allow
|
||||
* CONFIG_PF_* to override the platform as detected from preprocessor
|
||||
* is specified). This is intentional. mpstd.h does *not* allow
|
||||
* CONFIG_PF_* to override the platform as detected from preprocessor
|
||||
* symbols. This is intentional.
|
||||
*
|
||||
* References:
|
||||
|
|
@ -127,23 +127,6 @@
|
|||
#define MPS_WORD_SHIFT 5
|
||||
#define MPS_PF_ALIGN 4
|
||||
|
||||
/* w3i3m9 clone-platform, differs from w3i3mv only in MPS_PF_STRING
|
||||
* and compiler options.
|
||||
*/
|
||||
|
||||
#elif defined(_MSC_VER) && (_MSC_VER >= 1500) && defined(_WIN32) && defined(_M_IX86)
|
||||
#if defined(CONFIG_PF_STRING) && ! defined(CONFIG_PF_W3I3M9)
|
||||
#error "specified CONFIG_PF_... inconsistent with detected w3i3m9"
|
||||
#endif
|
||||
#define MPS_PF_W3I3MV
|
||||
#define MPS_PF_STRING "w3i3m9"
|
||||
#define MPS_OS_W3
|
||||
#define MPS_ARCH_I3
|
||||
#define MPS_BUILD_MV
|
||||
#define MPS_T_WORD unsigned long
|
||||
#define MPS_WORD_WIDTH 32
|
||||
#define MPS_WORD_SHIFT 5
|
||||
#define MPS_PF_ALIGN 8
|
||||
|
||||
/* Visual C++ 2.0, Books Online, C/C++ Book, Preprocessor Reference,
|
||||
* Chapter 1: The Preprocessor, Macros, Predefined Macros.
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@
|
|||
<ul>
|
||||
|
||||
<li> <a href= "#int">Introduction</a> </li>
|
||||
|
||||
<li> <a href= "#reldoc">Related documents</a> </li>
|
||||
<li> <a href="#plasup">Platform support</a> </li>
|
||||
|
||||
<li> <a href="#uni">Unix</a> </li>
|
||||
|
|
@ -81,7 +81,35 @@ easy to modify such that it builds on many more.
|
|||
</p>
|
||||
<p>
|
||||
This document is not confidential.
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<h2 id = "reldoc">Related documents</h2>
|
||||
|
||||
<dl>
|
||||
<dt><a href = ../../readme.txt>readme.txt</a></dt>
|
||||
<dd>
|
||||
This contains notes on building the MPS from a "kit".
|
||||
</dd>
|
||||
|
||||
<dt>
|
||||
<a HREF = ../wiki/buildsystem.html>MPS build system</a>
|
||||
</dt>
|
||||
<dd>
|
||||
Brief notes on the keywords used in the build system commands.
|
||||
</dd>
|
||||
|
||||
<dt>
|
||||
<a href = ../../procedure/index.html>MPS product procedures</a>
|
||||
</dt>
|
||||
<dd>
|
||||
Links to separate procedures for making builds for a release.
|
||||
</dd>
|
||||
|
||||
|
||||
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
<h2 id = "plasup">Platform support</h2>
|
||||
|
||||
|
|
@ -256,16 +284,20 @@ This platform is a clone of w3i3mv; the only differences are:
|
|||
<li>use w3i3m9.nmk (not w3i3mv.nmk) to build it;</li>
|
||||
<li>the MPS_PF_STRING in version.c is "w3i3m9" (not "w3i3mv").</li>
|
||||
</ul>
|
||||
The only reason for this to be separate from the w3i3mv platform is
|
||||
The only reason for this to be separate from the w3i3mv platform was
|
||||
to enable builds with version 6.0 and version 9.0 compilers to be
|
||||
kept separate, to enable performance comparisons. The w3i3m9
|
||||
clone may merge back into w3i3mv in the future.<br />
|
||||
kept separate, to enable performance comparisons.
|
||||
<br />
|
||||
See
|
||||
<<a href = http://ravenbrook.com/project/mps/issue/job001944/
|
||||
title = "Link to ravenbrook.com/project/mps/issue/job001944/"
|
||||
>ravenbrook.com/project/mps/issue/job001944/</A>>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
2011-08<br />
|
||||
The w3i3m9 platform has been withdrawn from the mainline and w3i3mv
|
||||
is once again the master NT platform.
|
||||
</p>
|
||||
<p>
|
||||
The Windows linker can accept a .def file to allow re-export of MPS
|
||||
functions from a client executable that includes the MPS, such that
|
||||
|
|
@ -302,6 +334,9 @@ See
|
|||
<dt>2011-08-18 PNJ</dt>
|
||||
<dd>Converted to HTML so the hyperlinks work, ready for further
|
||||
enhancements.</dd>
|
||||
<dt>2011-08-28 PNJ</dt>
|
||||
<dd>w3i3m9 platform withdrawn. Mainline now focussed on NT6.1 and its
|
||||
SDK as its Windows build platform.</dd>
|
||||
|
||||
<h2><a id="section-C" name="section-C">C. Copyright and License</a></h2>
|
||||
|
||||
|
|
|
|||
192
mps/readme.txt
192
mps/readme.txt
|
|
@ -52,6 +52,12 @@ This document is not confidential.
|
|||
record of changes. In a release of the MPS-Kit, this section becomes
|
||||
the summary of what is new for that release.)
|
||||
|
||||
2011-08
|
||||
Master change to standardise on an NT build environment of
|
||||
NT6.1 (Windows 7) and it its SDK version 7.1. Previous versions
|
||||
of Windows that are still supported by Microsoft can be accomodated
|
||||
through this framework if required.
|
||||
|
||||
[
|
||||
After a release, bracket the previous section, and start a new section like this:
|
||||
|
||||
|
|
@ -70,14 +76,14 @@ Changes from release 1.109.0:
|
|||
Functional changes to MPS code:
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job002248/>
|
||||
Improvement: return virtual memory (address space) from
|
||||
mps_arena_class_vm to the operating system, when complete chunks are
|
||||
unused after a garbage collection. Whether, and how much, virtual
|
||||
memory is returned depends on many factors. Small chunks may be more
|
||||
likely to be returnable than big chunks. The mps_arena_vm_growth()
|
||||
function controls the size of chunks by which VM arena may grow. The
|
||||
default, if this function is never called, is for new chunks to be the
|
||||
same size as the original arena created by mps_arena_create(), if
|
||||
Improvement: return virtual memory (address space) from
|
||||
mps_arena_class_vm to the operating system, when complete chunks are
|
||||
unused after a garbage collection. Whether, and how much, virtual
|
||||
memory is returned depends on many factors. Small chunks may be more
|
||||
likely to be returnable than big chunks. The mps_arena_vm_growth()
|
||||
function controls the size of chunks by which VM arena may grow. The
|
||||
default, if this function is never called, is for new chunks to be the
|
||||
same size as the original arena created by mps_arena_create(), if
|
||||
possible.
|
||||
|
||||
|
||||
|
|
@ -89,22 +95,22 @@ Functional changes to MPS code:
|
|||
<http://www.ravenbrook.com/project/mps/issue/job001570/>
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001989/>
|
||||
Defects discovered in mps_message_type_gc_start lifecycle:
|
||||
- enabling mps_message_type_gc_start and then failing to promptly
|
||||
mps_message_get the resulting messages could corrupt the MPS
|
||||
- enabling mps_message_type_gc_start and then failing to promptly
|
||||
mps_message_get the resulting messages could corrupt the MPS
|
||||
message queue;
|
||||
- a corrupted message queue could cause an assert, incorrect
|
||||
behaviour, or an infinite loop, when getting or discarding
|
||||
- a corrupted message queue could cause an assert, incorrect
|
||||
behaviour, or an infinite loop, when getting or discarding
|
||||
messages, or when calling mps_arena_destroy;
|
||||
- also, the _gc_start message could change while the client read it,
|
||||
- also, the _gc_start message could change while the client read it,
|
||||
and the message for a new GC start could be silently skipped.
|
||||
Fixed: redesign _gc_start message lifecycle:
|
||||
- if mps_message_type_gc_start is enabled, a separate GC start
|
||||
message is issued for each collection, as long as there is
|
||||
- if mps_message_type_gc_start is enabled, a separate GC start
|
||||
message is issued for each collection, as long as there is
|
||||
sufficient memory to create the message;
|
||||
- these messages will be queued indefinitely until the client gets
|
||||
- these messages will be queued indefinitely until the client gets
|
||||
and discards them;
|
||||
- therefore: a client that enables mps_message_type_gc_start must
|
||||
call mps_message_get() and mps_message_discard() to get and
|
||||
- therefore: a client that enables mps_message_type_gc_start must
|
||||
call mps_message_get() and mps_message_discard() to get and
|
||||
discard these messages;
|
||||
- warning: failure to do so will eventually exhaust memory.
|
||||
|
||||
|
|
@ -112,28 +118,28 @@ Fixed: redesign _gc_start message lifecycle:
|
|||
<http://www.ravenbrook.com/project/mps/issue/job001969/>
|
||||
New features to inform client of activity and timing of collections:
|
||||
mps_message_clock():
|
||||
- for a _gc_start or _gc message, returns the time at which the
|
||||
- for a _gc_start or _gc message, returns the time at which the
|
||||
MPS posted it; see Reference Manual for documentation;
|
||||
mps_alert_collection_set():
|
||||
- set a client-supplied function which the MPS will synchronously
|
||||
- set a client-supplied function which the MPS will synchronously
|
||||
call when a collection begins or ends;
|
||||
- there are restrictions on what the client-supplied function is
|
||||
permitted to do; please ask Ravenbrook if you require further
|
||||
- there are restrictions on what the client-supplied function is
|
||||
permitted to do; please ask Ravenbrook if you require further
|
||||
details.
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001811/>
|
||||
Improvement: reduce the risk of ambiguous retention, when the client
|
||||
Improvement: reduce the risk of ambiguous retention, when the client
|
||||
allocates large objects in mps_class_amc and mps_class_amcz.
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job002205/>
|
||||
Defect discovered:
|
||||
- collections run too slow if client allocates big objects.
|
||||
Fix:
|
||||
- improved collection scheduling, when client allocates large
|
||||
- improved collection scheduling, when client allocates large
|
||||
objects.
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job002209/>
|
||||
New features for client to determine pool or format, given object
|
||||
New features for client to determine pool or format, given object
|
||||
address:
|
||||
mps_addr_pool()
|
||||
mps_addr_fmt()
|
||||
|
|
@ -143,14 +149,14 @@ Other changes:
|
|||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001934/>
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001944/>
|
||||
MPS may now be built with Microsoft's Visual C++ 9.0 compiler.
|
||||
MPS may now be built with Microsoft's Visual C++ 9.0 compiler.
|
||||
See manual/build-notes.
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001936/>
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001935/>
|
||||
<http://www.ravenbrook.com/project/mps/issue/job002148/>
|
||||
Configura releases include a .def file to allow re-export of MPS
|
||||
functions from a client executable that includes the MPS, such that
|
||||
Configura releases include a .def file to allow re-export of MPS
|
||||
functions from a client executable that includes the MPS, such that
|
||||
other client DLLs can link to and call those MPS functions.
|
||||
See also manual/build-notes.
|
||||
]
|
||||
|
|
@ -162,60 +168,60 @@ Functional changes to MPS code:
|
|||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001784/>
|
||||
Defect discovered:
|
||||
- when using an auto_header format (mps_fmt_create_auto_header)
|
||||
with AMC pools (mps_class_amc), the MPS leaks a small amount of
|
||||
- when using an auto_header format (mps_fmt_create_auto_header)
|
||||
with AMC pools (mps_class_amc), the MPS leaks a small amount of
|
||||
memory on each collection.
|
||||
Impact:
|
||||
- the leak is likely to be a few bytes per collection, and at most
|
||||
one byte per page (typically 2^12 bytes) of the address-space
|
||||
- the leak is likely to be a few bytes per collection, and at most
|
||||
one byte per page (typically 2^12 bytes) of the address-space
|
||||
currently in use for objects in AMC pools;
|
||||
- the leak is of temporary memory that the MPS uses to process
|
||||
ambiguous references (typically references on the stack and in
|
||||
registers), so a larger stack when a collection starts will
|
||||
- the leak is of temporary memory that the MPS uses to process
|
||||
ambiguous references (typically references on the stack and in
|
||||
registers), so a larger stack when a collection starts will
|
||||
tend to cause a larger leak;
|
||||
- the leaked bytes are widely-spaced single bytes which therefore
|
||||
- the leaked bytes are widely-spaced single bytes which therefore
|
||||
also cause fragmentation;
|
||||
- the leaked bytes are not reclaimed until the client calls
|
||||
- the leaked bytes are not reclaimed until the client calls
|
||||
mps_arena_destroy().
|
||||
Fixed: correctly release all of this temporary memory.
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001809/>
|
||||
Defect discovered:
|
||||
- AMC pools (mps_class_amc) temporarily retain the memory that was
|
||||
used for a dead object, if there is an ambiguous reference (such
|
||||
as a value on the stack) that happens to point at the interior of
|
||||
used for a dead object, if there is an ambiguous reference (such
|
||||
as a value on the stack) that happens to point at the interior of
|
||||
the (dead) object.
|
||||
Impact:
|
||||
- if the (dead) object was small- or medium-sized, this temporary
|
||||
- if the (dead) object was small- or medium-sized, this temporary
|
||||
retention is unlikely to cause a problem;
|
||||
- if the (dead) object was very large, then this retention is more
|
||||
likely, and will retain a large amount of memory;
|
||||
- if many large objects are allocated, this retention can cause
|
||||
- if many large objects are allocated, this retention can cause
|
||||
memory to be exhausted when it should not be.
|
||||
Fix:
|
||||
- it is usually possible for AMC pools to free the memory
|
||||
immediately (that is, during the collection that identifies the
|
||||
- it is usually possible for AMC pools to free the memory
|
||||
immediately (that is, during the collection that identifies the
|
||||
object as being dead), and AMC pools now do so;
|
||||
Future work:
|
||||
- occasionally, there are adjacently located objects that are
|
||||
- occasionally, there are adjacently located objects that are
|
||||
ambiguously referenced and are not dead;
|
||||
- in this case it is not possible to free the memory immediately,
|
||||
and so temporary retention still occurs (this is not expected to
|
||||
- in this case it is not possible to free the memory immediately,
|
||||
and so temporary retention still occurs (this is not expected to
|
||||
be very common).
|
||||
- however, the MPS could prevent this by avoiding locating small
|
||||
- however, the MPS could prevent this by avoiding locating small
|
||||
objects adjacent to very large objects, see:
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001811/>
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001737/>
|
||||
Further changes to arena growth (see notes below for version 1.108.1).
|
||||
When the arena cannot grow by the desired increment, the MPS
|
||||
attempts successively smaller increments, but with a more fine-grained
|
||||
search than in version 1.108.1, thereby achieveing an increment that
|
||||
more closely matches the largest available chunk of remaining
|
||||
When the arena cannot grow by the desired increment, the MPS
|
||||
attempts successively smaller increments, but with a more fine-grained
|
||||
search than in version 1.108.1, thereby achieveing an increment that
|
||||
more closely matches the largest available chunk of remaining
|
||||
address-space.
|
||||
New interface function mps_arena_vm_growth(). This function allows
|
||||
the client more control over how a VM arena (mps_arena_class_vm)
|
||||
grows. The interface is under development and is likely to change;
|
||||
the client more control over how a VM arena (mps_arena_class_vm)
|
||||
grows. The interface is under development and is likely to change;
|
||||
please contact us if you would like further details.
|
||||
]
|
||||
|
||||
|
|
@ -226,22 +232,22 @@ Functional changes to MPS code:
|
|||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001737/>
|
||||
Limitation:
|
||||
- if a VM arena (of mps_arena_class_vm) needed to be extended,
|
||||
and the attempt to extend it was refused by the OS (usually
|
||||
because the requested address-space was not available), MPS
|
||||
- if a VM arena (of mps_arena_class_vm) needed to be extended,
|
||||
and the attempt to extend it was refused by the OS (usually
|
||||
because the requested address-space was not available), MPS
|
||||
would not try a smaller extension.
|
||||
Fixed: MPS now tries to extend the arena by successively smaller
|
||||
Fixed: MPS now tries to extend the arena by successively smaller
|
||||
amounts, until the extension succeeds.
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001706/>
|
||||
Defect discovered:
|
||||
- internal memory-protection state in AMC pools (mps_class_amc)
|
||||
was incorrect for a brief period of time during a collection,
|
||||
- internal memory-protection state in AMC pools (mps_class_amc)
|
||||
was incorrect for a brief period of time during a collection,
|
||||
which could (theoretically) have caused an assert and failure.
|
||||
However:
|
||||
- during this brief period, the MPS protection cache masks the
|
||||
defect. As a result, we believe this defect is unlikely to be
|
||||
observed in practice (and we have no evidence that it has
|
||||
- during this brief period, the MPS protection cache masks the
|
||||
defect. As a result, we believe this defect is unlikely to be
|
||||
observed in practice (and we have no evidence that it has
|
||||
ever occurred in practice).
|
||||
Fixed: maintain memory-protection state correctly in AMC pools.
|
||||
|
||||
|
|
@ -250,14 +256,14 @@ Other changes:
|
|||
<http://www.ravenbrook.com/project/mps/issue/job001714/>
|
||||
- in the Mac OS X (PowerPC) build, remove outdated compiler flags.
|
||||
|
||||
The MPS diagnostic system -- which produces diagnostic output for the
|
||||
purpose of helping MPS programmers and client-code programmers -- is
|
||||
The MPS diagnostic system -- which produces diagnostic output for the
|
||||
purpose of helping MPS programmers and client-code programmers -- is
|
||||
undergoing improvement. Some early documentation is at
|
||||
<http://www.ravenbrook.com/project/mps/master/design/diag>
|
||||
There is a new build variety "di" that emits diagnostics.
|
||||
|
||||
Note: for further details of this release (including a 'live' report
|
||||
of defects found after these release-notes were written), and details
|
||||
Note: for further details of this release (including a 'live' report
|
||||
of defects found after these release-notes were written), and details
|
||||
of earlier and later releases, please see:
|
||||
<http://www.ravenbrook.com/project/mps/release/>
|
||||
]
|
||||
|
|
@ -269,40 +275,40 @@ Functional changes to MPS code:
|
|||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001548/>
|
||||
Defect discovered:
|
||||
- an assert could, rarely, be incorrectly triggered when a pool
|
||||
- an assert could, rarely, be incorrectly triggered when a pool
|
||||
of mps_class_amc is in a constrained memory condition.
|
||||
Fixed: in this rare case, calculate a certain value correctly,
|
||||
such that the assert which checks it is not incorrectly
|
||||
Fixed: in this rare case, calculate a certain value correctly,
|
||||
such that the assert which checks it is not incorrectly
|
||||
triggered.
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001658/>
|
||||
Defect discovered:
|
||||
- finalization messages could suffer an unnecessary delay, of
|
||||
several full collections (in the worst case), if there were
|
||||
- finalization messages could suffer an unnecessary delay, of
|
||||
several full collections (in the worst case), if there were
|
||||
more than 1024 finalization-registered objects;
|
||||
Fixed: the number of finalization-registered objects should
|
||||
no longer cause such a delay, so more finalization messages
|
||||
Fixed: the number of finalization-registered objects should
|
||||
no longer cause such a delay, so more finalization messages
|
||||
are likely to be produced by a single collection.
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001147/>
|
||||
- on Mac OS X (PowerPC and Intel), MPS now has memory-protection
|
||||
- on Mac OS X (PowerPC and Intel), MPS now has memory-protection
|
||||
code, so collections are much faster.
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001619/>
|
||||
- on Mac OS X (Intel), MPS now has stack-scanner code, so the
|
||||
stack may be declared an ambiguous root. (Note: there was
|
||||
- on Mac OS X (Intel), MPS now has stack-scanner code, so the
|
||||
stack may be declared an ambiguous root. (Note: there was
|
||||
already a stack-scanner for Mac OS X PowerPC).
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001622/>
|
||||
- on Mac OS X (PowerPC and Intel), MPS now has locking code, so
|
||||
multiple client threads may use the MPS. (But note: the thread
|
||||
module has not been implemented for Mac OS X, so threads may
|
||||
- on Mac OS X (PowerPC and Intel), MPS now has locking code, so
|
||||
multiple client threads may use the MPS. (But note: the thread
|
||||
module has not been implemented for Mac OS X, so threads may
|
||||
not yet have their stacks as roots, I think. See:
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001621/>).
|
||||
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001556/>
|
||||
Defect discovered:
|
||||
- a macro used only in asserts was incorrect; this could have made
|
||||
- a macro used only in asserts was incorrect; this could have made
|
||||
some checks ineffective.
|
||||
Fixed: corrected the macro.
|
||||
|
||||
|
|
@ -315,7 +321,7 @@ Other changes:
|
|||
- now builds on Linux.
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001617/>
|
||||
- on Mac OS X (Intel) default "all" build works (fix broken
|
||||
- on Mac OS X (Intel) default "all" build works (fix broken
|
||||
compile of amsss stress test).
|
||||
]
|
||||
|
||||
|
|
@ -327,15 +333,15 @@ Functional changes to MPS code:
|
|||
<http://www.ravenbrook.com/project/mps/issue/job001455/>
|
||||
Defect discovered:
|
||||
- if there was a pool of pool-class LO (leaf-only objects,
|
||||
see mps_class_lo), the mps_arena_formatted_objects_walk()
|
||||
see mps_class_lo), the mps_arena_formatted_objects_walk()
|
||||
call would fail.
|
||||
Fixed: mps_arena_formatted_objects_walk() will now work.
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job000666/>
|
||||
- when MPS starts a garbage collection, it now tells
|
||||
- when MPS starts a garbage collection, it now tells
|
||||
the client by posting a message of the new type
|
||||
mps_message_type_gc_start(). The message includes
|
||||
a textual explanation (for the client programmer)
|
||||
mps_message_type_gc_start(). The message includes
|
||||
a textual explanation (for the client programmer)
|
||||
of why this collection was triggered.
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001545/>
|
||||
|
|
@ -346,7 +352,7 @@ Fixed: mps_arena_formatted_objects_walk() will now work.
|
|||
Other changes:
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001421/>
|
||||
- the default "all" build now builds mps library and plinth, on
|
||||
- the default "all" build now builds mps library and plinth, on
|
||||
all platforms.
|
||||
|
||||
<http://www.ravenbrook.com/project/mps/issue/job001530/>
|
||||
|
|
@ -364,7 +370,7 @@ No functional changes to MPS implementation code.
|
|||
Fixed <http://www.ravenbrook.com/project/mps/issue/job001352/>
|
||||
- the "mps.a" library does not (now) contain plinth files;
|
||||
- therefore, if your MPS client code needs the example plinth
|
||||
("mpsplan.a"), you must link with it explicitly to obtain
|
||||
("mpsplan.a"), you must link with it explicitly to obtain
|
||||
_mps_lib_assert_fail, _mps_clock, etc;
|
||||
- the default "all" build now succeeds on Unix-like platforms
|
||||
(in 1.106.1 the "all" build only worked on Mac OS X).
|
||||
|
|
@ -381,7 +387,7 @@ Fixed <http://www.ravenbrook.com/project/mps/issue/job001367/>
|
|||
example/hello-world/index.txt
|
||||
]
|
||||
|
||||
For more information about the status and progress of the MPS project,
|
||||
For more information about the status and progress of the MPS project,
|
||||
consult the project home-page: <http://www.ravenbrook.com/project/mps/>.
|
||||
|
||||
|
||||
|
|
@ -403,7 +409,7 @@ The top-level file "index.html" in the sources indexes many other files,
|
|||
and is a good place to start. You should read the user manuals and the
|
||||
high level design documents.
|
||||
|
||||
A quick start to writing code that uses the MPS is the "hello-world"
|
||||
A quick start to writing code that uses the MPS is the "hello-world"
|
||||
example:
|
||||
example/hello-world/index.txt
|
||||
|
||||
|
|
@ -606,9 +612,9 @@ B. DOCUMENT HISTORY
|
|||
|
||||
C. COPYRIGHT AND LICENSE
|
||||
|
||||
Copyright (C) 2001-2002, 2006-2007, 2008, 2010 Ravenbrook Limited.
|
||||
All rights reserved. <http://www.ravenbrook.com/>.
|
||||
This is an open source license.
|
||||
Copyright (C) 2001-2002, 2006-2007, 2008, 2010 Ravenbrook Limited.
|
||||
All rights reserved. <http://www.ravenbrook.com/>.
|
||||
This is an open source license.
|
||||
Contact Ravenbrook for commercial licensing options.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
|||
|
|
@ -1,21 +1,24 @@
|
|||
#!/usr/bin/python
|
||||
#How to test a release before shipping it to Configura
|
||||
# How to test a release before shipping it to Configura
|
||||
|
||||
#You have a candidate release. This document tells you how to test it before shipping it -- quick tests.
|
||||
#Readership: all. Confidential: no. Status: rough notes.
|
||||
#Background: knowing the history of MPS development for Configura is an advantage.
|
||||
#Peer documents:
|
||||
# You have a candidate release. This document tells you how to test it
|
||||
# before shipping it -- quick tests.
|
||||
# Readership: all. Confidential: no. Status: rough notes.
|
||||
# Background: knowing the history of MPS development for Configura is
|
||||
# an advantage.
|
||||
# Peer documents:
|
||||
# <http://info.ravenbrook.com/project/mps/master/procedure/release-build/>.
|
||||
# <http://info.ravenbrook.com/project/mps/master/procedure/release-configura/>.
|
||||
|
||||
#What do we test?
|
||||
#Not much -- this procedure is for a quick test before shipping, principally to make sure that the build isn't crock in some way.
|
||||
# What do we test?
|
||||
# Not much -- this procedure is for a quick test before shipping,
|
||||
# principally to make sure that the build isn't crock in some way.
|
||||
|
||||
#How to run the test:
|
||||
#You need python (eg. 2.3). Cd to where you would type w3build.bat.
|
||||
#Type ..\tool\test-runner.py
|
||||
#Each test should report "Conclusion: Failed to find any defects."
|
||||
#Also check full log placed in file a1.txt.
|
||||
# How to run the test:
|
||||
# You need python (eg. 2.3). Cd to where you would type w3build.bat.
|
||||
# Type ..\tool\test-runner.py
|
||||
# Each test should report "Conclusion: Failed to find any defects."
|
||||
# Also check full log placed in file a1.txt.
|
||||
|
||||
|
||||
import os
|
||||
|
|
@ -50,6 +53,7 @@ def mpsplatformcode() :
|
|||
# under Rosetta, so I'm not confident it's right).
|
||||
arch = {'Power Macintosh':'pp',
|
||||
'i386':'i3',
|
||||
'x86':'i3',
|
||||
}[platform.machine()]
|
||||
except :
|
||||
# Windows specific hack. On Python 2.4 and 2.5 platform.machine
|
||||
|
|
@ -64,7 +68,7 @@ def mpsplatformcode() :
|
|||
# Here, we simplify and get it right for Windows and Macs.
|
||||
try :
|
||||
compiler = {'xc':'gc',
|
||||
'w3':'m9',
|
||||
'w3':'mv',
|
||||
}[os]
|
||||
except :
|
||||
pass
|
||||
|
|
@ -76,10 +80,14 @@ def mpsplatformcode() :
|
|||
|
||||
mpsplatform = mpsplatformcode()
|
||||
|
||||
print "mpsplatform = ", mpsplatform
|
||||
|
||||
exit
|
||||
|
||||
make = ''
|
||||
if mpsplatform[4:6] == 'gc' :
|
||||
make = "make -r -f %s.gmk VARIETY=%%s %%s >> %%s" % mpsplatform
|
||||
elif mpsplatform[4:6] == 'm9' :
|
||||
elif mpsplatform[4:6] == 'mv' :
|
||||
make = "nmake /f %s.nmk VARIETY=%%s %%s.exe >>%%s" % mpsplatform
|
||||
|
||||
run = ''
|
||||
|
|
@ -133,18 +141,18 @@ os.system("echo DONE")
|
|||
* Copyright (C) 2005 Ravenbrook Limited <http://www.ravenbrook.com/>.
|
||||
* 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
|
||||
|
|
@ -155,7 +163,7 @@ os.system("echo DONE")
|
|||
* 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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue