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

Nelson modules and package management #7

Open
JohanMabille opened this issue Dec 23, 2022 · 11 comments
Open

Nelson modules and package management #7

JohanMabille opened this issue Dec 23, 2022 · 11 comments
Labels
enhancement New feature or request question Further information is requested

Comments

@JohanMabille
Copy link
Collaborator

Hi,

Thanks for this amazing project! We are considering packaging nelson for conda-forge, and I would like to know if the additional modules of Nelson (i.e. not in this core repo) can be packaged independently. My intuition is that it should be possible if installing a Nelson module consists in copying some files at the right place so that Nelson can find it, but I haven't diven into the details and I wanted to check there was no additional step required.

@Nelson-numerical-software Nelson-numerical-software added enhancement New feature or request question Further information is requested labels Dec 23, 2022
@Nelson-numerical-software
Copy link
Collaborator

Hi,

Nelson is not in version 1.0.0
It is again time to change some things.
About modules, have you see: https://github.com/Nelson-numerical-software/module_skeleton
For some basic macro .m, 'addpath' not implemented in this minimalist core could do the job.

The main trouble is the definition of the 'core' of Nelson

@Nelson-numerical-software
Copy link
Collaborator

Nelson-numerical-software commented Dec 23, 2022

For me, the minimal core for Nelson requires more dependencies (blas, lapack, openmp, ffi, ...)
You can build it using with main repo:

cmake -DCMAKE_BUILD_TYPE=Release -DMINIMAL_BUILD=ON -G "Unix Makefiles" .
cmake --build . -- -j $(nproc)

https://github.com/Nelson-numerical-software/nelson/actions/runs/3730347761/jobs/6327297671

@JohanMabille
Copy link
Collaborator Author

JohanMabille commented Dec 23, 2022

About modules, have you see: https://github.com/Nelson-numerical-software/module_skeleton

Yes, my concern was more can we push the result of nmm into a standalone package that we can install in an environment where Nelson is already installed without additional step (like running a script to register the module somewhere), but from your answer I understand it is possible as long as the addpath function is available in the "core" Nelson.

The main trouble is the definition of the 'core' of Nelson

I agree this might not be easy, however this is not a blocker for packaging Nelson, nor the fact that it is not 1.0 yet (we've been packaging beta for a while, it took almost 20 years to SciPy to go to 1.0, etc ;))

For me, the minimal core for Nelson requires more dependencies (blas, lapack, openmp, ffi, ...)

The advantage of this repo is that it does not depend on any Fortran code, which will make it easier to build for WASM. We can also make a Nelson meta package on conda-forge that would install this minimal repo along with all dependencies from the minimal build of the main repo that are missing from this one.

@Nelson-numerical-software
Copy link
Collaborator

We can try to rethink "format" for the modules external and internal using the current standards but we must keep in mind the "philosophy" of the m language.

Some basic questions/answers:

These changes requires some important modifications.
This must be common with main nelson repository (breaking changes) but it is an interesting task for the future of Nelson :)

@Nelson-numerical-software
Copy link
Collaborator

minimalist-core does not contains any function or builtin.
Maybe, we can try to define a list of builtin required in the minimalist-core.
firsts could be 'addpath' currently available in functions_manager.
(I can try to do this, after 1st january, current todo list is full for this month, sorry)

@Nelson-numerical-software
Copy link
Collaborator

about 'addpath', I create another ticket
#11

@JohanMabille
Copy link
Collaborator Author

JohanMabille commented Dec 28, 2022

minimalist-core does not contains any function or builtin. Maybe, we can try to define a list of builtin required in the minimalist-core. firsts could be 'addpath' currently available in functions_manager. (I can try to do this, after 1st january, current todo list is full for this month, sorry)

Thanks! And no hurry, we start to "play" with nelson and try to make a xeus kernel with it, we can iterate on the modules' list of the minimalist core when we have something that works.

@Nelson-numerical-software
Copy link
Collaborator

minimalist-core does not contains any function or builtin. Maybe, we can try to define a list of builtin required in the minimalist-core. firsts could be 'addpath' currently available in functions_manager. (I can try to do this, after 1st january, current todo list is full for this month, sorry)

Thanks! And no hurry, we start to "play" with nelson and try to make a xeus kernel with it, we can iterate on the modules' list of the minimalist core when we have something that works.

No so complicated finally to add 'addpath' see #11 PR will come quickly

@Nelson-numerical-software
Copy link
Collaborator

Nelson-numerical-software commented Dec 28, 2022

'addpath' merged (Happy new year ;))

@JohanMabille
Copy link
Collaborator Author

Thanks a lot!
Happy new year ;)

@Nelson-numerical-software
Copy link
Collaborator

We import some builtin and functions (.m maybe also, currently no here)
Expected list (no new dependency required) modules:

  • types
  • string
  • single
  • overload
  • logical
  • integer
  • sparse (need to be investigate if eigen is enough)
  • handle (basic type)
  • function handle
  • error_manager
  • elementary_functions (partially)
  • constructors
  • time could be also interesting but need to change code (boost -> c++17)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants