Catlab.jl
Metatheory.jl
Catlab.jl | Metatheory.jl | |
---|---|---|
4 | 5 | |
585 | 334 | |
0.7% | 1.2% | |
9.0 | 8.1 | |
7 days ago | 32 minutes ago | |
Julia | Julia | |
MIT License | MIT License |
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.
Catlab.jl
-
Data Structures as Topological Spaces (2002) [pdf]
Related to this, AlgebraicJulia has been doing a lot with applying concepts from algebra and category theory to data analysis and modelling.
https://www.algebraicjulia.org/
There's some blog posts that are also interesting:
https://blog.algebraicjulia.org/
-
Fart Proudly – An Essay by Benjamin Franklin
> Maybe I’m just too bitter about academia in this point in my career but it seems like we’ve run out of things to study and/or have too many people doing it.
We have certainly not run out of things to study, but I think we've hit the limit on what can effectively be communicated through traditional science journals [1], and we need to address the reproducibility crisis through open source science and reconsider the incentive structures around academia [2]. We need to oppose initiatives from people like Bill Gates who wish to privatize science through his various non-profits, as knowledge works better as as commons (we were unable to deal with the pandemic partly because Bill Gates prevented Oxford from open sourcing their work on COVID [3]). We need software that can compose scientific models [4], and organizations that can facilitate greater coordination among scientists. Science will become all the more important in an increasingly uncertain world, but are we up to the task?
[1] https://www.science.org/content/article/frustrated-science-s...
[1] https://numfocus.org/open-source-science-initiative-ossci
[2] https://www.wired.com/story/opinion-the-world-loses-under-bi...
[3] https://www.algebraicjulia.org/
-
Anyone know whether the source for cl-cat: a DSEL for computational category theory is publicly available?
Thank you for replying, but what prevents you from releasing your code? Dr Rydeheard has shared the StandardML version from his book (and the book). Of course if you don't want to share your code that is your prerogative and that is fine, but I am just trying to understand the issue that is preventing you a little more clearly. My interest in your implementation is strictly one of personal education. With applied category theory becoming more popular and computing implementations often used for teaching purposes (e.g. this book ) I would like to see a lisp implementation. It is built into Haskell, mostly, and people are developing libraries for Idris and Julia. I would find it instructive to see the implementation in common-lisp. Thank you for taking the time to respond to my original question.
-
From Julia to Rust
The biggest group outside of numerical computing in Julia land are the PL and systems people though? This includes type theorists [1], database folks [2], distributed systems people ([3] to name just one). There are also a fair number of compiler nuts, hence the existence of multiple projects [4][5] in this space. And this is before getting into things that bridge more than one of the domains above, e.g. [7] or [8].
FTR, I think it's fair to question whether numerical computing should have an outsized influence on the direction of the language. I also think it's a pretty fair comparison to point out how standardized and consistent the Rust governance process is compared to Julia's (the Rust RFC system is an exemplar here). That doesn't mean there is a dearth of PL and systems knowledge in the Julia community though.
[1] https://github.com/AlgebraicJulia/Catlab.jl
Metatheory.jl
-
[ANN] E-graphs and equality saturation: hegg 0.1
I'd love to see something in the lines of Julia's https://juliasymbolics.github.io/Metatheory.jl/dev/
-
Twitter Thread: Symbolic Computing for Compiler Optimizations in Julia
From that example you can see how this makes some rather difficult compiler questions all be subsumed in the e-graph saturation solve. That solve itself isn't easy, it's an NP-hard problem that requires good heuristics and such, and that's what Metatheory.jl, and that's what chunks of the thesis are about. But given a good enough solver, the ability to write such transformation passes becomes rather trivial and you get an optimal solution in the sense of the chosen cost function. So problems like enabling automatic FMA on specific codes is rather simple with this tool: just declare a*b + c = fma(a,b,c), the former is a cost of 2 the latter is a cost of one, and let it rip.
-
Show HN: prometeo – a Python-to-C transpiler for high-performance computing
Well IMO it can definitely be rewritten in Julia, and to an easier degree than python since Julia allows hooking into the compiler pipeline at many areas of the stack. It's lispy an built from the ground up for codegen, with libraries like (https://github.com/JuliaSymbolics/Metatheory.jl) that provide high level pattern matching with e-graphs. The question is whether it's worth your time to learn Julia to do so.
You could also do it at the LLVM level: https://github.com/JuliaComputingOSS/llvm-cbe
For interesting takes on that, you can see https://github.com/JuliaLinearAlgebra/Octavian.jl which relies on loopvectorization.jl to do transforms on Julia AST beyond what LLVM does. Because of that, Octavian.jl beats openblas on many linalg benchmarks
- From Julia to Rust
- Algebraic Metaprogramming in Julia with Metatheory.jl
What are some alternatives?
StaticArrays.jl - Statically sized arrays for Julia
JET.jl - An experimental code analyzer for Julia. No need for additional type annotations.
egg - egg is a flexible, high-performance e-graph library
Dagger.jl - A framework for out-of-core and parallel execution
julia - The Julia Programming Language
MacroTools.jl - MacroTools provides a library of tools for working with Julia code and expressions.
Juleps - Julia Enhancement Proposals
acados - Fast and embedded solvers for nonlinear optimal control
Octavian.jl - Multi-threaded BLAS-like library that provides pure Julia matrix multiplication
Symbolics.jl - Symbolic programming for the next generation of numerical software
SciMLBenchmarks.jl - Scientific machine learning (SciML) benchmarks, AI for science, and (differential) equation solvers. Covers Julia, Python (PyTorch, Jax), MATLAB, R