generic-cl VS specialized-function

Compare generic-cl vs specialized-function and see what are their differences.

generic-cl

Generic function interface to standard Common Lisp functions (by alex-gutev)

specialized-function

Julia-like dispatch for Common Lisp (by numcl)
Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
generic-cl specialized-function
13 2
119 60
- -
0.0 0.0
about 2 years ago almost 3 years ago
Common Lisp Common Lisp
MIT License GNU General Public License v3.0 or later
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.

generic-cl

Posts with mentions or reviews of generic-cl. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-02-01.
  • Compiling a Lisp
    2 projects | news.ycombinator.com | 1 Feb 2024
    for those wanting generic +, equality and comparison in CL, there's a nice library: https://alex-gutev.github.io/generic-cl/
  • Adding new types and operators to Lisp
    6 projects | /r/lisp | 24 Feb 2023
    If performance is not a concern, then you can create CLOS classes corresponding to vec3 or mat44, and dispatch the appropriate functions from the generic-cl project by specializing on them.
    6 projects | /r/lisp | 24 Feb 2023
  • Emacs-like editors written in Common Lisp
    11 projects | news.ycombinator.com | 2 Oct 2022
    > And Lisp is almost uniquely able to handle transitions to later standards as I described above. You don't actually have to forfeit backwards compatibility entirely or at all if the changes are handled by moving to a new default base package. :cl-user/:cl become :cl##-user/:cl##

    Go use cl21[0] if you care for this sort of thing.

    > more generic functions would open up more interesting developments later

    generic-cl[1]. But in a prefix-oriented language, I just don't see this as particularly important.

    > you don't necessarily want to bless a particular concurrency model

    You do[2]; this is one of the notable deficiencies in the cl standard that really bites, today. It is being worked on.

    0. http://cl21.org/

    1. https://github.com/alex-gutev/generic-cl

    2. https://www.hpl.hp.com/techreports/2004/HPL-2004-209.pdf

  • From Common Lisp to Julia
    11 projects | news.ycombinator.com | 6 Sep 2022
    So, the article is harsh on CL: YMMV. Also, your goal may vary: I want to build and ship (web) applications, and so far Julia doesn't look attractive to me (at all). Super fast incremental development, build a standalone binary and deploy on my VPS or ship an Electron window? done. Problem(s) solved, let's focus on my app please.

    The author doesn't mention a few helpful things:

    - editor support: https://lispcookbook.github.io/cl-cookbook/editor-support.ht... Emacs is first class, Portacle is an Emacs easy to install (3 clicks), Vim, Atom support is (was?) very good, Sublime Text seems good (it has an interactive debugger with stack frame inspection), VSCode sees good work underway, the Alive extension is new, usable but hard to install yet, LispWorks is proprietary and is more like Smalltalk, with many graphical windows to inspect your running application, Geany has simple and experimental support, Eclipse has basic support, Lem is a general purpose editor written in CL, it is Emacs-like and poorely documented :( we have Jupyter notebooks and simpler terminal-based interactive REPLs: cl-repl is like ipython.

    So, one could complain five years ago easily about the lack of editor support, know your complaint should be more evolved than a Emacs/Vim dichotomy.

    - package managers: Quicklisp is great, very slick and the ecosystem is very stable. When/if you encounter its limitations, you can use: Ultralisp, a Quicklisp distribution that ships every 5 minutes (but it doesn't check that all packages load correctly together), Qlot is used for project-local dependencies, where you pin each one precisely, CLPM is a new package manager that fixes some (all?) Quicklisp limitations

    > [unicode, threading, GC…] All of these features are left to be implemented by third-party libraries

    this leads to think that no implementation implements unicode or threading support O_o

    > most of the language proper is not generic

    mention generic-cl? https://github.com/alex-gutev/generic-cl/ (tried quickly, not intensively)

    Documentation: fair points, but improving etc. Example of a new doc generator: https://40ants.com/doc/

    Also I'd welcome a discussion about Coalton (Haskell-like type system on top of CL).

  • Modern sequence abstractions
    4 projects | /r/Common_Lisp | 15 Jan 2022
    Does generic-cl work for you? In recent months, u/alex-gutev worked on it to separate it out into smaller subsystems.
  • Common Lisp polymorphic stories.
    13 projects | /r/lisp | 4 Nov 2021
    Anyway, this library is inspired by https://github.com/alex-gutev/generic-cl and provides polymorphic versions of many common standard functions based on types. For example, now `>` and `<` work on characters and strings as well, and `at` is a universal by-key accessor for all data structures (`aref` + `nth` + `gethash` + some more). It also tries to be as strictly typed as possible, resulting in compile-time errors/warnings in case types are mismatched. Types do not always need to be declared, they can be inferred thanks to excellent https://github.com/alex-gutev/cl-form-types by Alex Gutev. Besides that it includes a collection of useful macros for more "typey" style of coding as well as several data structures I consider missing from the standard. The structures are templated -- which means there's a structure type generated for each contained element-type.
    13 projects | /r/lisp | 4 Nov 2021
    Compared to generic-cls equality generic here: https://github.com/alex-gutev/generic-cl/blob/master/src/comparison/equality.lisp
  • alex-gutev/cl-form-types - Library for determining the types of Common Lisp forms based on information stored in the environment.
    2 projects | /r/Common_Lisp | 2 Jun 2021
    Thanks for sharing. I'm planning to use it in static-dispatch to further optimize generic function calls in generic-cl. It's also used in the lisp-polymorph project, work in progress not yet completed, which aims to provide an extensible generic interface, though not based on generic functions, to functions in the Common Lisp standard, like generic-cl however built from the ground up with performance and optimization and performance in mind.
  • Static-Dispatch 0.5: Improved inlining on SBCL and performance improvements for generic-cl
    3 projects | /r/Common_Lisp | 16 Apr 2021
    Release 0.5 adds a specialized implementation for SBCL which leverages the compiler's type inference engine, using DEFTRANSFORM, to allow for generic function inlining in a much broader range of scenarios. Any generic function call for which the types of the arguments can be determined by SBCL, can now be inlined by static-dispatch. This means even generic function calls with arguments consisting of complex expressions can be inlined. This also provides a performance boost for generic-cl where theoretically on SBCL, generic-cl:= should be equivalent in performance to cl:= in most cases where the type of the argument can be vaguely inferred by SBCL.

specialized-function

Posts with mentions or reviews of specialized-function. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-08-02.
  • numericals - Performance of NumPy with the goodness of Common Lisp
    8 projects | /r/lisp | 2 Aug 2022
    Since the past year or two, I have been working on numericals that aims to provide the speed of NumPy with the goodness of Common Lisp. In particular, this includes the use of dynamic variables, restarts, and compiler-notes wherever appropriate. It uses CLTL2 API (and may be slightly more) under the hood to provide AOT dispatch, but nothing stops you from combining it with JAOT dispatch provided by numcl/specialized-function. This also spawned a number of projects most notably polymorphic-functions to dispatch on types instead of classes and extensible-compound-types that allows one to define user defined compound types (beyond just the type-aliases enabled by deftype. Fortunately enough, interoperation between magicl, numcl and numericals/dense-numericals actually looks plausible!
  • Static-Dispatch 0.5: Improved inlining on SBCL and performance improvements for generic-cl
    3 projects | /r/Common_Lisp | 16 Apr 2021
    I guess specialized-function would be what you are looking for, although I'm unsure if it already / can-be-made-to take(s) recompilation into account.

What are some alternatives?

When comparing generic-cl and specialized-function you can also consider the following projects:

coalton - Coalton is an efficient, statically typed functional programming language that supercharges Common Lisp.

static-dispatch - Static generic function dispatch for Common Lisp

reagent - A minimalistic ClojureScript interface to React.js

inlined-generic-function - Bringing the speed of Static Dispatch to CLOS. Succeeded by https://github.com/marcoheisig/fast-generic-functions

magicl - Matrix Algebra proGrams In Common Lisp.

drracket - DrRacket, IDE for Racket

lisp-interface-library - LIL: abstract interfaces and supporting concrete data-structures in Common Lisp

numericals - CFFI enabled SIMD powered simple-math numerical operations on arrays for Common Lisp [still experimental]

fset - FSet, the functional collections library for Common Lisp.

ctype - CL type system implementation

ccl - Clozure Common Lisp

polymorphic-functions - A function type to dispatch on types instead of classes with partial support for dispatching on optional and keyword argument types.