nanobind
avendish
nanobind | avendish | |
---|---|---|
11 | 35 | |
2,397 | 422 | |
- | 0.9% | |
9.5 | 9.3 | |
9 days ago | 10 days ago | |
C++ | C++ | |
BSD 3-clause "New" or "Revised" License | GNU General Public License v3.0 or later |
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.
nanobind
-
Progress on No-GIL CPython
Take a look at https://github.com/wjakob/nanobind
> More concretely, benchmarks show up to ~4× faster compile time, ~5× smaller binaries, and ~10× lower runtime overheads compared to pybind11.
-
Advanced Python Mastery – A Course by David Beazley
People should not take that an endorsement of Swig.
Please use ctypes, cffi or https://github.com/wjakob/nanobind
Beazley himself is amazed that it (Swig) is still in use.
- Swig – Connect C/C++ programs with high-level programming languages
- Nanobind: Tiny and efficient C++/Python bindings
-
Create Python bindings for my C++ code with PyBind11
Nanobind made by the creator of PyBind11, it has a similar interface, but it takes leverage of C++17 and it aims to have more efficient bindings in space and speed.
- Nanobind – Seamless operability between C++17 and Python
-
Cython Is 20
I would recommend using NanoBind, the follow up of PyBind11 by the same author (Wensel Jakob), and move as much performance critical code to C or C++. https://github.com/wjakob/nanobind
If you really care about performance called from Python, consider something like NVIDIA Warp (Preview). Warp jits and runs your code on CUDA or CPU. Although Warp targets physics simulation, geometry processing, and procedural animation, it can be used for other tasks as well. https://github.com/NVIDIA/warp
Jax is another option, by Google, jitting and vectorizing code for TPU, GPU or CPU. https://github.com/google/jax
- GitHub - wjakob/nanobind: nanobind — Seamless operability between C++17 and Python
avendish
-
What's new in C++26 (part 1)
Check out boost.pfr, it gets you there for a lot of cases. Here's a library I built with it: https://github.com/celtera/avendish
It's a proper quantum leap compared to pre-reflection
-
Ask HN: What audio/sound-related OSS projects can I contribute to?
Happy to introduce you to https://ossia.io there are a lots of tasks open! You can check the projects for the general development axes: https://github.com/ossia/score/projects?query=is%3Aopen ; e.g. Audio, Musicality, Integrations, JACK & Linux integration (some are in Classic projects mode) all have audio-related tasks, some easy, some hard.
Creating new Avendish plug-ins (docs: https://celtera.github.io/avendish/) could also be fairly useful, here's a very basic example one: https://github.com/celtera/avendish/blob/main/examples/Advan...
-
Learning C++ for Multimedia and Audio programming
If you are interested in making max, pd, etc... extension you can look into https://github.com/celtera/avendish : it's made exactly for this and tries to stay very close from standard C++ unlike most existing audio frameworks which often come with their own bespoke standard library reimplementation. The documentation also tries to explain the c++ features it used, you might find this useful!
-
Soursop and Ponies in Kona: A C++ Committee Trip Report
to automatically generate safe dlopen stubs for runtime dynamic library loading from header files
and through the C++ one (this one is an extremely quick and dirty prototype):
https://github.com/ossia/score/blob/master/src/plugins/score...
to pre-instantiate get(aggregate), for_each(aggregate, f) and other similar functions in https://github.com/celtera/avendish because of how slow it is when done through TMP (doing it that way removed literally dozens of megabytes from my .o and had a positive performance impact even with -O3) ; so I weep a lot when I read that people in the committee object to pack...[indexing]
-
Cognitive Loads in Programming
I really don't know about this, I'm writing audio & media effects in a fairly declarative style with https://github.com/celtera/avendish and I'm so much more productive that it's not even funny - I can rewrite entire effects from scratch in the time that it used to take me to find a bug somewhere
- Ask HN: Who is using C++ as the main language for new project?
- A framework for audio software development
-
Clap: The New Audio Plug-In Standard
For anyone using c++, my declarative system has some amount of support for clap: https://github.com/celtera/avendish / https://celtera.github.io/avendish/
But unlike clap, targetting this also gives direct access to a few other environments, namely Max, Pd, ossia score, with the list hopefully growing.
Here is an example minimal plugin : https://github.com/celtera/avendish/blob/main/examples/Raw/M...
Note that unlike pretty much every other c/c++ plugin API, the plugin code does not need to include any header, everything is done through reflection of struct members at compile-time.
Here's a per-sample noise generator which uses a small library of pre-made ports: https://github.com/celtera/avendish/blob/main/examples/Helpe...
And a very naive buffer-based audio filter : https://github.com/celtera/avendish/blob/main/examples/Helpe...
UI is supported without relying on a specific UI library, only on a canvas painter concept which can then target Qt, NanoVG, and others to come: https://github.com/celtera/avendish/blob/main/examples/Helpe...
since it binds directly to audio APIs at compile time, it has pretty much zero code size in itself, the smallest plugin it generates for VST2 is around 7kb IIRC
-
WG21, aka C++ Standard Committee, April 2022 Mailing
I've ported my lib https://github.com/celtera/avendish to P1061's experimental clang implementation to replace boost.pfr (https://github.com/celtera/avendish/blob/main/include/avnd/common/aggregates.hpp#L67) and it works great, it's only missing pack indexing because right now one still needs to do something like
-
Why LSP?
Working on a sunset of this with https://github.com/celtera/avendish - C++ reflection makes this very easy
What are some alternatives?
pybind11 - Seamless operability between C++11 and Python
proposal - Go Project Design Documents
awesome-cython - A curated list of awesome Cython resources. Just a draft for now.
csound_max - csound6~ object for Max/MSP
matplotlibcpp17 - Alternative to matplotlibcpp with better syntax, based on pybind
DtBlkFx - Fast-Fourier-Transform (FFT) based VST plug-in
epython - EPython is a typed-subset of the Python for extending the language new builtin types and methods
clap-imgui - Minimal example of prototyping CLAP audio plugins using Dear ImGui as the user interface.
Nuitka - Nuitka is a Python compiler written in Python. It's fully compatible with Python 2.6, 2.7, 3.4-3.13. You feed it your Python app, it does a lot of clever things, and spits out an executable or extension module.
tolc-demo - Demo to show a typical usecase for tolc
warp - A Python framework for high performance GPU simulation and graphics
DPF - DISTRHO Plugin Framework