Roadmap to version 1.0, please participate #185
Replies: 14 comments 9 replies
-
This is a nice summary of the status quo. I'd love to follow along with your progress to understand the issues more deeply. I think it would be great to reference this issue in your private repo as well so updates are tracked. |
Beta Was this translation helpful? Give feedback.
-
Thanks for leading this effort! @Mec-iS happy to be included and participate in that repo. On the other hand I think that we should not invest time right now in parallelism with WASM. So, I am ok with using |
Beta Was this translation helpful? Give feedback.
-
Thanks for the feedback. Please see the temporary repo We have now a workable version of Current improvements
Next:
The new implementation is very powerful but it takes a little time to get in the mechanics, for example there are some traits that need explicit import (see documentation examples). I think that once The thing I am trying to understand is what is the functional difference in having a |
Beta Was this translation helpful? Give feedback.
-
I managed to implement the new
I am finding quite challenging porting the remaining modules, for now they have been excluded:
The ported modules build successfully.
|
Beta Was this translation helpful? Give feedback.
-
Work is on the way. But I start thinking I have to completely rewrite the
In particular PS. Rust Foundation is awarding grants https://app.smarterselect.com/programs/80957-Rust-Foundation Recap of the new skeletonBasicsnumbersThe library is founded on basic traits provided by linalg
linalg/traitsThe traits in metricsImplementations for metrics (classification, regression, cluster, ...) and distance measure (Euclidean, Hamming, Manhattan, ...). For example: |
Beta Was this translation helpful? Give feedback.
-
New branch |
Beta Was this translation helpful? Give feedback.
-
you can try the new implementation branch using Jupyter Notebooks ---> https://github.com/smartcorelib/smartcore-jupyter (if you don't have access ping me). You can add all the notebooks you want, I would aim to have an introductory walkthrough for the new traits; also it would be useful to port |
Beta Was this translation helpful? Give feedback.
-
it would be nice to organize a brief talk (30 minutes) about the current status and future planning, please provide availability via poll: https://doodle.com/meeting/participate/id/aMQMWnBa |
Beta Was this translation helpful? Give feedback.
-
Thanks everybody for the meeting. These are the alternatives for Arrays in Rust as listed in
Aso the other questions seems to be:
|
Beta Was this translation helpful? Give feedback.
-
Some more links about options we may have:
|
Beta Was this translation helpful? Give feedback.
-
Anybody interested in writing Rust bindings for https://github.com/openai/triton to be used in Smartcore? ---> #207 |
Beta Was this translation helpful? Give feedback.
-
Looks like with the next two PRs we will have finished the porting and will start the process to release |
Beta Was this translation helpful? Give feedback.
-
Tag for release v0.3.0 ready -> https://github.com/smartcorelib/smartcore/releases/tag/v0.3.0 |
Beta Was this translation helpful? Give feedback.
-
Hello people,
Considering the path set by Volodymyr in #108, I have been trying to work his ideas to make the library fitter to current developments in the Rust ecosystem (in particular what has been done in
num-traits
). To do so I had to go through some digging in the current state of the library and I noted some drifting and tried to address it:BaseVector
, and other base structures that have been implemented for specific purposes are present. this makes the library very hard to understand and develop for, we cannot allow to have a specific implementation of general functionalities for every new module/feature.ndarray
andnalgebra
bindings, there are better ways to achieve the same objectives now and those make only the library clunkier (see below about refactoring).So for me a tentative roadmap should look like this:
sklearn
rayon
for example or to support Wasm; both it is not possible at the moment I think given the current maturity of Wasm. There is always time later to provide Wasm-only features once the library is stable). For now I would suggest to forget about Wasm and parallelism to reach stability; once we are at some point around ver 0.9 we can put these back on the table;According to this, I have started reworking the skeleton to adhere to what Volodymyr set down; this meant a quite de-structuring process to clean up things and reach the cleanest possible initial implementation. I have reached a good starting point, with a basic skeleton for these functionalities (mostly implemented as traits):
Number
,RealNumber
,BaseMatrix
,Matrix
,DenseMatrix
and all the matrix-related traits ("decomposable" traits). I have reused as much code as I could for the sake of building a new base skeleton; obviously there is still a lot to add but I think if we stick to this convention we can rebuild the whole library easily in this order:Base-traits: numbers, base vector, base matrix, ...(DONE)what is currently is(DONE. All existing tests passing, new tests welcome)src/linalg
what is insrc/math/distance
what is insrc/metrics
what is insrc/linear
what is insrc/svm
what is insrc/tree
DenseMatrix
and addArrayView
s (I still don't have a precise idea how to reach/improve on zero-copy)If you want to access the current state of the reworking, please drop a message here and I will add you to the temporary private repo I created until the state of the refactoring is presentable -> https://github.com/Mec-iS/smartcore-numbers (just take a look and you will tell me if it is worth to have a completely new history or if you can manage to merge the new changes to the existing history).
This way we can reuse the code and rebuild the library on a more solid foundations. This is the only option I see viable as the current state of the basic structures is so entangled with the implementation that smaller fixes have resulted in a waste of time (I have spent a lot of hours trying to disentangle the current modules while instead it took half-a-day to rebuild the skeleton reusing existing modules).
Please reply or give feedback here and I will invite you to the temporary refactoring repo. This is also a good way for growing the community as anybody that is going to the participate to the refactoring I propose to be added as a code owner to the current team of maintainers if he/she is interested.
Cheers!
Beta Was this translation helpful? Give feedback.
All reactions