Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 1 participants
- 144619 messages
Re: [Pharo-project] [squeak-dev] Teleplace Cog VMs are now available
by Michael Haupt
Eliot,
this is absolutely wonderful news. Thank you and everyone at Teleplace
who made this possible.
Best wishes,
Michael
On Sun, Jun 20, 2010 at 10:11 PM, Eliot Miranda <eliot.miranda(a)gmail.com> wrote:
> Hi All,
>
> it gives me great pleasure to announce that the Teleplace Cog VMs are now
> available. Huge thanks to all at Teleplace who have given me the
> opportunity to build Cog and release it as open source, been willing guinea
> pigs braving its bugs, and providing indispensable participation in getting
> Cog to its current state. Huge thanks are also due to the original Back To
> The Future team whose VMMaker Cog extends to write the VM, and to Peter
> Deutsch from whom I've taken many ideas.
>
> This release contains two VMs. The Stack VM, is a cross-platform
> interpreter that uses context-to-stack mapping to achieve modest performance
> gains. The Cog VM is a just-in-time compiler that currently supports only
> x86 that builds upon the Stack VM to achieve substantial performance
> improvements. The release is in the form of a Monticello package containing
> the VMMaker source and a tarball containing the platform sources, the
> generated sources and a Squeak 4.1 image containing the VMMaker sources.
> Download both at
>
> http://ftp.squeak.org/Cog/VMMaker-oscog.11.mcz
>
> http://ftp.squeak.org/Cog/OpenSourceCog.tar.gz
>
> Cog VMs:
>
> The Cog VMs are Squeak/Croquet VMs that run closure
> Squeak/Croquet/Pharo/Cuis images. The VMs support existing plugin source but
> will require plugins to be recompiled as the VM_PROXY_MAJOR plugin api has
> been extended.
>
> This release contains two distinct VMs, the StackInterpreter and the Cogit.
> The StackInterpreter is a fully-portable plug-in replacement for the current
> closure Squeak VMs and images. The Stack VM uses context-to-stack mapping
> and a somewhat improved garbage collector to achieve modest but useful
> performance gains in the 10% to 15% range. The StackInterpreter is intended
> to supersede the Squeak VM on platforms where the Cogit cannot be used. The
> Cogit extends the StackInterpreter with a just-in-time compiler that uses
> aggressive inline caching techniques to deliver substantial performance
> gains in the 3x to 15x range, depending on benchmark. The Cogit currently
> supports only x86 and the floating-point primitives and parts of the
> platform support code depend on SSE2. I hope members of the community will
> attempt to port it, e.g. to ARM, PowerPC and x86-64. The Cogit (excuse the
> pun) is so named because it is both an interpreter and a JIT, choosing not
> to generate machine code for large methods, interpreting them instead, the
> default policy being not to JIT methods with more than 60 literals.
>
> The Cog VM requires a few minor image changes all in
> image/NecessaryImageChangesForCogToWork.1.cs. The JIT's machine-code
> SmallInteger primitives insist on a SmallInteger receiver so the primitives
> in LargePositiveInteger = ~= bitAnd: bitOr: butShift: and bitXor: cannot be
> used and these methods must be deleted. The Cogit inlines the address of
> the Character instance table, Smalltalk specialObjectsArray at: 25, into the
> machine-code at: primitive for faster ByteString>>at: and so the table
> cannot be rebuilt in SmalltalkImage>>recreateSpecialObjectsArray. The new
> version preserves the existing table. Both VMs maintain floats in platform
> order to ease implementation of machine code floating-point primitives, and
> hence internally are in little-endian order instead of big-endian in current
> Squeak images. While the VMs convert float order automatically on load they
> do require special accessing primitives Float>>basicAt: &
> Float>>basicAt:put: that undo the reversal and answer Float contents in
> big-endian order so that e.g. Float>>hash is unchanged. The methods assume
> these primitives can fail, allowing the code to be used on current Squeak
> VMs.
>
> The image/VMMaker-Squeak4.1.image is a Squeak 4.1 image, runnable with the
> current Squeak VMs, that contains these changes, and can hence also be run
> with a Cog VM. But beware, once an image has been saved on Cog it cannot be
> run by an existing Squeak VM, because existing VMs cannot undo the Float
> order change.
>
> Platform Subsystem:
>
> Most of the platform subsystem is unchanged but there are some important
> changes that need description. The biggest change is the heartbeat and the
> clock in platforms/unix/vm/sqUnixHeartbeat.c and
> platforms/win32/vm/sqWin32Heartbeat.c. The Cog VMs avoid the slow and
> variable interruptCheckCounter, folding the event check into the stack
> overflow check on frame build. The heartbeat, typically 500Hz or 1KHz,
> changes the stackLimit to a value that will always fail. On the next frame
> building send the VM will enter stack overflow handling that, as a side
> effect, will also check for events. This is more efficient than the update
> of interruptCheckCounter and much more regular. If one is running code that
> executes long-running primitives (e.g. large integer arithmetic) the counter
> approach will result in too low an interrupt check frequency, and conversely
> if one is running normal code the interrupt check frequency can be very
> high.
>
> The heartbeat also maintains a 64-bit microsecond clock, UTC microseconds
> from 1901, from which the backward-compatible millisecond and second clocks
> are derived. Primitives exist to answer UTC microseconds and local
> microseconds. Updating the clock in the heartbeat results in a 1 or 2
> millisecond resolution but avoids the cost of accessing the OS time on every
> prim tie which we've found important for performance at Teleplace. The
> 64-bit microsecond clocks provide a unified time basis and eliminate
> wrapping (for the next 54,000 years at least). I hope community images will
> move to these clocks. It's worked well in VisualWorks.
>
> Another significant change is in the external semaphore table support code.
> This is now lock-free at the cost of having to specify a maximum number of
> external semaphores at start-up (default 256). The support code for the
> lock-free data structures are processor-specific and is currently
> implemented only for x86 and gcc-compatible compilers; see
> platforms/Cross/vm/{sqAtomicOps.h,sqMemoryFence.h}.
>
> There is also improved crash reporting code that prints a primitive log and
> a C backtrace in addition to the Smalltalk backtrace. See platforms/Mac
> OS/vm/sqMacMain.c, platforms/unix/vm/sqUnixMain.c,
> platforms/win32/vm/sqWin32Intel.c & platforms/win32/vm/sqWin32Backtrace.c.
>
> Finally there is support for the QVMProfiler, a pc-sampling profiler for
> profiling at the VM level. See platforms/unix/vm/sqUnixVMProfile.c and
> platforms/win32/vm/sqWin32VMProfile.c. The profiler itself is in the
> VMMaker image described below in Qwaq-VMProfiling.
>
> There are also changes to do with Teleplace-specific extensions to the
> HostWindowPlugin but these are not essential to Cog.
>
> VMMaker and Slang:
>
> The image/VMMaker-Squeak4.1.image Squeak 4.1 image contains the complete Cog
> VMMaker with necessary support code for simulation. This image was used to
> generate the sources in the src and stacksrc directories.
>
> Cog's VMMaker is substantially revised and extended from the current
> VMMaker. It supports multiple classes, not just Interpreter and
> superclasses, because both context-to-stack mapping and the Cogit are too
> complex to write monolithically. Classes can specify ancilliaryClasses and
> ancilliaryStructClasses, such as CoInterpreterStackPage, CogMethod and
> CogAbstractInstruction. The Monticello package version is included in the
> header of all generated files and constitutes the version stamp for
> generated code. Code is generated in sorted order so that minor changes in
> the Smalltalk source produce correspondingly minor changes in the generated
> code. The gnuification step is built-in to VMMaker. No effort has been
> made to maintain 64-bit compatibility. Apologies, this was unaffordable.
>
> The VMMaker generates a single source tree used by all platforms. Instead
> of deciding at generation time whether to use the Interpreter struct the
> generated code depends on the SQ_USE_GLOBAL_STRUCT define which can be
> overridden in platform makefiles. All plugins live in src/plugins and
> platform makefiles along with plugins.int and plugins.ext files in the build
> subdirectories decide which plugins are built as external or internal. The
> VM Generation Workspace from Workspace.text workspace contains dots to
> generate the sources. We no longer use the VMMakerTool since there should
> be nothing platform-specific in the generated sources (if we add ports to
> other ISAs all their source can be included and selected as required by the
> platform makefiles).
>
> Since the Cogit generates x86 machine code simulation is much more complex.
> There is a support plugin, platforms/Cross/plugins/BochsIA32Plugin that
> depends on a large simulation of the x86 family implemented in C++ (see
> processors/IA32/bochs) and on Alien. I use the simulator frequently (but
> note that I haven't had time to build a working version for Squeak 4.1). I
> have tested Cog simulation in this image, running on the
> image/VMMaker-Squeak4.1.image itself. The VM Simulation Workspace in the
> VMMaker image contains an example doit that starts the simulator. Be
> patient, even on a fast machine unhibernating the Squeak display background
> image takes nearly a minute. Native fonts do not (yet) simulate correctly,
> but the system runs. But note that I have only attempted to build and run
> the simulator on Mac OS X. I expect Bochs can be built on linux and win32
> but I have not tried. By the way, I've not described how to run the Bochs
> simulator on the current Squeak VM. That's because the plugin depends on
> the heartbeat to break out of simulation occasionally via a new
> interpreterProxy entry point setInterruptCheckChain. As this isn't
> supported by the current Squeak VMs the plugin would require modification.
> So to simulate first build either of the Cog VMs and then run the simulation
> with it.
>
> There are a number of unpublished changes to the base other than those in
> NecessaryImageChangesForCogToWork.1.cs. This is partly laziness on my part,
> partly avoiding publishing things in advance of Cog. These changes are
> better motivated once Cog is in use. There are changes to the "translated
> primitives" (see implementors of translatedPrimitives) which replace
> messages with method tags for generation directives. The Cog VMMaker uses
> Object>>perform:with:with:with:with: &
> Object>>perform:with:with:with:with:with: during simulation, and
> Collection>>#fold: & SquenceableCollection>>#copyUpThrough: during
> generation. Object>>inline: and Object var:declareC:, which are mispackaged
> in Kernel in Squeak 4.1 are obsolete (method tags being used instead) and
> have been removed. I have changed Integer>>hex and Integer>>hex8 back to
> their original semantics as of 3.8. Backward compatibility is important and
> one can easily add new selectors if one wants different functionality.
> VMMaker was here first ;)
>
> Tarball:
>
> The top-level directories in the tarball are
>
> src
>
> the tree for the Cog generated sources including all plugins
>
> stacksrc/vm
>
> the directory containing the Stack VM source (plugins can be taken from
> above)
>
> platforms
>
> the usual svn platform tree but including Cog specific changes such as the
> heartbeat
>
> processors
>
> the tree containing simulation support code, i.e. the bochs C++ x86
> simulation library, along with a potential ARM, PowerPC & MIPS simulator,
> Skeye.
>
> image
>
> the Cog-prepared Squeak 4.1 VMMaker image
>
> scripts
>
> some svn scripts to revert unchanged plugins that haven't really changed
>
> cygwinbuild
>
> the win32 build directory
>
> winbuild
>
> the old win32 build directory for minnow gcc 2.95. Not entirely obsolete as
> the cygwin build as yet fails to generate a functional FFIPlugin
>
> macbuild
>
> the CoreVM.xcodeproj and support build projects for Mac OS X 10.5 or better
>
> unixbuild
>
> the build directory for linux
>
> Building Cog:
>
> Each build directory above contains a HowToBuild file that describes
> building in more detail. The build directories only contain Cogit
> makefiles. f you want to build a Stack VM you're on your own but this is
> very close to the existing Squeak VM build.
>
> Status:
>
> The Cogit VM has been our sole VM at Teleplace for nearly a year. We do
> occasionally find bugs and there are almost certainly areas of functionality
> that we have not touched (for example I know that co-routining does not yet
> work). If you find a bug please try and create a reproducible test case and
> let me know. I can't promise to take a look or fix it but I am motivated to
> do so and will try my best as time allows. Better still if you find and fix
> bugs be sure to let me know.
>
> License (MIT):
>
> All contributions from Teleplace in this release are
>
> Copyright (c) 2010 Teleplace, Inc.
>
> Permission is hereby granted, free of charge, to any person obtaining a copy
>
> of this software and associated documentation files (the "Software"), to
> deal
>
> in the Software without restriction, including without limitation the rights
>
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
>
> copies of the Software, and to permit persons to whom the Software is
>
> furnished to do so, subject to the following conditions:
>
> The above copyright notice and this permission notice shall be included in
>
> all copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
>
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
>
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
>
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> FROM,
>
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
>
> THE SOFTWARE.
>
> Eliot Miranda
>
> June 2010
>
>
>
>
June 20, 2010
[Pharo-project] Teleplace Cog VMs are now available
by Eliot Miranda
Hi All,
it gives me great pleasure to announce that the Teleplace Cog VMs are now
available. Huge thanks to all at Teleplace who have given me the
opportunity to build Cog and release it as open source, been willing guinea
pigs braving its bugs, and providing indispensable participation in getting
Cog to its current state. Huge thanks are also due to the original Back To
The Future team whose VMMaker Cog extends to write the VM, and to Peter
Deutsch from whom I've taken many ideas.
This release contains two VMs. The Stack VM, is a cross-platform
interpreter that uses context-to-stack mapping to achieve modest performance
gains. The Cog VM is a just-in-time compiler that currently supports only
x86 that builds upon the Stack VM to achieve substantial performance
improvements. The release is in the form of a Monticello package containing
the VMMaker source and a tarball containing the platform sources, the
generated sources and a Squeak 4.1 image containing the VMMaker sources.
Download both at
http://ftp.squeak.org/Cog/VMMaker-oscog.11.mcz
http://ftp.squeak.org/Cog/OpenSourceCog.tar.gz
Cog VMs:
The Cog VMs are Squeak/Croquet VMs that run closure
Squeak/Croquet/Pharo/Cuis images. The VMs support existing plugin source but
will require plugins to be recompiled as the VM_PROXY_MAJOR plugin api has
been extended.
This release contains two distinct VMs, the StackInterpreter and the Cogit.
The StackInterpreter is a fully-portable plug-in replacement for the current
closure Squeak VMs and images. The Stack VM uses context-to-stack mapping
and a somewhat improved garbage collector to achieve modest but useful
performance gains in the 10% to 15% range. The StackInterpreter is intended
to supersede the Squeak VM on platforms where the Cogit cannot be used. The
Cogit extends the StackInterpreter with a just-in-time compiler that uses
aggressive inline caching techniques to deliver substantial performance
gains in the 3x to 15x range, depending on benchmark. The Cogit currently
supports only x86 and the floating-point primitives and parts of the
platform support code depend on SSE2. I hope members of the community will
attempt to port it, e.g. to ARM, PowerPC and x86-64. The Cogit (excuse the
pun) is so named because it is both an interpreter and a JIT, choosing not
to generate machine code for large methods, interpreting them instead, the
default policy being not to JIT methods with more than 60 literals.
The Cog VM requires a few minor image changes all in
image/NecessaryImageChangesForCogToWork.1.cs. The JIT's machine-code
SmallInteger primitives insist on a SmallInteger receiver so the primitives
in LargePositiveInteger = ~= bitAnd: bitOr: butShift: and bitXor: cannot be
used and these methods must be deleted. The Cogit inlines the address of
the Character instance table, Smalltalk specialObjectsArray at: 25, into the
machine-code at: primitive for faster ByteString>>at: and so the table
cannot be rebuilt in SmalltalkImage>>recreateSpecialObjectsArray. The new
version preserves the existing table. Both VMs maintain floats in platform
order to ease implementation of machine code floating-point primitives, and
hence internally are in little-endian order instead of big-endian in current
Squeak images. While the VMs convert float order automatically on load they
do require special accessing primitives Float>>basicAt: &
Float>>basicAt:put: that undo the reversal and answer Float contents in
big-endian order so that e.g. Float>>hash is unchanged. The methods assume
these primitives can fail, allowing the code to be used on current Squeak
VMs.
The image/VMMaker-Squeak4.1.image is a Squeak 4.1 image, runnable with the
current Squeak VMs, that contains these changes, and can hence also be run
with a Cog VM. But beware, once an image has been saved on Cog it cannot be
run by an existing Squeak VM, because existing VMs cannot undo the Float
order change.
Platform Subsystem:
Most of the platform subsystem is unchanged but there are some important
changes that need description. The biggest change is the heartbeat and the
clock in platforms/unix/vm/sqUnixHeartbeat.c and
platforms/win32/vm/sqWin32Heartbeat.c. The Cog VMs avoid the slow and
variable interruptCheckCounter, folding the event check into the stack
overflow check on frame build. The heartbeat, typically 500Hz or 1KHz,
changes the stackLimit to a value that will always fail. On the next frame
building send the VM will enter stack overflow handling that, as a side
effect, will also check for events. This is more efficient than the update
of interruptCheckCounter and much more regular. If one is running code that
executes long-running primitives (e.g. large integer arithmetic) the counter
approach will result in too low an interrupt check frequency, and conversely
if one is running normal code the interrupt check frequency can be very
high.
The heartbeat also maintains a 64-bit microsecond clock, UTC microseconds
from 1901, from which the backward-compatible millisecond and second clocks
are derived. Primitives exist to answer UTC microseconds and local
microseconds. Updating the clock in the heartbeat results in a 1 or 2
millisecond resolution but avoids the cost of accessing the OS time on every
prim tie which we've found important for performance at Teleplace. The
64-bit microsecond clocks provide a unified time basis and eliminate
wrapping (for the next 54,000 years at least). I hope community images will
move to these clocks. It's worked well in VisualWorks.
Another significant change is in the external semaphore table support code.
This is now lock-free at the cost of having to specify a maximum number of
external semaphores at start-up (default 256). The support code for the
lock-free data structures are processor-specific and is currently
implemented only for x86 and gcc-compatible compilers; see
platforms/Cross/vm/{sqAtomicOps.h,sqMemoryFence.h}.
There is also improved crash reporting code that prints a primitive log and
a C backtrace in addition to the Smalltalk backtrace. See platforms/Mac
OS/vm/sqMacMain.c, platforms/unix/vm/sqUnixMain.c,
platforms/win32/vm/sqWin32Intel.c & platforms/win32/vm/sqWin32Backtrace.c.
Finally there is support for the QVMProfiler, a pc-sampling profiler for
profiling at the VM level. See platforms/unix/vm/sqUnixVMProfile.c and
platforms/win32/vm/sqWin32VMProfile.c. The profiler itself is in the
VMMaker image described below in Qwaq-VMProfiling.
There are also changes to do with Teleplace-specific extensions to the
HostWindowPlugin but these are not essential to Cog.
VMMaker and Slang:
The image/VMMaker-Squeak4.1.image Squeak 4.1 image contains the complete Cog
VMMaker with necessary support code for simulation. This image was used to
generate the sources in the src and stacksrc directories.
Cog's VMMaker is substantially revised and extended from the current
VMMaker. It supports multiple classes, not just Interpreter and
superclasses, because both context-to-stack mapping and the Cogit are too
complex to write monolithically. Classes can specify ancilliaryClasses and
ancilliaryStructClasses, such as CoInterpreterStackPage, CogMethod and
CogAbstractInstruction. The Monticello package version is included in the
header of all generated files and constitutes the version stamp for
generated code. Code is generated in sorted order so that minor changes in
the Smalltalk source produce correspondingly minor changes in the generated
code. The gnuification step is built-in to VMMaker. No effort has been
made to maintain 64-bit compatibility. Apologies, this was unaffordable.
The VMMaker generates a single source tree used by all platforms. Instead
of deciding at generation time whether to use the Interpreter struct the
generated code depends on the SQ_USE_GLOBAL_STRUCT define which can be
overridden in platform makefiles. All plugins live in src/plugins and
platform makefiles along with plugins.int and plugins.ext files in the build
subdirectories decide which plugins are built as external or internal. The
VM Generation Workspace from Workspace.text workspace contains dots to
generate the sources. We no longer use the VMMakerTool since there should
be nothing platform-specific in the generated sources (if we add ports to
other ISAs all their source can be included and selected as required by the
platform makefiles).
Since the Cogit generates x86 machine code simulation is much more complex.
There is a support plugin, platforms/Cross/plugins/BochsIA32Plugin that
depends on a large simulation of the x86 family implemented in C++ (see
processors/IA32/bochs) and on Alien. I use the simulator frequently (but
note that I haven't had time to build a working version for Squeak 4.1). I
have tested Cog simulation in this image, running on the
image/VMMaker-Squeak4.1.image itself. The VM Simulation Workspace in the
VMMaker image contains an example doit that starts the simulator. Be
patient, even on a fast machine unhibernating the Squeak display background
image takes nearly a minute. Native fonts do not (yet) simulate correctly,
but the system runs. But note that I have only attempted to build and run
the simulator on Mac OS X. I expect Bochs can be built on linux and win32
but I have not tried. By the way, I've not described how to run the Bochs
simulator on the current Squeak VM. That's because the plugin depends on
the heartbeat to break out of simulation occasionally via a new
interpreterProxy entry point setInterruptCheckChain. As this isn't
supported by the current Squeak VMs the plugin would require modification.
So to simulate first build either of the Cog VMs and then run the simulation
with it.
There are a number of unpublished changes to the base other than those in
NecessaryImageChangesForCogToWork.1.cs. This is partly laziness on my part,
partly avoiding publishing things in advance of Cog. These changes are
better motivated once Cog is in use. There are changes to the "translated
primitives" (see implementors of translatedPrimitives) which replace
messages with method tags for generation directives. The Cog VMMaker uses
Object>>perform:with:with:with:with: &
Object>>perform:with:with:with:with:with: during simulation, and
Collection>>#fold: & SquenceableCollection>>#copyUpThrough: during
generation. Object>>inline: and Object var:declareC:, which are mispackaged
in Kernel in Squeak 4.1 are obsolete (method tags being used instead) and
have been removed. I have changed Integer>>hex and Integer>>hex8 back to
their original semantics as of 3.8. Backward compatibility is important and
one can easily add new selectors if one wants different functionality.
VMMaker was here first ;)
Tarball:
The top-level directories in the tarball are
src
the tree for the Cog generated sources including all plugins
stacksrc/vm
the directory containing the Stack VM source (plugins can be taken from
above)
platforms
the usual svn platform tree but including Cog specific changes such as the
heartbeat
processors
the tree containing simulation support code, i.e. the bochs C++ x86
simulation library, along with a potential ARM, PowerPC & MIPS simulator,
Skeye.
image
the Cog-prepared Squeak 4.1 VMMaker image
scripts
some svn scripts to revert unchanged plugins that haven't really changed
cygwinbuild
the win32 build directory
winbuild
the old win32 build directory for minnow gcc 2.95. Not entirely obsolete as
the cygwin build as yet fails to generate a functional FFIPlugin
macbuild
the CoreVM.xcodeproj and support build projects for Mac OS X 10.5 or better
unixbuild
the build directory for linux
Building Cog:
Each build directory above contains a HowToBuild file that describes
building in more detail. The build directories only contain Cogit
makefiles. f you want to build a Stack VM you're on your own but this is
very close to the existing Squeak VM build.
Status:
The Cogit VM has been our sole VM at Teleplace for nearly a year. We do
occasionally find bugs and there are almost certainly areas of functionality
that we have not touched (for example I know that co-routining does not yet
work). If you find a bug please try and create a reproducible test case and
let me know. I can't promise to take a look or fix it but I am motivated to
do so and will try my best as time allows. Better still if you find and fix
bugs be sure to let me know.
License (MIT):
All contributions from Teleplace in this release are
Copyright (c) 2010 Teleplace, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Eliot Miranda
June 2010
June 20, 2010
[Pharo-project] SLICE-Issue-2576-AddingAutoFitToNewTextMorph
by Fernando olivero
SLICE-Issue-2576-AddingAutoFitToNewTextMorph-FernandoOlivero.2
Fix in PharoInbox.
(Needs SLICE-Issue-2557-NewTextMorphRefactorings-FernandoOlivero, loaded in in 12010 )
Fernando
June 20, 2010
[Pharo-project] Interesting survey about smalltalk
by Igor Stasenko
http://therighttool.hammerprinciple.com/items/smalltalk
I think this could be used as a good guide for us to make an effort to
move some low-ranked items
into a high ranked ones :)
--
Best regards,
Igor Stasenko AKA sig.
June 20, 2010
[Pharo-project] Where is everyone? Watching the world cup?
by Miguel Enrique Cobá MartÃnez
I haven't received any email from pharo mailing list, even if the
archives in the inria mailman interface show some activity (although
less than usual).
So, there was some change in the mailman configuration that I'm not
receiving anymore messages?
Someone sees the same problem?
I even tried to register again in the mailman page, but never received
the confirmation email.
Someone?
Cheers
--
Miguel Cobá
http://miguel.leugim.com.mx
June 20, 2010
[Pharo-project] Fwd: Issue 2551 in pharo: Performance degradation of WeakRegistry in Pharo 1.1
by Stéphane Ducasse
Begin forwarded message:
> From: Joachim Geidel <joachim.geidel(a)onlinehome.de>
> Date: June 19, 2010 5:29:56 PM GMT+02:00
> To: Stéphane Ducasse <stephane.ducasse(a)inria.fr>
> Subject: Re: Issue 2551 in pharo: Performance degradation of WeakRegistry in Pharo 1.1
>
> Hello Stef,
>
> I just saw that you have integrated Collections-ul.362 to fix the
> performance problem with WeakRegistry finalization.
>
> For Squeak, I had also reported a deadlock
> (http://bugs.squeak.org/view.php?id=7546) In a discussion with Levente
> Uzonyi on the Squeak-dev list, we found that this was because
> WeakKeyDictionary executes the finalizers for gc'd elements in the scope of
> the protected block in WeakRegistry>>finalizeValues. As the WeakRegistry has
> no control over what the finalizers do, this is a potential source for
> deadlocks. This actually happens in JNIPort. The problem was introduced in
> Squeak 4.1.
>
> Levente has fixed the problem in Collections-ul.365.mcz. He has not yet
> closed the Squeak issue 7546 yet; I have sent him a reminder. I think it
> would be better to integrate Collections-ul.365.mcz. Otherwise there will be
> deadlocks in Pharo too, at least with JNIPort. I can work around this, as
> JNIPort comes with its own subclass of WeakRegistry, but other users of
> WeakRegistry could run into the same problem. OTOH, I don't know what other
> changes have been introduced between Collections-ul.362 and
> Collections-ul.365, so there may be unwanted changes which are not good for
> Pharo.
>
> Cheers,
> Joachim
>
> ------ Weitergeleitete Nachricht
>> Von: "pharo(a)googlecode.com" <pharo(a)googlecode.com>
>> Antworten an: "codesite-noreply(a)google.com" <codesite-noreply(a)google.com>
>> Datum: Sat, 19 Jun 2010 17:05:59 +0200
>> An: Joachim Geidel <joachim.geidel(a)bluecarat.de>
>> Betreff: ***SPAM*** Re: Issue 2551 in pharo: Performance degradation of
>> WeakRegistry in Pharo 1.1
>>
>
>> Updates:
>> Status: Fixed
>>
>> Comment #6 on issue 2551 by stephane.ducasse: Performance degradation of
>> WeakRegistry in Pharo 1.1
>> http://code.google.com/p/pharo/issues/detail?id=2551
>>
>> (No comment was entered for this change.)
>>
>> --
>> You received this message because you starred the issue.
>> You may adjust your issue notification preferences at:
>> https://code.google.com/hosting/settings
>
> ------ Ende der weitergeleiteten Nachricht
>
>
June 19, 2010
[Pharo-project] [update 1.2] #12010
by Stéphane Ducasse
12010
-----
- Issue 2556: AutoStart
- Issue 2557: NewTextMorph and CodeMorphs refactorings and tests
Fernando apparently one of your test is breaking. can you check?
Stef
June 19, 2010
Re: [Pharo-project] [SPAM] Fwd: [Pharo-users] [SPAM] Re: WebClient
by Philippe Marschall
On 15.06.2010 10:19, Sven Van Caekenberghe wrote:
>
> On 14 Jun 2010, at 16:48, Stéphane Ducasse wrote:
>
>>> I will contact Andreas directly once I know your position on the last remaining item.
>>
>> Good
>
> I did contact Andreas Raab and he integrated both of my patch sets upstream so that WebClient-Core now load and works on Pharo 1.1rc2 without the need for any Pharo specific patches.
I also sent him two patches. With the backported SocketStream fixes I
now have Seaside running on WebClient in Pharo 1.0. The only thing
missing is multipart POSTs (file uploads).
Cheers
Philippe
June 19, 2010