Lux.jl VS clasp

Compare Lux.jl vs clasp and see what are their differences.

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
Lux.jl clasp
4 47
429 2,508
7.9% 1.4%
9.5 9.7
4 days ago 1 day ago
Julia Common Lisp
MIT License -
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

Lux.jl

Posts with mentions or reviews of Lux.jl. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-27.
  • Julia 1.10 Released
    15 projects | news.ycombinator.com | 27 Dec 2023
  • [R] Easiest way to train RNN's in MATLAB or Julia?
    1 project | /r/MachineLearning | 24 Jan 2023
    There is also the less known Lux.jl package: https://github.com/avik-pal/Lux.jl
  • “Why I still recommend Julia”
    11 projects | news.ycombinator.com | 25 Jun 2022
    Can you point to a concrete example of one that someone would run into when using the differential equation solvers with the default and recommended Enzyme AD for vector-Jacobian products? I'd be happy to look into it, but there do not currently seem to be any correctness issues in the Enzyme issue tracker that are current (3 issues are open but they all seem to be fixed, other than https://github.com/EnzymeAD/Enzyme.jl/issues/278 which is actually an activity analysis bug in LLVM). So please be more specific. The issue with Enzyme right now seems to moreso be about finding functional forms that compile, and it throws compile-time errors in the event that it cannot fully analyze the program and if it has too much dynamic behavior (example: https://github.com/EnzymeAD/Enzyme.jl/issues/368).

    Additional note, we recently did a overhaul of SciMLSensitivity (https://sensitivity.sciml.ai/dev/) and setup a system which amounts to 15 hours of direct unit tests doing a combinatoric check of arguments with 4 hours of downstream testing (https://github.com/SciML/SciMLSensitivity.jl/actions/runs/25...). What that identified is that any remaining issues that can arise are due to the implicit parameters mechanism in Zygote (Zygote.params). To counteract this upstream issue, we (a) try to default to never default to Zygote VJPs whenever we can avoid it (hence defaulting to Enzyme and ReverseDiff first as previously mentioned), and (b) put in a mechanism for early error throwing if Zygote hits any not implemented derivative case with an explicit error message (https://github.com/SciML/SciMLSensitivity.jl/blob/v7.0.1/src...). We have alerted the devs of the machine learning libraries, and from this there has been a lot of movement. In particular, a globals-free machine learning library, Lux.jl, was created with fully explicit parameters https://lux.csail.mit.edu/dev/, and thus by design it cannot have this issue. In addition, the Flux.jl library itself is looking to do a redesign that eliminates implicit parameters (https://github.com/FluxML/Flux.jl/issues/1986). Which design will be the one in the end, that's uncertain right now, but it's clear that no matter what the future designs of the deep learning libraries will fully cut out that part of Zygote.jl. And additionally, the other AD libraries (Enzyme and Diffractor for example) do not have this "feature", so it's an issue that can only arise from a specific (not recommended) way of using Zygote (which now throws explicit error messages early and often if used anywhere near SciML because I don't tolerate it).

    So from this, SciML should be rather safe and if not, please share some details and I'd be happy to dig in.

  • The Julia language has a number of correctness flaws
    19 projects | news.ycombinator.com | 16 May 2022
    Lots of things are being rewritten. Remember we just released a new neural network library the other day, SimpleChains.jl, and showed that it gave about a 10x speed improvement on modern CPUs with multithreading enabled vs Jax Equinox (and 22x when AVX-512 is enabled) for smaller neural network and matrix-vector types of cases (https://julialang.org/blog/2022/04/simple-chains/). Then there's Lux.jl fixing some major issues of Flux.jl (https://github.com/avik-pal/Lux.jl). Pretty much everything is switching to Enzyme which improves performance quite a bit over Zygote and allows for full mutation support (https://github.com/EnzymeAD/Enzyme.jl). So an entire machine learning stack is already seeing parts release.

    Right now we're in a bit of an uncomfortable spot where we have to use Zygote for a few things and then Enzyme for everything else, but the custom rules system is rather close and that's the piece that's needed to make the full transition.

clasp

Posts with mentions or reviews of clasp. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-11-15.
  • I Accidentally a Scheme
    2 projects | news.ycombinator.com | 15 Nov 2023
    I accidentally a Common Lisp that interoperates with C++ (https://github.com/clasp-developers/clasp.git). We would also like to move beyond BDWGC and Whiffle looks interesting. I will reach out to you and maybe we can chat about it.
  • Val, a high-level systems programming language
    10 projects | news.ycombinator.com | 18 Jul 2023
    Clasp might be such a language, it seems.

    https://github.com/clasp-developers/clasp

  • The jank programming language (by Jeaye Wilkerson)
    1 project | /r/Clojure | 22 Jun 2023
    /u/jeaye are you aware of CLASP? https://github.com/clasp-developers/clasp https://www.youtube.com/watch?v=mbdXeRBbgDM
  • Clasp v2.3.0 · Bytecode compiled images, preliminary Apple Silicon support, LLVM16.
    1 project | /r/lisp | 5 Jun 2023
  • Proof of Concept clang plugin that automatically binds C/C++ -> Lua
    3 projects | /r/cpp | 3 Jun 2023
    Sounds to me like CLASP; it automatically exports C++ objects to be used from Common Lisp also via llvm.
  • Running Lisp in production @ grammarly
    1 project | /r/lisp | 24 Jan 2023
    Now, the difference of compiling speed of SBCL and CCL is not so big. Look at cl-benchmark, LispWorks is really fast, CCL is on par with Allegro, SBCL is close to CCL. Or https://github.com/clasp-developers/clasp/wiki/Relative-Compile-Performance-of-clasp, it depends on specific project (SBCL sometimes faster, slower, alike), overall difference is not big.
  • What help is needed for Lisp community in order to make Lisp more popular?
    2 projects | news.ycombinator.com | 25 Dec 2022
    So..

    "Why do you want to make Lisp more popular? If you were sucessful, what would be different in the world, and why is that desirable to you?"

    Normally at this point I'd listen to the response, and ask more questions based on that. That would wind up with a very, very deep thread, so I'll break a cardinal rule and pre-guess at some answers.

    This kind of question comes up pretty frequently. In many cases, I suspect the motivation behind the question is "Wow! Here's this cool tool I've discovered. I want to make something really useful with it. I want to do it as part of a community effort; share my excitement with others, share in their excitement, and know that what I'm making is useful because others find it desirable and are excited by it." The field could be cooking, sports, old machine tools, tiny homes, or demo scene. Its the fundemental driver for most content on HN, YouTube, Instructables, and such. It is a Good Thing.

    If that is your motivator, then my suggestion is to find something that bugs you and fix it. You've already decided you're only interested in code, not other aspects. You said you preferred vim, but the emacs ecosystem has a very rich set of sharp edges that need filing off, and a rich set of tools with which to attack them.

    One example: even after 50 years there's no open IDE which allows you to easily globally rename a Lisp identifier. I don't know about LispWorks or other proprietary environments, but you can't in emacs or vim do a right-click on "foo" in "(defun foo ()...)" and select a command which automatically renames it in all invocations. [Queue lots of "but you can..." replies here.] I don't think vim is up to the task of doing this internally. It would be possible in emacs; but would require a huge effort with lots of help from other people. If you emerged alive from that rabbit warren you'd join the company of Certified "How Hard Could it Be?" Mad Scientists such as Dr. "I just want to draw molecules" Meister [1] and "Wouldn't an OS in Lisp be Cool" Froggey [2].

    [1] https://github.com/clasp-developers/clasp

    [2] Mezzano https://github.com/froggey/Mezzano

  • Linux Kernel 6.1 Released with Initial Rust Code
    12 projects | /r/linux | 11 Dec 2022
    But also, there's a reason why most implementations readily make an effort to provide interoperability tools with a variety of runtimes. Clasp much like ABCL gives access to a whole library of other libraries trivially wrapped to interoperate with at little to no performance to cost (depending on how thin you make the wrappers, mainly).
  • Common Lisp Clasp v2.0.0 released
    1 project | /r/hypeurls | 28 Oct 2022
    1 project | news.ycombinator.com | 28 Oct 2022

What are some alternatives?

When comparing Lux.jl and clasp you can also consider the following projects:

Flux.jl - Relax! Flux is the ML library that doesn't make you tensor

Wren - The Wren Programming Language. Wren is a small, fast, class-based concurrent scripting language.

Enzyme - High-performance automatic differentiation of LLVM and MLIR.

gdb-dashboard - Modular visual interface for GDB in Python

julia - The Julia Programming Language

CL-CXX-JIT - Common Lisp and CXX interoperation with JIT

Enzyme.jl - Julia bindings for the Enzyme automatic differentiator

graalvm-clojure - This project contains a set of "hello world" projects to verify which Clojure libraries do actually compile and produce native images under GraalVM.

StatsBase.jl - Basic statistics for Julia

SICL - A fresh implementation of Common Lisp

BetaML.jl - Beta Machine Learning Toolkit

maru - Maru - a tiny self-hosting lisp dialect