Skip to content

An effort to consolidate the needs and plans of individuals and organizations using Common Lisp to meet their numerical and scientific computing needs.

Notifications You must be signed in to change notification settings

digikar99/common-lisp-numsci-call-for-needs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

Common Lisp: Numerical and Scientific Computing - Call for Needs

There are numerous numerical and scientific computing libraries in Common Lisp - the awesome-cl list is given below. And yet, it always feels insufficient.

The following repository is an effort to consolidate the needs of multiple individuals and organizations who are using or want to use Common Lisp to meet their numerical and scientific (numsci) computing needs. To contribute, simply create an issue with the following details:

  1. What problems or end-goals do you plan to use the numsci ecosystem for? Examples may include: graphics, physics, biology, etc. Try to be specific, but if it’s difficult to be specific because, say, you are still in an exploratory phase, that’s okay.
  2. What current libraries from those listed below are the closest to meeting your needs?
  3. What non-lisp libraries and framework do you think are the closest to meeting your needs?
  4. Do you think your needs can be met by a thin CFFI wrapper around the foreign libraries? Did you try cl-autowrap? If you tried cl-autowrap but ran into difficulties, could you describe the issues you faced?
  5. What problems do you face while using the lisp numsci libraries, and what is your wish-list for them? When was the last time you wanted to drop Common Lisp in favour of another ecosystem? What made you want to switch, what made you stick?
  6. Any other details you wish to provide.

The issues may eventually be consolidated into this README by issuing Pull requests. If you feel the consolidation process can be improved in some way, feel free to create an issue for that too, and tag it as Meta.

Remarks

OpenCV

awesome-cl list

Source: awesome-cl

Graphics

These are libraries for working with graphics, rather than making GUIs (i.e. widget toolkits), which have their own section.

  • Sketch - A CL framework for the creation of electronic art, graphics, and lots more. [MIT][200].
  • cl-svg - A basic library for producing SVG files. [Expat][14].
  • dufy - exact color manipulation and conversion in various color models. [MIT][200].
  • opticl - a library for representing and processing images. [BSD_2Clause][17].
  • Varjo - Lisp to GLSL translator. [BSD_2Clause][17].
  • Vecto - Simple vector drawing library. [FreeBSD][39].
  • zpng - A library for creating PNG files. [FreeBSD][39].
  • pngload-fast - A PNG (Portable Network Graphics) image format decoder in portable Common Lisp with an emphasis on speed. [MIT][200].

Those are bindings:

  • cl-raylib NEW in 2023 - fully auto-generated Common Lisp bindings to Raylib and Raygui using claw and cffi-object. Apache 2.0.
  • glfw NEW in 2023 - An up-to-date Common Lisp bindings library to the most recent GLFW OpenGL context management library.
  • common-cv - the OpenCV (Open Source Computer Vision Library) binding library for CommonLisp. No license specified.
  • cl-cairo2 - Cairo bindings. [Boost 1.0][54]
  • cl-gd - A library providing an interface to the GD graphics library. [FreeBSD][39].
  • cl-horde3d - FFI bindings to the Horde3D graphics library. Not available on Quicklisp. [EPL 1.0][59]
  • cl-jpeg - Baseline JPEG encoder and decoder library. [3-clause BSD][15].
  • cl-liballegro - Interface and bindings to the Allegro 5 game programming library. [zlib][33].
  • cl-opengl - CFFI bindings to OpenGL, GLU and GLUT APIs. [3-clause BSD][15].
  • cl-sdl2 - Bindings for SDL2 using C2FFI. [Expat][14].
  • CLinch - Common Lisp 2D/3D graphics engine for OpenGL. [FreeBSD][39].
  • donuts - Graphviz interface for Common Lisp. [Expat][14].
  • lispbuilder-sdl - A set of bindings for SDL. [Expat][14].
  • lisp-magick-wand - ImageMagick bindings. [BSD][15]. Not in Quicklisp.
  • okra - CFFI bindings to Ogre. Not available on Quicklisp. [3-clause BSD][15].
  • cl-cuda - A library to use NVIDIA CUDA in Common Lisp programs. [LLGPL][8].

