Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Road to Beta #185

Open
4 tasks
qurbonzoda opened this issue Jun 6, 2024 · 2 comments
Open
4 tasks

Road to Beta #185

qurbonzoda opened this issue Jun 6, 2024 · 2 comments

Comments

@qurbonzoda
Copy link
Contributor

The primary focus of our current development is to promote the library from Alpha to Beta stability level. The implementation is already robust, with few bugs reported since its inception. However, some fundamental design choices need to be made before we finalize the library API design. Thus, we will focus on the following areas:

@Sporking
Copy link

Sporking commented Jun 27, 2024

The grouping of these that is used above seems a bit strange. It seems to me that issues #62, #66, #147, and #10 are basically the same issue, but they are grouped in different categories. In each of these, people are requesting true implementations of statically checkable immutable collections (ones which can't be subclassed to be non-immutable).

@rgoldberg
Copy link

Provide implementations of Immutable collections that are not persistent.
immutableOf(…) functions shouldn't be deprecated, and should return Immutable instead of Persistent* #62

#62 is not about Immutable* collections that aren't implemented as Persistent* collections. It's about keeping immutable*Of(…) functions, and their return type being Immutable*. If I need a collection that should never be modified, I do not want to expose functions that could be thought to mutate the collection. I know that the functions won't modify the underlying object, but I don't want to clutter the API of my immutable collection instance with those methods.

When the return type is Immutable*, that gives you the option to later create immutable objects that aren't actually persistent, in case you can optimize some performance or other characteristics.

The addition of a few simple static functions will take almost no maintenance effort, and barely adds to the complexity of the API. It provides more flexibility for future performance optimizations, and provides users a simple way to improve/tailor their usage of the library.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants