I have the final ANSI Smalltalk standard as published.  I obviously
cannot give it to you, but I *can* tell you that painfully few of the
obvious errors in the 1.9 draft were corrected. For example, the
DateAndTime class.  The basic idea is sound, but we are told that the
range of zone offsets is -12 hours to +12 hours.  Well, I live in a
country where the local time is UTC+13 hours for half the year and
part of the country gets up to UTC+13 hours 45 minutes.  Then there's
the Line Islands that get up to +14 hours...  Worse than that, the
operations on DateAndTime literally *cannot* be implemented as
specified, as they require you to know the leap second rules for
thousands of years in the future.  And the standard appears to assume
that all places where the offset from UTC is such and such at one time
has the same offset at all times.  It sort of muddles up time zones
with zone OFFSETS and then forgets about zones.  The standard also
suffers from being pre-Unicode, so it effectively assumes that random
access by bytes makes sense in external text files.

There's another problem with the standard, which is that nobody much
seems to have care about it once they'd finished with it.
Case in point: the way to open a file in ANSI Smalltalk is to send a
message to FileStream.  Note only did Squeak and Pharo never bother to
implement the standard messages for this purpose, Pharo has even
deleted the class.

I'll get back to this tomorrow but my battery is about to say bye-bye.

On Sun, 29 Jun 2025 at 23:29, Alok <zhalo...@gmail.com> wrote:
>
> Thnx a lot Richard for such great feedback. We'll definitely update the repo 
> with all the necessary changes.
>
> Thanks Stephane for sharing all the resources. I'll definitely go through 
> ANSI :)
>
>
> On Sun, 29 Jun, 2025, 13:40 Sebastian Jordan, <sebastian.jor...@inria.fr> 
> wrote:
>>
>> Hello Richard,
>>
>> Thanks for your feedback. Just for context we are doing this project for the 
>> Google Summer of Code. I agree that the buffer should be polymorphic with 
>> the OrderedCollection.
>> Yes, we should signal empty collection when accesing  an empty buffer (7)
>>
>> We will rok on that and come back to you
>> Sebastian
>>
>> Le 27 juin 2025 à 12:23, Richard O'Keefe via Pharo-users 
>> <pharo-users@lists.pharo.org> a écrit :
>>
>> My own Smalltalk library (and yes, I've tried to put it on github, I
>> don't know what I'm doing wrong)
>> includes Deque and BoundedDeque, both descendants of Collection.
>> Using addLast/removeLast gives you a stack (use #last for peeking)
>> Using addLast/removeFirst gives you a queue. (use #first for peeking)
>>
>> (1) I am puzzled why there are separate FIFO and LIFO classes rather
>> than a single BoundedDeque.
>>     -- This has implications for performance.
>> (2) I am puzzled why #withCapacity: is used rather than #new:,
>> familiar from OrderedCollection.
>>    -- These two points together make it hard to just swap
>> OrderedCollection and ?IFOBuffer.
>> (3) I am puzzled why #clear is used instead of the familiar #removeAll.
>>    -- See note on question 2.
>> (4) I am extremely puzzled why ALL, like ALL, of the internals of the
>> data structure are exposed.
>>    Did encapsulation fall out of favour and I didn't get the memo?
>> (5) It looks as though calling #capacity: at the wrong time can
>> destroy the integrity of one of
>>     these containers, but there is nothing sayiing "don't do that".
>> (6) I am puzzled that they are not Collections.
>> (7) I am puzzled why trying to access an element in an empty buffer
>> does not signal
>>    a CollectionIsEmpty exception
>>    -- Is this related to (6)?
>>
>> The structure, with two separate classes and key performance-essential
>> methods being
>> template methods, hurts performance by about a factor of two in my tests.
>>
>> Now Pharo has a design MOOC and if Stephane Ducasse says "this is
>> great", these things
>> that puzzle me must be good design.  I would like to improve my
>> skills, so *why* is this good design?
>> (As it happens, I *have* had occasion to 'push' from both ends of a
>> single Deque.)
>>
>> None of this is meant as criticism of the generosity or competence of
>> the authors.  It expresses
>> genuine puzzlement.  Like when I implemented deques I could not
>> imagine not making them
>> Collections.  Principle of Least Surprise and all that.  Maybe I
>> should be thinking differently.
>>
>>
>> On Fri, 27 Jun 2025 at 20:10, stephane ducasse via Pharo-users
>> <pharo-users@lists.pharo.org> wrote:
>>
>>
>> Thanks this is great!
>>
>> On 18 Jun 2025, at 12:13, Alok via Pharo-users <pharo-users@lists.pharo.org> 
>> wrote:
>>
>> Hello Everyone,
>> We're excited to share a new addition to the pharo-containers. An efficient 
>> Circular Buffer implementation, developed as part of Google Summer of Code 
>> 2025 project under the mentorship of Gordana Rakic and Sebastian Jordan 
>> Montaño.
>>
>> This package provides fixed-size buffers supporting both FIFO (queue-style) 
>> and LIFO (stack-style) behavior. It’s designed for use cases such as 
>> streaming data, undo/redo functionality, chat or browser history & more.
>>
>> You can find the repo here: Containers-Buffer
>> The README includes usage examples, installation steps etc.
>>
>> Feedback, suggestions, and contributions are very welcome !
>> ThankYou !
>> Alok Pathak
>> GSoC'25 Contributor
>>
>>
>> Stéphane Ducasse
>> http://stephane.ducasse.free.fr
>> 06 30 93 66 73
>>
>> "If you knew today was your last day on earth, what would you do 
>> differently? ....ESPECIALLY if, by doing something different, today might 
>> not be your last day on earth.” Calvin & Hobbes
>>
>>
>>
>>
>>
>>

Reply via email to