Machine Learning

  • MGL - a machine learning library for backpropagation neural networks, boltzmann machines, gaussian processes and more. [MIT][200].
    • some parts originally contributed by Ravenpack International.
    • used by its author to win the Higgs Boson Machine Learning Challenge.
    • more about the author: he also won the Google AI Challenge in 2010 using Common Lisp, but without MGL, as no machine learning was needed. A related talk (59’, 2013).
  • clml - originally developed by Mathematicl Systems Inc., a Japanese company. With a tutorial. [LLGPL][8].
  • antik - a foundation for scientific and engineering computation in Common Lisp. GPL. Also mgl-mat and LLA.

Numerical and Scientific

  • maxima - Computer Algebra System. [GNU GPL3][2].
  • numcl - Numpy clone in Common Lisp. [LGPL3][9].
  • GSLL - GNU Scientific Library for Lisp; allows the use of the GSL from Common Lisp. [GNU LGPL2.1][11].
  • Xecto - A library for regular array parallelism. [3-clause BSD][15].
  • Petalisp - an attempt to generate high performance code for parallel computers by JIT-compiling array definitions. It works on a more fundamental level than NumPy, by providing even more powerful N-dimensional arrays, but just a few building blocks for working on them. [AGPL-3.0][agpl3].
  • cl-ana - Common Lisp data analysis library with emphasis on modularity and conceptual clarity. It aims to be a general purpose framework for analyzing small and large scale datasets, including binned data analysis and visualization. [GNU GPL3][2].
  • linear-programming – a library for solving linear programming problems. [MIT][200].
  • avm - Efficient and expressive arrayed vector math library with multi-threading and CUDA support. [MIT][200].
  • array-operations - a collection of functions and macros for manipulating Common Lisp arrays and performing numerical calculations with them. [MIT][200].
  • cl-geometry - a system for two dimensional computational geometry for Common Lisp. [MIT][200].
  • Vellum - Data Frames for Common Lisp. BSD_2Clause.
  • rtg-math - a selection of the math routines most commonly needed for making realtime graphics in lisp (2, 3 and 4 component vectors, 3x3 and 4x4 matrices, quaternions, spherical and polar coordinates). BSD_2Clause.
  • origin - A native Lisp graphics math library with an emphasis on performance and correctness. Includes: vectors, matrices (up to 4x4), quaternions, single/double-float support, destructive/non-destructive operations, shaping & intersections. [MIT][200].

Matrix libraries

  • magicl - Matrix Algebra proGrams In Common Lisp based on BLAS/LAPACK and Expokit, by Rigetti Computing. [BSD_3Clause][15].
  • lisp-matrix - A matrix package. [FreeBSD][39].
  • 3d-matrices - A library implementing common matrix calculations, with an emphasis on 2x2,3x3, and 4x4 matrices as commonly used in graphics. It provides some numerical functions as well, but those are not the focus. The library is heavily optimised, so it is not made of pretty code. [zlib][33].
  • clem - a matrix library. [BSD_2Clause][17].

Statistics

  • lisp-stat - an environment for statistical computing, conceptually similar to R, that is also suitable for front-line production deployments. “It grew out of a desire to have an environment for rapidly prototyping analytical and A.I. solutions, and move directly to production environments with minimal friction.”
  • common-lisp-stat - Common Lisp statistics library. [FreeBSD][39].

Units

  • physical-quantities - a library that provides a numeric type with optional unit and/or uncertainty for computations with automatic error propagation. GPL2

Utils

  • cmu-infix - A library for writing infix mathematical notation in Common Lisp. See also polisher.

About

An effort to consolidate the needs and plans of individuals and organizations using Common Lisp to meet their numerical and scientific computing needs.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published