home.social

#meson — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #meson, aggregated by home.social.

  1. CERN Physicists Observe New Exotic Particle

    Physicists with the ATLAS Collaboration at CERN’s Large Hadron Collider (LHC) have observed the Bc*+ meson, an excited…
    #NewsBeep #News #Physics #Antiquark #Atlas #AU #Australia #Bcplusmeson #Bottomantiquark #Charmquark #LHC #Meson #Particle #Photon #proton #Quark #Science
    newsbeep.com/au/695347/

  2. CERN Physicists Observe New Exotic Particle

    Physicists with the ATLAS Collaboration at CERN’s Large Hadron Collider (LHC) have observed the Bc*+ meson, an excited…
    #NewsBeep #News #Physics #Antiquark #Atlas #AU #Australia #Bcplusmeson #Bottomantiquark #Charmquark #LHC #Meson #Particle #Photon #proton #Quark #Science
    newsbeep.com/au/695347/

  3. mesonlsp is finally back again. Yesterday, I released 5.0.0. It has basically no new features but instead contains modernizations and all the new meson APIs.

    Feel free to try it out: github.com/JCWasmx86/mesonlsp/

    COPRs are also available: copr.fedorainfracloud.org/copr

    (Update in the vscode-meson extension will be done later on)

    #meson #mesonbuild

  4. Small announcement: I intend to continue the development of the meson language server: github.com/JCWasmx86/mesonlsp

    The repo is unarchived again, so feel free to open issues, bugs, features request.

    As first measure I will clean up the 1.5 years of missed meson developments.

    #meson #mesonbuild

  5. Today I learned about profile-guided optimization, the most obscure form of optimization I've heard of yet.

    mesonbuild.com/howtox.html#use

  6. #wayland #hikari #stackingwm

    Hey all,

    I think I mentioned before about resurrecting the hikari wayland compositor (hikari.acmelabs.space) which seems not to be in active development.

    What I've done is spent quite a bit of time upgrading hikari from wlroots-0.15 -> wlroots-0.19.2

    The efforts of this can be seen on this branch:

    codeberg.org/thomasadam/hikari

    On the `ta/wlroots-0.19` branch (the default branch for now in this repo).

    If you'd like to use #got, see:

    thomas.gothub.org/repos/?actio

    This will be kept in sync with codeberg.

    I think seems seem mostly working. Testing welcome though!

    In addition to upgrading the wlroots version, I've also added the option to use #meson instead of #bmake

    Any problems, file an issue on the repo, or speak to me directly.

    Unofficially for now, I'm also lurking in the IRC #hikari channel on libera.chat, if that's more convenient.

  7. #wayland #hikari #stackingwm

    Hey all,

    I think I mentioned before about resurrecting the hikari wayland compositor (hikari.acmelabs.space) which seems not to be in active development.

    What I've done is spent quite a bit of time upgrading hikari from wlroots-0.15 -> wlroots-0.19.2

    The efforts of this can be seen on this branch:

    codeberg.org/thomasadam/hikari

    On the `ta/wlroots-0.19` branch (the default branch for now in this repo).

    If you'd like to use #got, see:

    thomas.gothub.org/repos/?actio

    This will be kept in sync with codeberg.

    I think seems seem mostly working. Testing welcome though!

    In addition to upgrading the wlroots version, I've also added the option to use #meson instead of #bmake

    Any problems, file an issue on the repo, or speak to me directly.

    Unofficially for now, I'm also lurking in the IRC #hikari channel on libera.chat, if that's more convenient.

  8. #wayland #hikari #stackingwm

    Hey all,

    I think I mentioned before about resurrecting the hikari wayland compositor (hikari.acmelabs.space) which seems not to be in active development.

    What I've done is spent quite a bit of time upgrading hikari from wlroots-0.15 -> wlroots-0.19.2

    The efforts of this can be seen on this branch:

    codeberg.org/thomasadam/hikari

    On the `ta/wlroots-0.19` branch (the default branch for now in this repo).

    If you'd like to use #got, see:

    thomas.gothub.org/repos/?actio

    This will be kept in sync with codeberg.

    I think seems seem mostly working. Testing welcome though!

    In addition to upgrading the wlroots version, I've also added the option to use #meson instead of #bmake

    Any problems, file an issue on the repo, or speak to me directly.

    Unofficially for now, I'm also lurking in the IRC #hikari channel on libera.chat, if that's more convenient.

  9. #wayland #hikari #stackingwm

    Hey all,

    I think I mentioned before about resurrecting the hikari wayland compositor (hikari.acmelabs.space) which seems not to be in active development.

    What I've done is spent quite a bit of time upgrading hikari from wlroots-0.15 -> wlroots-0.19.2

    The efforts of this can be seen on this branch:

    codeberg.org/thomasadam/hikari

    On the `ta/wlroots-0.19` branch (the default branch for now in this repo).

    If you'd like to use #got, see:

    thomas.gothub.org/repos/?actio

    This will be kept in sync with codeberg.

    I think seems seem mostly working. Testing welcome though!

    In addition to upgrading the wlroots version, I've also added the option to use #meson instead of #bmake

    Any problems, file an issue on the repo, or speak to me directly.

    Unofficially for now, I'm also lurking in the IRC #hikari channel on libera.chat, if that's more convenient.

  10. #wayland #hikari #stackingwm

    Hey all,

    I think I mentioned before about resurrecting the hikari wayland compositor (hikari.acmelabs.space) which seems not to be in active development.

    What I've done is spent quite a bit of time upgrading hikari from wlroots-0.15 -> wlroots-0.19.2

    The efforts of this can be seen on this branch:

    codeberg.org/thomasadam/hikari

    On the `ta/wlroots-0.19` branch (the default branch for now in this repo).

    If you'd like to use #got, see:

    thomas.gothub.org/repos/?actio

    This will be kept in sync with codeberg.

    I think seems seem mostly working. Testing welcome though!

    In addition to upgrading the wlroots version, I've also added the option to use #meson instead of #bmake

    Any problems, file an issue on the repo, or speak to me directly.

    Unofficially for now, I'm also lurking in the IRC #hikari channel on libera.chat, if that's more convenient.

  11. So I was sick today and needed to not do real work, so I resurrected an old tui based music player that I had not touched since 2010 (and it got it's start in 1997) .... and added some nice to have quality of life things, like better unicode support, sqlite databases instead of mmap files, etc....

    I have tons of things to fix still.

    github.com/itspluxstahre/glaci

    #coding #musicplayer #ncurses #c #meson #ninja

  12. 1. Masz coś prostego do zrobienia. Wydaje się, że #Makefile będzie w sam raz.
    2. W sumie warto zrobić to trochę bardziej przenośnie. Makefile będzie trochę bardziej skomplikowany.
    3. Skończyłeś. Okazuje się, że jakaś durnowata wbudowana regułka w GNU Make wskakuje i dodaje `rm` na końcu, które kasuje część plików wyjściowych.
    4. Użyj Mesona.

    Zwykły dzień w #Gentoo.

    [AKTUALIZACJA: Już żałuję użycia Mesona. Jak tylko masz do zrobienia cokolwiek, co nie jest w 100% dopasowanego do najbardziej standardowego szablonu, na każdym kroku dostajesz kłody pod nogi.]

    #Meson

  13. 1. Have a simple job to do. Figure out #Makefile will do the job.
    2. Think a bit about portability. Makefile becomes slightly more complex.
    3. You're finally done. It turns out that some stupid implicit rule in GNU Make fires and adds a `rm` at the end that removes part of the output.
    4. Use #Meson.

    Just an average #Gentoo day.

    [UPDATE: Now I regret using Meson. If you do anything that's not 100% boilerplate, it just keeps throwing obstacles in your way.]

  14. @ygor #CMake can be good reason on its own to wish to switch to #cargo.

    Update: in the past I cooked purely #C++ project built by cargo using `cc` crate. Worked like I charm until needed more changes and ended up with #Meson.

  15. @vala_lang I can vouch for this project. Using Vala in #jetbrains #CLion (which has built-in #meson support) makes an amazing combo to develop on Vala and feel comfy about it with a modern toolset if you are into IDEs.

    And also, CLion is free for open source projects, which is pretty likely you are, if you are using Vala.

    If you are working on #vala, I recommend you check this out 😀 👍.

  16. #meson рулит!
    он говорит
    самосравнение всегда дает true [-Wtautological-compare]
    я смотрю в
    sage/crypto/sbox.pyx а там для def class SBox.__eq__ на строке 255 написано self._big_endian == self._big_endian

  17. Пытаясь собрать #sagemath от Volker Braun (это там, где уже удалили sage/pkgs/sagemath-standard так что emerge не может) через #meson, я узнал про пакет sci-libs/mkl

  18. Jeżeli piszecie bibliotekę, naprawdę powinniście unikać #CMake. To, w jaki sposób zaprojektowano ten system budowania sprawia, że wasz projekt staje się od niego zależny. Praktycznie uniemożliwia to przejście na inny system budowania w przyszłości bez sprawiania sporych kłopotów istniejącym użytkownikom. A jeżeli zdecyduje się wspierać wiele systemów budowania, to wówczas wasi użytkownicy będą blokować innych.

    A wszystko przez to, że CMake używa niestandardowego systemu odkrywania zależności, który jest praktycznie niezgodny ze wszystkim innym, i tak złożony, że powtórna implementacja w innym systemie budowania jest szalenie skomplikowana. Więc kiedy inni zaczną polegać na tym, że wasza biblioteka instaluje pliki konfiguracji CMake (a jest to nieuniknione, bo po prostu tak się używa CMake), to wówczas nie będziecie mogli przestać ich instalować, nie psując ich projektów. A jeżeli będzie chcieli dalej je instalować przy pomocy innego systemu budowania, to powodzenia.

    A jeżeli CMake to jedna z wielu opcji, które wspieracie, to niektórzy z waszych użytkowników zaczną przypadkowo zakładać, że mogą polegać na CMake. A na tym stracą wszyscy inni, którzy budują waszą bibliotekę przy pomocy innego systemu budowania, i nie będą mogli zbudować tego projektu, który zaczął polegać na CMake. A potem jest już tylko gorzej — coraz więcej dystrybucji jest zmuszonych do budowania waszej biblioteki przy pomocy CMake, i coraz więcej projektów polega na tym, że "wszyscy" używają CMake…

    Używajcie systemu budowania #Meson — jest bardziej przejrzysty i lepiej przemyślany. A do wyszukiwania bibliotek używajcie plików pkg-configa; są proste i przenośne.

    #WolneOprogramowanie

  19. If you're writing a library, you should really avoid #CMake. CMake is designed to lock you in. As in, once you release a #FreeSoftware project using CMake, you can't switch to another build system with causing real trouble to your users. And if you support multiple build systems, as soon as you start supporting CMake, some of your users are going to start locking everyone else in.

    That's because CMake uses a custom package discovery mechanism that's hardly compatible with anything else, and that is so complex that it's very hard to reimplement it with any other build system. So when others start relying on the CMake config files being installed (and they naturally will, since that's how CMake does things), you can't stop installing them without actually breaking stuff. And if you want to preserve them without actually using CMake, well, good luck with that.

    And if CMake is one of the options you support, then some of your consumers will accidentally start relying on it anyway. And this will be much worse for everyone, because now their projects won't work for people who build your project with any other build system. Which in turn will force more projects to use CMake anyway. Which in turn will make more people rely on CMake being used…

    Use #Meson as the build system, it's clean and not designed to lock you in. Use pkg-config for library data; it's simple and portable.

    #OpenSource

  20. #xorg #x11 #wayland

    So, I mentioned before about #12to11 which was an attempt at bringing #wayland to #x11

    Well, here is #waylandx which is bringing this project something o a facelift:

    github.com/ThomasAdam/waylandx

    This is not a project which I was originally involved with though, all I am doing here is sprucing things up...

    You should now be able to build this with #meson rather than #xmkmf tooling.

    Next up, I need to address the version of the protocols its using, as they're a little out of date.

    Given the recent noise about #wayback (lobste.rs/s/9vvhzr/two_weeks_w) this might be a nice alternative.

    No matter how stupid it seems.

    All #wayback does is run xwayland for you, which when all is said-and-done still won't mean much as you can't run wayland applications under it anyway.

    Whereas, #waylandx strives to change that.

    It might be intersting to see if you can run waylandx under xwayland.... heh, heh.

    If you have any questions let me know. Better yet, open an issue on GH:

    github.com/ThomasAdam/waylandx

    I've already put some there, if anyone is interested!

  21. Kiedy jesteś tak przyzwyczajony do tego, że języki programowania mają "wysokopoziomowe" metody sprawdzania, czy ciąg znaków jest pusty, że próbujesz na oślep znaleźć coś w stylu `not x`, `x.empty()`, `len(x) == 0`… i dopiero po chwili zastanowienia dociera do ciebie, że to może być po prostu `x == ''`.

    #Meson

  22. When you're so used to programming languages with high-level methods of checking for empty strings, that you grasp for something like `not x`, `x.empty()`, `len(x) == 0`… and only after a while of thinking, you realize that it's `x == ''`.

    #Meson

  23. About 10 days of round and round to install Motion 5 on my #rpi

    hey where did you#libcamera go?

    how to install libcamera to know if my camera is working before I try troubleshooting it in Motion?

    How to install #meson to install libcamera?

    How to install #ninja to install #meson

    Why didn't I go with a regular dashcam? Oh right, no one BUILDS a privacy aware dashcam that will upload to MY server. AT ANY PRICE. #latestagecapitalism

  24. Ciekawostki o Pythonowym "limited API" i "stable ABI".

    1. #CPython ma "limited API". Jak się tego używa, to kompilowane rozszerzenia są zgodne ze wskazaną wersją i wersjami nowszymi. Takie rozszerzenia dostają sufiks `.abi3.so` (albo podobny) zamiast np. `.cpython-313-x86_64-linux-gnu.so`.

    2. Wsparcie podzielone jest między CPythona i systemy budowania #PEP517. Np. w #setuptools podaje się `py_limited_api=`, i wówczas przy budowaniu dodawane są odpowiednie flagi kompilatora i podmieniany jest sufiks rozszerzeń. #Meson ma coś podobnego.

    3. Ale wersja "freethreading" aktualnie nie obsługuje "stable ABI", więc przy budowaniu z "limited API" dostaje się błąd kompilacji. Podobnie, setuptools rzuca błąd jeżeli z interpreterem freethreading podamy `py_limited_api`, a Meson po prostu pozwala się wysypać kompilacji. Tak więc autorzy paczek muszą sami sprawdzać, czy użyto kompilatora "freethreading", i wyłączyć wówczas "limited API".

    4. Bliżej nieokreślona przyszła wersja CPythona naprawi to wsparcie. Nie przyglądałem się tematowi dokładnie, ale podejrzewam, że będzie to tylko możliwe, jeżeli będziemy budować rozszerzenia dla tej bądź nowszej wersji. Więc ludzie pewnie będą musieli budować dwie wersje — tę dla starszych CPythonów, i dla nowszych + "freethreading". No i oczywiście będzie trzeba odpowiednio zaktualizować warunkowe załączanie "limited API".

    5. No i jest jeszcze #PyPy. PyPy nie ma "stable ABI", ale pozwala budować rozszerzenia z "limited API". Setuptools i Meson po prostu wykrywają, że interpreter nie obsługuje sufiksu `.abi3.so`, i buduje rozszerzenia z normalnym sufiksem.

    #Python

  25. Ciekawostki o Pythonowym "limited API" i "stable ABI".

    1. #CPython ma "limited API". Jak się tego używa, to kompilowane rozszerzenia są zgodne ze wskazaną wersją i wersjami nowszymi. Takie rozszerzenia dostają sufiks `.abi3.so` (albo podobny) zamiast np. `.cpython-313-x86_64-linux-gnu.so`.

    2. Wsparcie podzielone jest między CPythona i systemy budowania #PEP517. Np. w #setuptools podaje się `py_limited_api=`, i wówczas przy budowaniu dodawane są odpowiednie flagi kompilatora i podmieniany jest sufiks rozszerzeń. #Meson ma coś podobnego.

    3. Ale wersja "freethreading" aktualnie nie obsługuje "stable ABI", więc przy budowaniu z "limited API" dostaje się błąd kompilacji. Podobnie, setuptools rzuca błąd jeżeli z interpreterem freethreading podamy `py_limited_api`, a Meson po prostu pozwala się wysypać kompilacji. Tak więc autorzy paczek muszą sami sprawdzać, czy użyto kompilatora "freethreading", i wyłączyć wówczas "limited API".

    4. Bliżej nieokreślona przyszła wersja CPythona naprawi to wsparcie. Nie przyglądałem się tematowi dokładnie, ale podejrzewam, że będzie to tylko możliwe, jeżeli będziemy budować rozszerzenia dla tej bądź nowszej wersji. Więc ludzie pewnie będą musieli budować dwie wersje — tę dla starszych CPythonów, i dla nowszych + "freethreading". No i oczywiście będzie trzeba odpowiednio zaktualizować warunkowe załączanie "limited API".

    5. No i jest jeszcze #PyPy. PyPy nie ma "stable ABI", ale pozwala budować rozszerzenia z "limited API". Setuptools i Meson po prostu wykrywają, że interpreter nie obsługuje sufiksu `.abi3.so`, i buduje rozszerzenia z normalnym sufiksem.

    #Python

  26. Ciekawostki o Pythonowym "limited API" i "stable ABI".

    1. #CPython ma "limited API". Jak się tego używa, to kompilowane rozszerzenia są zgodne ze wskazaną wersją i wersjami nowszymi. Takie rozszerzenia dostają sufiks `.abi3.so` (albo podobny) zamiast np. `.cpython-313-x86_64-linux-gnu.so`.

    2. Wsparcie podzielone jest między CPythona i systemy budowania #PEP517. Np. w #setuptools podaje się `py_limited_api=`, i wówczas przy budowaniu dodawane są odpowiednie flagi kompilatora i podmieniany jest sufiks rozszerzeń. #Meson ma coś podobnego.

    3. Ale wersja "freethreading" aktualnie nie obsługuje "stable ABI", więc przy budowaniu z "limited API" dostaje się błąd kompilacji. Podobnie, setuptools rzuca błąd jeżeli z interpreterem freethreading podamy `py_limited_api`, a Meson po prostu pozwala się wysypać kompilacji. Tak więc autorzy paczek muszą sami sprawdzać, czy użyto kompilatora "freethreading", i wyłączyć wówczas "limited API".

    4. Bliżej nieokreślona przyszła wersja CPythona naprawi to wsparcie. Nie przyglądałem się tematowi dokładnie, ale podejrzewam, że będzie to tylko możliwe, jeżeli będziemy budować rozszerzenia dla tej bądź nowszej wersji. Więc ludzie pewnie będą musieli budować dwie wersje — tę dla starszych CPythonów, i dla nowszych + "freethreading". No i oczywiście będzie trzeba odpowiednio zaktualizować warunkowe załączanie "limited API".

    5. No i jest jeszcze #PyPy. PyPy nie ma "stable ABI", ale pozwala budować rozszerzenia z "limited API". Setuptools i Meson po prostu wykrywają, że interpreter nie obsługuje sufiksu `.abi3.so`, i buduje rozszerzenia z normalnym sufiksem.

    #Python

  27. Ciekawostki o Pythonowym "limited API" i "stable ABI".

    1. #CPython ma "limited API". Jak się tego używa, to kompilowane rozszerzenia są zgodne ze wskazaną wersją i wersjami nowszymi. Takie rozszerzenia dostają sufiks `.abi3.so` (albo podobny) zamiast np. `.cpython-313-x86_64-linux-gnu.so`.

    2. Wsparcie podzielone jest między CPythona i systemy budowania #PEP517. Np. w #setuptools podaje się `py_limited_api=`, i wówczas przy budowaniu dodawane są odpowiednie flagi kompilatora i podmieniany jest sufiks rozszerzeń. #Meson ma coś podobnego.

    3. Ale wersja "freethreading" aktualnie nie obsługuje "stable ABI", więc przy budowaniu z "limited API" dostaje się błąd kompilacji. Podobnie, setuptools rzuca błąd jeżeli z interpreterem freethreading podamy `py_limited_api`, a Meson po prostu pozwala się wysypać kompilacji. Tak więc autorzy paczek muszą sami sprawdzać, czy użyto kompilatora "freethreading", i wyłączyć wówczas "limited API".

    4. Bliżej nieokreślona przyszła wersja CPythona naprawi to wsparcie. Nie przyglądałem się tematowi dokładnie, ale podejrzewam, że będzie to tylko możliwe, jeżeli będziemy budować rozszerzenia dla tej bądź nowszej wersji. Więc ludzie pewnie będą musieli budować dwie wersje — tę dla starszych CPythonów, i dla nowszych + "freethreading". No i oczywiście będzie trzeba odpowiednio zaktualizować warunkowe załączanie "limited API".

    5. No i jest jeszcze #PyPy. PyPy nie ma "stable ABI", ale pozwala budować rozszerzenia z "limited API". Setuptools i Meson po prostu wykrywają, że interpreter nie obsługuje sufiksu `.abi3.so`, i buduje rozszerzenia z normalnym sufiksem.

    #Python

  28. Ciekawostki o Pythonowym "limited API" i "stable ABI".

    1. #CPython ma "limited API". Jak się tego używa, to kompilowane rozszerzenia są zgodne ze wskazaną wersją i wersjami nowszymi. Takie rozszerzenia dostają sufiks `.abi3.so` (albo podobny) zamiast np. `.cpython-313-x86_64-linux-gnu.so`.

    2. Wsparcie podzielone jest między CPythona i systemy budowania #PEP517. Np. w #setuptools podaje się `py_limited_api=`, i wówczas przy budowaniu dodawane są odpowiednie flagi kompilatora i podmieniany jest sufiks rozszerzeń. #Meson ma coś podobnego.

    3. Ale wersja "freethreading" aktualnie nie obsługuje "stable ABI", więc przy budowaniu z "limited API" dostaje się błąd kompilacji. Podobnie, setuptools rzuca błąd jeżeli z interpreterem freethreading podamy `py_limited_api`, a Meson po prostu pozwala się wysypać kompilacji. Tak więc autorzy paczek muszą sami sprawdzać, czy użyto kompilatora "freethreading", i wyłączyć wówczas "limited API".

    4. Bliżej nieokreślona przyszła wersja CPythona naprawi to wsparcie. Nie przyglądałem się tematowi dokładnie, ale podejrzewam, że będzie to tylko możliwe, jeżeli będziemy budować rozszerzenia dla tej bądź nowszej wersji. Więc ludzie pewnie będą musieli budować dwie wersje — tę dla starszych CPythonów, i dla nowszych + "freethreading". No i oczywiście będzie trzeba odpowiednio zaktualizować warunkowe załączanie "limited API".

    5. No i jest jeszcze #PyPy. PyPy nie ma "stable ABI", ale pozwala budować rozszerzenia z "limited API". Setuptools i Meson po prostu wykrywają, że interpreter nie obsługuje sufiksu `.abi3.so`, i buduje rozszerzenia z normalnym sufiksem.

    #Python

  29. Some fun facts about #Python limited API / stable ABI.

    1. #CPython supports "limited API". When you use it, you get extensions that are compatible with the specified CPython version and versions newer than that. To indicate this compatibility, such extensions use `.abi3.so` suffix (or equivalent) rather than the usual `.cpython-313-x86_64-linux-gnu.so` or alike.

    2. The actual support is split between CPython itself and #PEP517 build systems. For example, if you use #setuptools and specify `py_limited_api=` argument to the extension, setuptools will pass appropriate C compiler flags and swap extension suffix. There's a similar support in #meson, and probably other build systems.

    3. Except that CPython freethreading builds don't support stable ABI right now, so building with "limited API" triggers an explicit error from the headers. Setuptools have opted for building explicit about this: it emits an error if you try to use `py_limited_api` on a freethreading interpreter. Meson currently just gives the compile error. This implies that package authors need to actively special-case freethreading builds and enable "limited API" conditionally.

    4. A some future versions of CPython will support "limited API" in freethreading builds. I haven't been following the discussions closely, but I suspect that it will only be possible when you target that version or newer. So I guess people will need to be building two stable ABI wheels for a time — one targeting older Python versions, and one targeting newer versions plus freethreading. On top of that, all these projects will need to update their "no 'limited API' on freethreading" conditions.

    5. And then there's #PyPy. PyPy does not feature a stable ABI, but it allows you to build extensions using "limited API". So setuptools and meson just detect that there is no `.abi3.so` on PyPy, and use regular suffix for the extensions built with "limited API".

  30. Some fun facts about #Python limited API / stable ABI.

    1. #CPython supports "limited API". When you use it, you get extensions that are compatible with the specified CPython version and versions newer than that. To indicate this compatibility, such extensions use `.abi3.so` suffix (or equivalent) rather than the usual `.cpython-313-x86_64-linux-gnu.so` or alike.

    2. The actual support is split between CPython itself and #PEP517 build systems. For example, if you use #setuptools and specify `py_limited_api=` argument to the extension, setuptools will pass appropriate C compiler flags and swap extension suffix. There's a similar support in #meson, and probably other build systems.

    3. Except that CPython freethreading builds don't support stable ABI right now, so building with "limited API" triggers an explicit error from the headers. Setuptools have opted for building explicit about this: it emits an error if you try to use `py_limited_api` on a freethreading interpreter. Meson currently just gives the compile error. This implies that package authors need to actively special-case freethreading builds and enable "limited API" conditionally.

    4. A some future versions of CPython will support "limited API" in freethreading builds. I haven't been following the discussions closely, but I suspect that it will only be possible when you target that version or newer. So I guess people will need to be building two stable ABI wheels for a time — one targeting older Python versions, and one targeting newer versions plus freethreading. On top of that, all these projects will need to update their "no 'limited API' on freethreading" conditions.

    5. And then there's #PyPy. PyPy does not feature a stable ABI, but it allows you to build extensions using "limited API". So setuptools and meson just detect that there is no `.abi3.so` on PyPy, and use regular suffix for the extensions built with "limited API".

  31. Some fun facts about #Python limited API / stable ABI.

    1. #CPython supports "limited API". When you use it, you get extensions that are compatible with the specified CPython version and versions newer than that. To indicate this compatibility, such extensions use `.abi3.so` suffix (or equivalent) rather than the usual `.cpython-313-x86_64-linux-gnu.so` or alike.

    2. The actual support is split between CPython itself and #PEP517 build systems. For example, if you use #setuptools and specify `py_limited_api=` argument to the extension, setuptools will pass appropriate C compiler flags and swap extension suffix. There's a similar support in #meson, and probably other build systems.

    3. Except that CPython freethreading builds don't support stable ABI right now, so building with "limited API" triggers an explicit error from the headers. Setuptools have opted for building explicit about this: it emits an error if you try to use `py_limited_api` on a freethreading interpreter. Meson currently just gives the compile error. This implies that package authors need to actively special-case freethreading builds and enable "limited API" conditionally.

    4. A some future versions of CPython will support "limited API" in freethreading builds. I haven't been following the discussions closely, but I suspect that it will only be possible when you target that version or newer. So I guess people will need to be building two stable ABI wheels for a time — one targeting older Python versions, and one targeting newer versions plus freethreading. On top of that, all these projects will need to update their "no 'limited API' on freethreading" conditions.

    5. And then there's #PyPy. PyPy does not feature a stable ABI, but it allows you to build extensions using "limited API". So setuptools and meson just detect that there is no `.abi3.so` on PyPy, and use regular suffix for the extensions built with "limited API".

  32. Some fun facts about #Python limited API / stable ABI.

    1. #CPython supports "limited API". When you use it, you get extensions that are compatible with the specified CPython version and versions newer than that. To indicate this compatibility, such extensions use `.abi3.so` suffix (or equivalent) rather than the usual `.cpython-313-x86_64-linux-gnu.so` or alike.

    2. The actual support is split between CPython itself and #PEP517 build systems. For example, if you use #setuptools and specify `py_limited_api=` argument to the extension, setuptools will pass appropriate C compiler flags and swap extension suffix. There's a similar support in #meson, and probably other build systems.

    3. Except that CPython freethreading builds don't support stable ABI right now, so building with "limited API" triggers an explicit error from the headers. Setuptools have opted for building explicit about this: it emits an error if you try to use `py_limited_api` on a freethreading interpreter. Meson currently just gives the compile error. This implies that package authors need to actively special-case freethreading builds and enable "limited API" conditionally.

    4. A some future versions of CPython will support "limited API" in freethreading builds. I haven't been following the discussions closely, but I suspect that it will only be possible when you target that version or newer. So I guess people will need to be building two stable ABI wheels for a time — one targeting older Python versions, and one targeting newer versions plus freethreading. On top of that, all these projects will need to update their "no 'limited API' on freethreading" conditions.

    5. And then there's #PyPy. PyPy does not feature a stable ABI, but it allows you to build extensions using "limited API". So setuptools and meson just detect that there is no `.abi3.so` on PyPy, and use regular suffix for the extensions built with "limited API".

  33. Some fun facts about #Python limited API / stable ABI.

    1. #CPython supports "limited API". When you use it, you get extensions that are compatible with the specified CPython version and versions newer than that. To indicate this compatibility, such extensions use `.abi3.so` suffix (or equivalent) rather than the usual `.cpython-313-x86_64-linux-gnu.so` or alike.

    2. The actual support is split between CPython itself and #PEP517 build systems. For example, if you use #setuptools and specify `py_limited_api=` argument to the extension, setuptools will pass appropriate C compiler flags and swap extension suffix. There's a similar support in #meson, and probably other build systems.

    3. Except that CPython freethreading builds don't support stable ABI right now, so building with "limited API" triggers an explicit error from the headers. Setuptools have opted for building explicit about this: it emits an error if you try to use `py_limited_api` on a freethreading interpreter. Meson currently just gives the compile error. This implies that package authors need to actively special-case freethreading builds and enable "limited API" conditionally.

    4. A some future versions of CPython will support "limited API" in freethreading builds. I haven't been following the discussions closely, but I suspect that it will only be possible when you target that version or newer. So I guess people will need to be building two stable ABI wheels for a time — one targeting older Python versions, and one targeting newer versions plus freethreading. On top of that, all these projects will need to update their "no 'limited API' on freethreading" conditions.

    5. And then there's #PyPy. PyPy does not feature a stable ABI, but it allows you to build extensions using "limited API". So setuptools and meson just detect that there is no `.abi3.so` on PyPy, and use regular suffix for the extensions built with "limited API".

  34. #fvwm3 #autotools #meson #buildsystems

    A little over six months ago, I said the following:

    bsd.network/web/@thomasadam/11

    Since six months has passed, I've now pushed to `main` a PR which does just that -- removes autotools from #fvwm3 and replaces it with meson:

    github.com/fvwmorg/fvwm3/pull/

    So this has been your warning.

    When I release fvwm3-1.1.3, it will be using meson only.

    Any questions, please do let me know. I hope downstream packagers have made the transition. :)

  35. @jloc0

    Indeed.

    Aside from all of the other work going on, there is also a concerted effort to migrate from using to for builds.

  36. 🎄 Christmas is nearly here and that means it's time to join us for our December meet, hosted by !

    meetup.com/helpy-meetups/event

    ❄️ Creating Python modules and libraries using , by Akseli Lukkarila

    ❄️ : a Build system in and for Python, by Jussi Pakkanen

    ❄️ : A Python ecosystem for machine learning and numerical computation, by Nazaal Ibrahim @nazaal

    ❄️ And did someone say something about a quiz?

  37. 🎄 Christmas is nearly here and that means it's time to join us for our December meet, hosted by #Nitor!

    meetup.com/helpy-meetups/event

    ❄️ Creating Python modules and libraries using #Rust, by Akseli Lukkarila

    ❄️ #Meson: a Build system in and for Python, by Jussi Pakkanen

    ❄️ #JAX: A Python ecosystem for machine learning and numerical computation, by Nazaal Ibrahim @nazaal

    ❄️ And did someone say something about a quiz?

    #HelPy #Helsinki #Finland #Python #meetup