There was a question on Stack overflow regarding this:
https://stackoverflow.com/questions/22604477/how-do-i-make-really-large-tex…
And I was going to reply to simply use the font menu to add a new size. This is what that used to look like:
Ugly, maybe, but functional. But this menu is gone, you now get a font dialog, which is missing the option to use an arbitrary size. Can we bring that back?
- Bert -
http://wp.me/pty6G-dN
--------------
All members were present. With so much going on in the community
recently, we had a lively discussion in the board meeting today. This
was a make-up meeting due to an untimely outage with Google Hangouts
during our normal meeting time last week.
Thank you, Ken Causey!
On March 10th, Ken officially announced his retirement as leader of
the box-admins team. Ken had been warning us for some time that he
was winding down his involvement. There is not a soul in the
community who will not miss his professional-level service as our
server admin. Thank you Ken, for a job well-done.
Check out PathView
Recently Michael Perscheid announced PathView, a new IDE tools
collection. While it didn't generate much discussion on the mailing
list yet, it is very much worth having a look. There were definite,
good first-impressions about PathView expressed by the board members.
New Release 4.5 and a new squeak.org Website
The release of Squeak 4.5 coincides with a new draft-release of a new
squeak.org website, led by Chris Cunnington. Altitude is the newest
web-framework under development for Squeak. Redoing the squeak.org
with Altitude lets us change up the years-old look of the old site
while allowing us to exercise and grow into Altitude.
The reception to the new site has been positive. Chris C. has
responded to several change requests. Naturally, all in the community
care about Squeak's web-presence, but updates desired by the community
should not be the burden of a single individual. The next steps are
to discover what role(s) and webteam-level access permissions are
needed to enable community-level participation in the new site.
Squeak 5!
There was consensus that we would like Squeak release cycles to be a
bit shorter :) -- preferably every six months. Eliot believes Spur,
and the associated image-format changes needed to support it, will be
ready well in time for the next release, which will be called Squeak 5
on account of the image-format change. Craig's Spoon / Naiad work
might be put in as Squeak 6, then.
[Please accept our apologies if you receive multiple copies of this call]
[Please send to interested colleagues / mailing-lists]
************************************************************************************************************
CALL FOR PAPERS
IWST14 -- International Workshop on Smalltalk Technologies
Cambridge, England; August 19, 2014
http://www.esug.org/Conferences/2014/IWST14
************************************************************************************************************
-------------------
Goals and scopes
-------------------
The goals of the workshop is to create a forum around advances or
experience in Smalltalk and to trigger discussions and exchanges of ideas.
The topics of your paper can be on all aspect of Smalltalk, theoretical as
well as practical. Participants are invited to submit research articles or
industrial papers. This year we want to open two different tracks: one
research track and one industrial track with less scientific constraints.
We expect papers of three kinds:
Short position papers describing emerging ideas
Long research papers with deeper description of experiments and of research
results.
Industrial papers with presentation of real and innovative Smalltalk
applications; this kind of paper should enlighten why Smalltalk is really
appropriate for your application.
We will not enforce any length restriction.
--------------------
Important Dates
--------------------
Submission deadline: June 15, 2014
Notification deadline: July 15, 2014
Workshop : August 19, 2014
All accepted papers will be published in ACM DL (To be confirmed)
-------------------
Topics
-------------------
We welcome contributions on all aspects, theoretical as well as practical,
of Smalltalk related topics such as:
Aspect-oriented programming,
Design patterns,
Experience reports,
Frameworks,
Implementation, new dialects or languages implemented in Smalltalk,
Interaction with other languages,
Meta-programming and Meta-modeling,
Tools
-------------------
Best Paper Award
-------------------
To encourage the submission of high-quality papers, the IWST organizing
committee is very proud to announce a Best Paper Award for this edition of
IWST.
We thank Lam Research Corporation for its financial contribution that makes
it possible a price for the three best papers: 1000 USD for first place,
600 USD for second place and 400 USD for third place.
The ranking will be decided by the program committee during the review
process. The awards will be given during the ESUG conference social event.
The Best Paper Award will take place only with a minimum of six
submissions. Notice also that to be illegible, a paper must be presented at
the workshop by one of the author and that the presenting author must be
registered at the ESUG conference.
-------------------
Publication
-------------------
Both submissions and final papers must be prepared using the ACM SIGPLAN 10
point format. Templates for Word and LaTeX are available at
http://www.acm.org/sigs/sigplan/authorInformation.htm. This site also
contains links to useful informations on how to write effective submissions.
-------------------
Submission
-------------------
All submissions must be sent via easychair:
https://www.easychair.org/conferences/?conf=iwst2014
-------------------
Program chairs
-------------------
Alain Plantec (UMR 6265 Lab-STICC, University of Brest, France)
Jannik Laval (Ecole des Mines de Douai, France)
--
~~Jannik Laval~~
École des Mines de Douai
Enseignant-chercheur
http://www.jannik-laval.euhttp://car.mines-douai.fr/
--
~~Jannik Laval~~
École des Mines de Douai
Enseignant-chercheur
http://www.jannik-laval.euhttp://car.mines-douai.fr/
Hi Phil, Hi ClassBuilder people,
On Mar 25, 2014, at 5:16 AM, "phil(a)highoctane.be" <phil(a)highoctane.be>
wrote:
On Tue, Mar 25, 2014 at 1:05 PM, Igor Stasenko <siguctua(a)gmail.com> wrote:
>
>
>
> On 24 March 2014 22:54, phil(a)highoctane.be <phil(a)highoctane.be> wrote:
>
>> On Mon, Mar 24, 2014 at 8:23 PM, Alexandre Bergel <
>> alexandre.bergel(a)me.com> wrote:
>>
>>> >> I am working on a memory model for expandable collection in Pharo.
>>> Currently, OrderedCollection, Dictionary and other expandable collections
>>> use a internal array to store their data. My new collection library recycle
>>> these array instead of letting the garbage collector dispose them. I simply
>>> insert the arrays in an ordered collection when an array is not necessary
>>> anymore. And I remove one when I need one.
>>> >
>>> > Hm, is that really going to be worth the trouble?
>>>
>>> This technique reduces the consumption of about 15% of memory.
>>>
>>> >> At the end, #add: and #remove: are performed on these polls of
>>> arrays. I haven't been able to spot any problem regarding concurrency and I
>>> made no effort in preventing them. I have a simple global collection and
>>> each call site of "OrderedCollection new" can pick an element of my global
>>> collection.
>>> >>
>>> >> I have the impression that I simply need to guard the access to the
>>> global poll, which is basically guarding #add: #remove: and #includes:
>>> >
>>> > One of the AtomicCollections might be the right things for you?
>>>
>>> I will have a look at it.
>>>
>>> >> What is funny, is that I did not care at all about multi-threading
>>> and concurrency, and I have not spotted any problem so far.
>>> >
>>> > There isn't any 'multi-threading' like in Java, you got a much more
>>> control version: cooperative on the same priority, preemptive between
>>> priorities.
>>> > So, I am not surprised. And well, these operations are likely not to
>>> be problematic when they are racy, except when the underling data structure
>>> could get into an inconsistent state itself. The overall operations
>>> (adding/removing/searing) are racy on the application level anyway.
>>> >
>>> > However, much more interesting would be to know what kind of benefit
>>> do you see for such reuse?
>>> > And especially, with Spur around the corner, will it still pay off
>>> then? Or is it an application-specific optimization?
>>>
>>> I am exploring a new design of the collection library of Pharo. Not all
>>> the (academic) ideas will be worth porting into the mainstream of Pharo.
>>> But some of them yes.
>>>
>>> Thanks for all your help guys! You're great!
>>>
>>> Cheers,
>>> Alexandre
>>>
>>> --
>>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>>> Alexandre Bergel http://www.bergel.eu
>>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>>
>>>
>>>
>>>
>> An interesting method I stumbled upon which may help in understanding how
>> these things do work.
>>
>> BlockClosure>>valueUnpreemptively
>> "Evaluate the receiver (block), without the possibility of preemption
>> by higher priority processes. Use this facility VERY sparingly!"
>> "Think about using Block>>valueUninterruptably first, and think about
>> using Semaphore>>critical: before that, and think about redesigning your
>> application even before that!
>> After you've done all that thinking, go right ahead and use it..."
>> | activeProcess oldPriority result semaphore |
>> activeProcess := Processor activeProcess.
>> oldPriority := activeProcess priority.
>> activeProcess priority: Processor highestPriority.
>> result := self ensure: [activeProcess priority: oldPriority].
>>
>>
> I would not recommend you to use this method for anything.
> This method heavily relies on how process scheduler works, and in case of
> any changes, it may break everything.
> For the sake of programming, one shall never assume there is a way to
> "stop the world while i busy doing something".
>
If you reshape the world, it makes sense. I was looking at how classes were
migrated, that's why I found it.
And all of the new Pharo way of doing these things.
Hey, it is becoming really cool down there. Martin and Camille have been
hard at work. Kudos!
migrateClasses: old to: new using: anInstanceModification
instanceModification := anInstanceModification.
old ifEmpty: [ ^ self ].
[
1 to: old size do: [ :index |
self updateClass: (old at: index) to: (new at: index)].
old elementsForwardIdentityTo: new.
" Garbage collect away the zombie instances left behind in garbage memory
in #updateInstancesFrom: "
" If we don't clean up this garbage, a second update would revive them with
a wrong layout! "
" (newClass rather than oldClass, since they are now both newClass) "
Smalltalk garbageCollect.
] valueUnpreemptively
The global GC here is pretty unfortunate. It is there because the VM used
to leave old instances lying around. It works like this:
we want to reshape instances of class C, e.g. by adding an inst var, and so
1. create C', which is C plus an inst var
2. create a parallel set of instances of class C', one for each instance of
class C
3. for each corresponding pair of instances copy state from the instance of
C to the instance of C'
4. forward-become the instances of C to the instances of C' (now no
references to the instances of C remain)
5. become C to C' (now C' is the new C)
The bug is that the old instances of C are still in the heap. Because of
the become in 5. they look like instances of the new C, but are the wrong
size; they lack space for the new inst var. They're not reachable (4.
replaced all references to them with references to the instances of C') but
they can be resurrected through allInstances (someInstance,nextInstance)
which works not by following references from the roots (Smalltalk and the
activeProcess) but by scanning objects in the heap.
However, this was "fixed" in
Name: VMMaker.oscog-eem.254
Author: eem
Time: 11 January 2013, 7:05:37.389 pm
UUID: 74e6a299-691e-4f7d-986c-1a7d3d0ec02c
Ancestors: VMMaker.oscog-eem.253
Fix becomeForward: so that objects whose references are deleted are
freed and can no longer be resurrected via allObjects or allInstances.
The change is to free the objects replaced in a forwardBecome so they are
no longer objects (effectively their class is null (not nil, but 0)). So
they can't be resurrected and hence the global GC is un necessary. The
Newspeak folks, in particular Ryan Macnak, spotted this and encouraged me
to make the change. It of course speeds up instance mutation considerably.
I say fixed because there was a bug tail:
Name: VMMaker.oscog-eem.258
Author: eem
Time: 18 January 2013, 11:01:23.072 am
UUID: da1433f1-de50-475f-be33-f462b300a2ea
Ancestors: VMMaker.oscog-eem.257
Fix becomeForward: when the rootTable overflows. There were two
bugs here. One is that initializeMemoryFirstFree: used to clear the
needGCFlag so if the rootTable overflowed noteAsRoot:headerLoc:'s setting
of the needGCFlag would be undone after the sweep.
The other is that rootTable overflow was indicated by
rootTableCount >= RootTableSize which could be undone by
becomeForward: freeing roots which need to be removed from
the rootTable. At some point in becomeForward the rootTable would
fill but at a later point a root would be freed, causing the table to
become not full.
The fix is two fold. 1. Add an explicit rootTableOverflowed flag
instead of relying on rootTableCount >= RootTableSize.
2. move the clearing of the needGCFlag to the GC routines.
Remove unnecessary senders of needGCFlag: false, and remove
the accessor.
Name: VMMaker.oscog-eem.255
Author: eem
Time: 12 January 2013, 6:28:41.398 pm
UUID: 51e53ec1-8caf-41f6-9293-1088ef4b82d8
Ancestors: VMMaker.oscog-eem.254
[New[Co]]ObjectMemory:
Fix freeing of objects for becomeForward:. Remove freed young
roots from the rootsTable. Filter freed objects pointet to from the
extraRootsTable (because these locations can change it is wrong
to remove entries from the extraRootsTable).
But the bottom line is that, at least on the current Cog VM, that global GC
is unnecessary. David, Tim, this still needs to be folded into
ObjectMemory in the standard interpreter. But doing so is very worth-while.
Monticello loads are noticeably faster.
KR
Phil
>
>
> --
> Best regards,
> Igor Stasenko.
>
Eliot (phone)
> - Maybe the pattern in the background could be replaced:)
Yea, OK. It sucked. I've changed it. You're dentist will love it.
You have to admit, though. You're a pretty rough crowd.
Chris
http://www.youtube.com/watch?v=BHDp9p-CZcE
Changes to Trunk (http://source.squeak.org/trunk.html) in the last 24 hours:
http://lists.squeakfoundation.org/pipermail/packages/2014-March/006989.html
Name: CollectionsTests-topa.215
Ancestors: CollectionsTests-dtl.214
When a stream is created on a collection, it tries to keep
using that collection instead of copying, even in the case
of mutation of the original collection.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2014-March/006990.html
Name: Collections-topa.565
Ancestors: Collections-ul.564
When a stream is created on a collection, it tries to keep
using that collection instead of copying, even in the case
of mutation of the original collection.
The code removed prevented this.
=============================================
OK, I see this works anyway because ByteString>>at:put: will handle the
case and use becomeForward:
But should we rely on this expectation? It comes from a Smalltalk where
become: were cheap.
For example, WriteStream>>pastEndPut: does not preserve collection identity
2014-03-25 14:28 GMT+01:00 <commits(a)source.squeak.org>:
> Tobias Pape uploaded a new version of Collections to project The Trunk:
> http://source.squeak.org/trunk/Collections-topa.565.mcz
>
> ==================== Summary ====================
>
> Name: Collections-topa.565
> Author: topa
> Time: 25 March 2014, 2:28:36.459 pm
> UUID: b7c264b3-1e69-494d-8979-6f71bc9b846d
> Ancestors: Collections-ul.564
>
> When a stream is created on a collection, it tries to keep
> using that collection instead of copying, even in the case
> of mutation of the original collection.
>
> The code removed prevented this.
>
> =============== Diff against Collections-ul.564 ===============
>
> Item was changed:
> ----- Method: WriteStream>>nextPut: (in category 'accessing') -----
> nextPut: anObject
> "Primitive. Insert the argument at the next position in the Stream
> represented by the receiver. Fail if the collection of this stream
> is not an
> Array or a String. Fail if the stream is positioned at its end, or
> if the
> position is out of bounds in the collection. Fail if the argument
> is not
> of the right type for the collection. Optional. See Object
> documentation
> whatIsAPrimitive."
>
> <primitive: 66>
> - ((collection class == ByteString) and: [
> - anObject isCharacter and:[anObject isOctetCharacter not]])
> ifTrue: [
> - collection := (WideString from: collection).
> - ^self nextPut: anObject.
> - ].
> position >= writeLimit
> ifTrue: [^ self pastEndPut: anObject]
> ifFalse:
> [position := position + 1.
> ^collection at: position put: anObject]!
>
>
>
>why are there so many mailing lists? :-/ I think that the webteam should be
>a frequent reader of squeak-dev. :)
That's a good question. I don't know.
Chris