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