Marcel Taeumel uploaded a new version of Kernel to project The Trunk: http://source.squeak.org/trunk/Kernel-mt.1437.mcz
==================== Summary ====================
Name: Kernel-mt.1437 Author: mt Time: 26 December 2021, 8:21:42.050619 am UUID: 28086a0b-8543-4f44-9c9f-7e63d3028f7f Ancestors: Kernel-ct.1436
Makes #acceptsLoggingOfCompilation a preference that can be disabled. See commentary #logCompiledSources. Classes can still override this preference but should follow a "super acceptsLoggingOfCompilation and: [...]" pattern.
Thanks to Tim (tpr) for figuring out the mechanics and testing it throughout the year!
=============== Diff against Kernel-ct.1436 ===============
Item was changed: Behavior subclass: #ClassDescription instanceVariableNames: 'instanceVariables organization' + classVariableNames: 'AcceptsLoggingOfCompilation TraitImpl' - classVariableNames: 'TraitImpl' poolDictionaries: '' category: 'Kernel-Classes'!
!ClassDescription commentStamp: '<historical>' prior: 0! I add a number of facilities to basic Behaviors: Named instance variables Category organization for methods The notion of a name of this class (implemented as subclass responsibility) The maintenance of a ChangeSet, and logging changes on a file Most of the mechanism for fileOut. I am an abstract class, in particular, my facilities are intended for inheritance by two subclasses, Class and Metaclass.
The slots 'organization' and 'methodDict' should ONLY be accessed by message in order for things to work during ImageSegment>>discoverActiveClasses (q.v.).!
Item was added: + ----- Method: ClassDescription class>>logCompiledSources (in category 'compiling') ----- + logCompiledSources + <preference: 'Log compilations to changes file' + category: 'general' + description: 'If enabled, the code being compiled will get logged to the changes file. Disabling allows loading code with no changes file in use. See also #warnIfNoChangesFile and #warnIfNoSourcesFile and #readDocumentAtStartup. You can configure a silent image/DoItFirst for, e.g., server environments.' + type: #Boolean> + + ^ AcceptsLoggingOfCompilation ifNil: [true]!
Item was added: + ----- Method: ClassDescription class>>logCompiledSources: (in category 'compiling') ----- + logCompiledSources: aBoolean + ^ AcceptsLoggingOfCompilation := aBoolean!
Item was changed: ----- Method: ClassDescription>>acceptsLoggingOfCompilation (in category 'compiling') ----- acceptsLoggingOfCompilation "weird name is so that it will come lexically before #compile, so that a clean build can make it through. 7/7/96 sw"
+ ^AcceptsLoggingOfCompilation ifNil: [true]! - ^ true!
Fantastic! I'm already looking forward to make use of this in my TelegramSmalltalkBot! :-)
Until then, I wonder whether we should write method changes to the #source attribute of the compiled method in question so that you do not loose your temp names after accepting when the change file is unavailable. See CompiledMethod >> #getSourceFor:in:. What do you think? :-)
Best, Christoph
--- Sent from Squeak Inbox Talk
On 2021-12-26T07:21:46+00:00, commits@source.squeak.org wrote:
Marcel Taeumel uploaded a new version of Kernel to project The Trunk: http://source.squeak.org/trunk/Kernel-mt.1437.mcz
==================== Summary ====================
Name: Kernel-mt.1437 Author: mt Time: 26 December 2021, 8:21:42.050619 am UUID: 28086a0b-8543-4f44-9c9f-7e63d3028f7f Ancestors: Kernel-ct.1436
Makes #acceptsLoggingOfCompilation a preference that can be disabled. See commentary #logCompiledSources. Classes can still override this preference but should follow a "super acceptsLoggingOfCompilation and: [...]" pattern.
Thanks to Tim (tpr) for figuring out the mechanics and testing it throughout the year!
=============== Diff against Kernel-ct.1436 ===============
Item was changed: Behavior subclass: #ClassDescription instanceVariableNames: 'instanceVariables organization'
- classVariableNames: 'AcceptsLoggingOfCompilation TraitImpl'
classVariableNames: 'TraitImpl' poolDictionaries: '' category: 'Kernel-Classes'!
!ClassDescription commentStamp: '<historical>' prior: 0! I add a number of facilities to basic Behaviors: Named instance variables Category organization for methods The notion of a name of this class (implemented as subclass responsibility) The maintenance of a ChangeSet, and logging changes on a file Most of the mechanism for fileOut. I am an abstract class, in particular, my facilities are intended for inheritance by two subclasses, Class and Metaclass.
The slots 'organization' and 'methodDict' should ONLY be accessed by message in order for things to work during ImageSegment>>discoverActiveClasses (q.v.).!
Item was added:
- ----- Method: ClassDescription class>>logCompiledSources (in category 'compiling') -----
- logCompiledSources
- <preference: 'Log compilations to changes file'
- category: 'general'
- description: 'If enabled, the code being compiled will get logged to the changes file. Disabling allows loading code with no changes file in use. See also #warnIfNoChangesFile and #warnIfNoSourcesFile and #readDocumentAtStartup. You can configure a silent image/DoItFirst for, e.g., server environments.'
- type: #Boolean>
- ^ AcceptsLoggingOfCompilation ifNil: [true]!
Item was added:
- ----- Method: ClassDescription class>>logCompiledSources: (in category 'compiling') -----
- logCompiledSources: aBoolean
- ^ AcceptsLoggingOfCompilation := aBoolean!
Item was changed: ----- Method: ClassDescription>>acceptsLoggingOfCompilation (in category 'compiling') ----- acceptsLoggingOfCompilation "weird name is so that it will come lexically before #compile, so that a clean build can make it through. 7/7/96 sw"
- ^AcceptsLoggingOfCompilation ifNil: [true]!
- ^ true!
Hi Marcel, Tim, all,
with this preference enabled, I would have expected that I would be able to perform all common code management operations in an image that has no access to the changes file. However, here are some things that still fail under this circumstance:
* load/merge a Monticello version - MethodAddition>>#createCompiledMethod does not honor AcceptsLoggingOfCompilation, and neither does MCMethodDefinition>>#asMethodAddition. * re-classifying methods in a browser (or renaming a category)
See also all senders to #logMethodSource:forMethodWithNode:inCategory:withStamp:notifying:. I wonder whether this method should check AcceptsLoggingOfCompilation itself, or whether we need to make all senders aware of that preference. It would be really great to be able to open multiple instances of an image in parallel for throwaway experiments. :-)
Best, Christoph
--- Sent from Squeak Inbox Talk
On 2022-01-03T18:44:06+01:00, christoph.thiede@student.hpi.uni-potsdam.de wrote:
Fantastic! I'm already looking forward to make use of this in my TelegramSmalltalkBot! :-)
Until then, I wonder whether we should write method changes to the #source attribute of the compiled method in question so that you do not loose your temp names after accepting when the change file is unavailable. See CompiledMethod >> #getSourceFor:in:. What do you think? :-)
Best, Christoph
Sent from Squeak Inbox Talk
On 2021-12-26T07:21:46+00:00, commits at source.squeak.org wrote:
Marcel Taeumel uploaded a new version of Kernel to project The Trunk: http://source.squeak.org/trunk/Kernel-mt.1437.mcz
==================== Summary ====================
Name: Kernel-mt.1437 Author: mt Time: 26 December 2021, 8:21:42.050619 am UUID: 28086a0b-8543-4f44-9c9f-7e63d3028f7f Ancestors: Kernel-ct.1436
Makes #acceptsLoggingOfCompilation a preference that can be disabled. See commentary #logCompiledSources. Classes can still override this preference but should follow a "super acceptsLoggingOfCompilation and: [...]" pattern.
Thanks to Tim (tpr) for figuring out the mechanics and testing it throughout the year!
=============== Diff against Kernel-ct.1436 ===============
Item was changed: Behavior subclass: #ClassDescription ????instanceVariableNames: 'instanceVariables organization'
- ????classVariableNames: 'AcceptsLoggingOfCompilation TraitImpl'
????classVariableNames: 'TraitImpl' ????poolDictionaries: '' ????category: 'Kernel-Classes'!
!ClassDescription commentStamp: '<historical>' prior: 0! I add a number of facilities to basic Behaviors: ????Named instance variables ????Category organization for methods ????The notion of a name of this class (implemented as subclass responsibility) ????The maintenance of a ChangeSet, and logging changes on a file ????Most of the mechanism for fileOut. ???? I am an abstract class, in particular, my facilities are intended for inheritance by two subclasses, Class and Metaclass.
The slots 'organization' and 'methodDict' should ONLY be accessed by message in order for things to work during ImageSegment>>discoverActiveClasses (q.v.).!
Item was added:
- ----- Method: ClassDescription class>>logCompiledSources (in category 'compiling') -----
- logCompiledSources
- ????<preference: 'Log compilations to changes file'
- ????????category: 'general'
- ????????description: 'If enabled, the code being compiled will get logged to the changes file. Disabling allows loading code with no changes file in use. See also #warnIfNoChangesFile and #warnIfNoSourcesFile and #readDocumentAtStartup. You can configure a silent image/DoItFirst for, e.g., server environments.'
- ????????type: #Boolean>
- ????^ AcceptsLoggingOfCompilation ifNil: [true]!
Item was added:
- ----- Method: ClassDescription class>>logCompiledSources: (in category 'compiling') -----
- logCompiledSources: aBoolean
- ????^ AcceptsLoggingOfCompilation := aBoolean!
Item was changed: ----- Method: ClassDescription>>acceptsLoggingOfCompilation (in category 'compiling') ----- acceptsLoggingOfCompilation ????"weird name is so that it will come lexically before #compile, so that a clean build can make it through. 7/7/96 sw"
- ????^AcceptsLoggingOfCompilation ifNil: [true]!
- ????^ true!
On 2022-01-10, at 8:57 AM, christoph.thiede@student.hpi.uni-potsdam.de wrote:
Hi Marcel, Tim, all,
with this preference enabled, I would have expected that I would be able to perform all common code management operations in an image that has no access to the changes file. However, here are some things that still fail under this circumstance:
- load/merge a Monticello version - MethodAddition>>#createCompiledMethod does not honor AcceptsLoggingOfCompilation, and neither does MCMethodDefinition>>#asMethodAddition.
- re-classifying methods in a browser (or renaming a category)
See also all senders to #logMethodSource:forMethodWithNode:inCategory:withStamp:notifying:. I wonder whether this method should check AcceptsLoggingOfCompilation itself, or whether we need to make all senders aware of that preference. It would be really great to be able to open multiple instances of an image in parallel for throwaway experiments. :-)
Ah, I thought I had noticed sometihng like that. Would be nice to solve that before the release
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Hmm. That’s the second time today I’ve seen a Word doc eat a man’s soul. Time for a bug report...
Hi Christoph --
[...] with this preference enabled [...]
You mean "disabled", I suppose. I fixed that code loading via MethodAddition in Monticellop-mt.765.
Best, Marcel Am 10.01.2022 17:58:10 schrieb christoph.thiede@student.hpi.uni-potsdam.de christoph.thiede@student.hpi.uni-potsdam.de: Hi Marcel, Tim, all,
with this preference enabled, I would have expected that I would be able to perform all common code management operations in an image that has no access to the changes file. However, here are some things that still fail under this circumstance:
* load/merge a Monticello version - MethodAddition>>#createCompiledMethod does not honor AcceptsLoggingOfCompilation, and neither does MCMethodDefinition>>#asMethodAddition. * re-classifying methods in a browser (or renaming a category)
See also all senders to #logMethodSource:forMethodWithNode:inCategory:withStamp:notifying:. I wonder whether this method should check AcceptsLoggingOfCompilation itself, or whether we need to make all senders aware of that preference. It would be really great to be able to open multiple instances of an image in parallel for throwaway experiments. :-)
Best, Christoph
--- Sent from Squeak Inbox Talk [https://github.com/hpi-swa-lab/squeak-inbox-talk]
On 2022-01-03T18:44:06+01:00, christoph.thiede@student.hpi.uni-potsdam.de wrote:
Fantastic! I'm already looking forward to make use of this in my TelegramSmalltalkBot! :-)
Until then, I wonder whether we should write method changes to the #source attribute of the compiled method in question so that you do not loose your temp names after accepting when the change file is unavailable. See CompiledMethod >> #getSourceFor:in:. What do you think? :-)
Best, Christoph
Sent from Squeak Inbox Talk
On 2021-12-26T07:21:46+00:00, commits at source.squeak.org wrote:
Marcel Taeumel uploaded a new version of Kernel to project The Trunk: http://source.squeak.org/trunk/Kernel-mt.1437.mcz
==================== Summary ====================
Name: Kernel-mt.1437 Author: mt Time: 26 December 2021, 8:21:42.050619 am UUID: 28086a0b-8543-4f44-9c9f-7e63d3028f7f Ancestors: Kernel-ct.1436
Makes #acceptsLoggingOfCompilation a preference that can be disabled. See commentary #logCompiledSources. Classes can still override this preference but should follow a "super acceptsLoggingOfCompilation and: [...]" pattern.
Thanks to Tim (tpr) for figuring out the mechanics and testing it throughout the year!
=============== Diff against Kernel-ct.1436 ===============
Item was changed: Behavior subclass: #ClassDescription ????instanceVariableNames: 'instanceVariables organization'
- ????classVariableNames: 'AcceptsLoggingOfCompilation TraitImpl'
- ????classVariableNames: 'TraitImpl'
????poolDictionaries: '' ????category: 'Kernel-Classes'!
!ClassDescription commentStamp: '<historical>' prior: 0! I add a number of facilities to basic Behaviors: ????Named instance variables ????Category organization for methods ????The notion of a name of this class (implemented as subclass responsibility) ????The maintenance of a ChangeSet, and logging changes on a file ????Most of the mechanism for fileOut. ???? I am an abstract class, in particular, my facilities are intended for inheritance by two subclasses, Class and Metaclass.
The slots 'organization' and 'methodDict' should ONLY be accessed by message in order for things to work during ImageSegment>>discoverActiveClasses (q.v.).!
Item was added:
- ----- Method: ClassDescription class>>logCompiledSources (in category 'compiling') -----
- logCompiledSources
- ????<preference: 'Log compilations to changes file'
- ????????category: 'general'
- ????????description: 'If enabled, the code being compiled will get logged to the changes file. Disabling allows loading code with no changes file in use. See also #warnIfNoChangesFile and #warnIfNoSourcesFile and #readDocumentAtStartup. You can configure a silent image/DoItFirst for, e.g., server environments.'
- ????????type: #Boolean>
- ????^ AcceptsLoggingOfCompilation ifNil: [true]!
Item was added:
- ----- Method: ClassDescription class>>logCompiledSources: (in category 'compiling') -----
- logCompiledSources: aBoolean
- ????^ AcceptsLoggingOfCompilation := aBoolean!
Item was changed: ----- Method: ClassDescription>>acceptsLoggingOfCompilation (in category 'compiling') ----- acceptsLoggingOfCompilation ????"weird name is so that it will come lexically before #compile, so that a clean build can make it through. 7/7/96 sw"
- ????^AcceptsLoggingOfCompilation ifNil: [true]!
- ????^ true!
Would it be more flexible as a class-instance var even with no added complexity?
On Sun, Dec 26, 2021 at 1:21 AM commits@source.squeak.org wrote:
Marcel Taeumel uploaded a new version of Kernel to project The Trunk: http://source.squeak.org/trunk/Kernel-mt.1437.mcz
==================== Summary ====================
Name: Kernel-mt.1437 Author: mt Time: 26 December 2021, 8:21:42.050619 am UUID: 28086a0b-8543-4f44-9c9f-7e63d3028f7f Ancestors: Kernel-ct.1436
Makes #acceptsLoggingOfCompilation a preference that can be disabled. See commentary #logCompiledSources. Classes can still override this preference but should follow a "super acceptsLoggingOfCompilation and: [...]" pattern.
Thanks to Tim (tpr) for figuring out the mechanics and testing it throughout the year!
=============== Diff against Kernel-ct.1436 ===============
Item was changed: Behavior subclass: #ClassDescription instanceVariableNames: 'instanceVariables organization'
classVariableNames: 'AcceptsLoggingOfCompilation TraitImpl'
classVariableNames: 'TraitImpl' poolDictionaries: '' category: 'Kernel-Classes'!
!ClassDescription commentStamp: '<historical>' prior: 0! I add a number of facilities to basic Behaviors: Named instance variables Category organization for methods The notion of a name of this class (implemented as subclass
responsibility) The maintenance of a ChangeSet, and logging changes on a file Most of the mechanism for fileOut.
I am an abstract class, in particular, my facilities are intended for inheritance by two subclasses, Class and Metaclass.
The slots 'organization' and 'methodDict' should ONLY be accessed by message in order for things to work during ImageSegment>>discoverActiveClasses (q.v.).!
Item was added:
- ----- Method: ClassDescription class>>logCompiledSources (in category
'compiling') -----
- logCompiledSources
<preference: 'Log compilations to changes file'
category: 'general'
description: 'If enabled, the code being compiled will get
logged to the changes file. Disabling allows loading code with no changes file in use. See also #warnIfNoChangesFile and #warnIfNoSourcesFile and #readDocumentAtStartup. You can configure a silent image/DoItFirst for, e.g., server environments.'
type: #Boolean>
^ AcceptsLoggingOfCompilation ifNil: [true]!
Item was added:
- ----- Method: ClassDescription class>>logCompiledSources: (in category
'compiling') -----
- logCompiledSources: aBoolean
^ AcceptsLoggingOfCompilation := aBoolean!
Item was changed: ----- Method: ClassDescription>>acceptsLoggingOfCompilation (in category 'compiling') ----- acceptsLoggingOfCompilation "weird name is so that it will come lexically before #compile, so that a clean build can make it through. 7/7/96 sw"
^AcceptsLoggingOfCompilation ifNil: [true]!
^ true!
On 2022-01-09, at 5:18 PM, Chris Muller asqueaker@gmail.com wrote:
Would it be more flexible as a class-instance var even with no added complexity?
Interesting idea - you mean so that it would provide a different way for some classes to not log? The issue that would cause for the use I had in mind is that I wanted a global switch so it can be flipped with one preference. I guess that for the current usage I have it would in fact be tolerable for it to be restricted to a small number of classes.
The general case I had in mind though was as a part of the ignore lack of source/changes settings; consider a server image where you want to be able to load updates (rather like the Personal SqueakSource image, as an example) without having a growing changes file. Or, sometihng I tried (and failed ) to do for the Raspberry Pi Scratch project, allowing users to drop a code file to add some new hardware driver; I'll try adding that sometime now this preference is in place.
What I'm not convinced of is whether this completes the job wrt MC loading. Any thoughts?
On Sun, Dec 26, 2021 at 1:21 AM commits@source.squeak.org wrote: Marcel Taeumel uploaded a new version of Kernel to project The Trunk: http://source.squeak.org/trunk/Kernel-mt.1437.mcz
==================== Summary ====================
Name: Kernel-mt.1437 Author: mt Time: 26 December 2021, 8:21:42.050619 am UUID: 28086a0b-8543-4f44-9c9f-7e63d3028f7f Ancestors: Kernel-ct.1436
Makes #acceptsLoggingOfCompilation a preference that can be disabled. See commentary #logCompiledSources. Classes can still override this preference but should follow a "super acceptsLoggingOfCompilation and: [...]" pattern.
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Fractured Idiom:- PRO BOZO PUBLICO - Support your local clown
squeak-dev@lists.squeakfoundation.org