# What can Fortran learn from Node.js Standard Library

**URL:** <https://fortran-lang.discourse.group/t/what-can-fortran-learn-from-node-js-standard-library/1460>\
**Category:** GSoC-2021\
**Created:** [June 26, 2021, 6:38pm UTC](https://fortran-lang.discourse.group/t/what-can-fortran-learn-from-node-js-standard-library/1460 "2021-06-26T18:38:26Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![R\_cubed](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/r_cubed/32/263_2.png) [@R\_cubed](https://fortran-lang.discourse.group/u/R_cubed)\
**Post date:** [June 26, 2021, 6:38pm UTC](https://fortran-lang.discourse.group/t/what-can-fortran-learn-from-node-js-standard-library/1460/1 "2021-06-26T18:38:26Z")

</div>

I’ve heard it said that “Software is eating the world.” If that is true, than Node.js is eating software.

The following [link](https://stdlib.io/) is to the Node.js Standard Library project that has an emphasis on numerical computation.

I’d be interested in any thoughts from the expert scientific programmers here on what is lacking. I think the statistics portion leaves a lot to be desired, but it is a decent start.

It is interesting that to build native numerical libraries, they still need gfortran.

Related Discussions

> [@FortranCon 2020 abstract for stdlib](https://fortran-lang.discourse.group/t/fortrancon-2020-abstract-for-stdlib/57):
>
> Authors: [Balint Arady](https://github.com/aradi)[Izaak Beekman](https://github.com/zbeekman)[Neil Carlson](https://github.com/nncarlson)[Ondrej Certik](https://github.com/certik)[Pedro Costa](https://github.com/p-costa)[Milan Curcic](https://github.com/milancuric)[Pierre de Buyl](https://github.com/pdebuyl)[???](https://github.com/fiolj)[???](https://github.com/JHenneberg)[Michael Hirsch](https://github.com/scivision)[Ivan Pribec](https://github.com/ivan-pi)[???](https://github.com/sakamoti)[???](https://github.com/nshaffer)[Jeremie Vandenplas](https://github.com/jvdp1)[Ashwin Vishnu](https://github.com/ashwinvis) Track: Junior presentations (15 + 5 minutes discussion) Presenter: To be confirmed Title: Fortran Standard Library Alternative title: Fortran Standard Library - a community project Abstract: The Fortran Standard, as published by the International Organization for Standardization (ISO), does not incl…

---

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [June 26, 2021, 6:58pm UTC](https://fortran-lang.discourse.group/t/what-can-fortran-learn-from-node-js-standard-library/1460/2 "2021-06-26T18:58:37Z")

</div>

The provided link to the Node.js Standard Library did not work for me, but [it’s also at GitHub](https://github.com/stdlib-js/stdlib). It looks like the JavaScript equivalent of NumPy and SciPy. People are working on having some of the functionality in FPM packages and [stdlib](https://github.com/fortran-lang/stdlib).

## Features

- 150+ [special math functions](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/math/base/special).

[![Demo showcasing special math functions](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/1X/b4208a60b4d7d368c496ef9782553dc6df5acb55.png)](https://camo.githubusercontent.com/8717c7140da7804887d4352dafdee495168f5dad943f4be03813e51a369b2012/68747470733a2f2f63646e2e7261776769742e636f6d2f7374646c69622d6a732f7374646c69622f323033383339333533626337343239376665363431323037323730663739313764326264613536302f646f63732f6173736574732f726561646d652f626173655f7370656369616c5f6d6174682e706e67)

- 35+ [probability distributions](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/stats/base/dists), with support for evaluating probability density functions (PDFs), cumulative distribution functions (CDFs), quantiles, moments, and more.

[![Demo showcasing probability distributions](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/1X/c7fe613db039d67e90a6cc007ae83ca72e1b7f79.png)](https://camo.githubusercontent.com/af506f5ddfd2cead1b52330b18db39f4fb4782c7b192ed43100e918354bacff5/68747470733a2f2f63646e2e7261776769742e636f6d2f7374646c69622d6a732f7374646c69622f653133383835303837393339633036346336396161343365653830656135323731306465353539312f646f63732f6173736574732f726561646d652f626173655f64697374732e706e67)

- 40+ [seedable pseudorandom number generators](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/random/base) (PRNGs).

[![Demo showcasing PRNGs](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/1X/eb533f7312199f55d92da19d5793ee3abb896026.png)](https://camo.githubusercontent.com/a4f3e115e91ab343a393f20ab57ccc25f39b1dfc01be2d7f6c0187313f6b1976/68747470733a2f2f63646e2e7261776769742e636f6d2f7374646c69622d6a732f7374646c69622f383364636430666164393838383333323061386231656663383031623266633165643261303033642f646f63732f6173736574732f726561646d652f626173655f70726e67732e706e67)

- 200+ general [utilities](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/utils) for data transformation, functional programming, and asynchronous control flow.

[![Demo showcasing general utilities](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/1X/c5216824e2511aa484ed3528fada6e886564a713.png)](https://camo.githubusercontent.com/8a1858d22639eca9e769a35dce687f71251fe5d5692134e51c9996a6bc39340a/68747470733a2f2f63646e2e7261776769742e636f6d2f7374646c69622d6a732f7374646c69622f653665656561333165343964366462316236663537616535396432393838643462343237653238352f646f63732f6173736574732f726561646d652f7574696c732e706e67)

- 200+ [assertion utilities](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/assert) for data validation and feature detection.

[![Demo showcasing assertion utilities](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/1X/9c1dc5c30ea71a4414e7f14d1628d4411e578fa8.png)](https://camo.githubusercontent.com/ba5e983b85c1c784a9a533631594a27a2f3cb8b953bd6b58435de6b46883d5d6/68747470733a2f2f63646e2e7261776769742e636f6d2f7374646c69622d6a732f7374646c69622f363937306338623465623534366131303731323733346432323563313538363364623962326339322f646f63732f6173736574732f726561646d652f6173736572742e706e67)

- 50+ [sample datasets](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/datasets) for testing and development.

[![Demo showcasing sample datasets](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/1X/35d96a837fdd426241c71db145ed8237b1feced1.png)](https://camo.githubusercontent.com/f12b619d9300678a992401a789d3b9c302a5546d9542710a68c0d940694993a5/68747470733a2f2f63646e2e7261776769742e636f6d2f7374646c69622d6a732f7374646c69622f663731613338653632323437653331646334376432343866366631623365343334616265623937312f646f63732f6173736574732f726561646d652f64617461736574732e706e67)

- A [plot API](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/plot/ctor) for data visualization and exploratory data analysis.

[![Demo showcasing plot API](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/1X/66c5638dec21327972a216e6a3019aaedb834006.png)](https://camo.githubusercontent.com/873f4b381b90bea8501a33ff8a396c8222647590c6c58216505d20372c4debed/68747470733a2f2f63646e2e7261776769742e636f6d2f7374646c69622d6a732f7374646c69622f333964373531373462323465613261383438323864393632343634333737366131363434373865342f646f63732f6173736574732f726561646d652f706c6f742e706e67)

- Native add-ons for interfacing with BLAS libraries, with pure JavaScript fallbacks.

[![Demo showcasing BLAS APIs](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/1X/65a9ab4ef0f3880479e82a783fa4109d7e13de59.jpeg)](https://camo.githubusercontent.com/2f51398c07965d546b8493d1a0b3ab6d3d12e941b5d10e45e9b6773e27601ad4/68747470733a2f2f63646e2e7261776769742e636f6d2f7374646c69622d6a732f7374646c69622f656665646536616633656639353764613038383338393033623035353834343132363361646638352f646f63732f6173736574732f726561646d652f626173655f626c61732e706e67)

- A [benchmark framework](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/bench/harness) supporting TAP.

[![Demo showcasing benchmark framework](https://global.discourse-cdn.com/free1/uploads/fortran_lang/original/1X/b079df79d77bcd745a8153f5866abdb9b5f5e898.gif)](https://camo.githubusercontent.com/6fedf58a87393f2627fedb84836b5713b37d8bafa29ec02ca62c653edfbed396/68747470733a2f2f63646e2e7261776769742e636f6d2f7374646c69622d6a732f7374646c69622f343833333034396638643138393535383562643531656336666139376238636130643337633666622f646f63732f6173736574732f726561646d652f62656e63686d61726b2e676966)

- REPL environment with integrated help and examples.

---

<div class="post-metadata">

**Author:** ![R\_cubed](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/r_cubed/32/263_2.png) [@R\_cubed](https://fortran-lang.discourse.group/u/R_cubed)\
**Post date:** [June 26, 2021, 7:04pm UTC](https://fortran-lang.discourse.group/t/what-can-fortran-learn-from-node-js-standard-library/1460/3 "2021-06-26T19:04:01Z")

</div>

Link should work now.

---

<div class="post-metadata">

**Author:** ![certik](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/certik/32/4_2.png) [@certik](https://fortran-lang.discourse.group/u/certik)\
**Post date:** [June 26, 2021, 8:25pm UTC](https://fortran-lang.discourse.group/t/what-can-fortran-learn-from-node-js-standard-library/1460/4 "2021-06-26T20:25:24Z")

</div>

Thanks @R_cubed. What they have is my vision what `stdlib` should become.

CC @milancurcic, what do you think?

---

<div class="post-metadata">

**Author:** ![milancurcic](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/milancurcic/32/2_2.png) [@milancurcic](https://fortran-lang.discourse.group/u/milancurcic)\
**Post date:** [June 27, 2021, 2:48pm UTC](https://fortran-lang.discourse.group/t/what-can-fortran-learn-from-node-js-standard-library/1460/5 "2021-06-27T14:48:38Z")

</div>

Yes, same here.

Like Fortran, JavaScript doesn’t have a standard library, so the motivation is similar too.
