GNU social JP
  • FAQ
  • Login
GNU social JPは日本のGNU socialサーバーです。
Usage/ToS/admin/test/Pleroma FE
  • Public

    • Public
    • Network
    • Groups
    • Featured
    • Popular
    • People

Notices by anna (navi@social.vlhl.dev)

  1. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Saturday, 19-Jul-2025 03:39:54 JST anna anna
    in reply to
    • Rich Felker
    @dalias while i don't use an ide, i do use neovim with a lsp for c

    mostly because i have a tendency to typo things and the "edit, save, compile, look at errors" loop is overwhelming to me, seeing only errors on the line (or around it) i'm working on helps a lot. also sometimes for auto-complete when function names are like namespaced plus long names

    but to me they're just aids, languages or frameworks that depend on such things to exist feels like they're going backwards: "oh those helpers exist therefore we can make the underlying thing complex as no one will interact with it" is the opposite way technologies should go imo
    In conversation about 3 months ago from social.vlhl.dev permalink
  2. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Friday, 18-Jul-2025 22:05:31 JST anna anna
    in reply to
    • SuperDicq
    @SuperDicq while i do want to play beat saber and hl alyx, currently i'm kind of more interested in seeing how XR wayland compositors work and behave, so controllers are not a big requirement at the time, i'll look into monado then
    In conversation about 3 months ago from social.vlhl.dev permalink
  3. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Friday, 18-Jul-2025 21:59:08 JST anna anna
    is there an affordable VR or AR head display thingy that works on linux?

    i want to try things
    In conversation about 3 months ago from social.vlhl.dev permalink
  4. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Friday, 18-Jul-2025 07:31:57 JST anna anna
    in reply to
    • iced depresso
    @icedquinn

    > would be neat but uhh the pie has fixed slices and you have to tap them kinda precisely

    tap and hold to zoom? then just "drop" the reminder when you release
    In conversation about 3 months ago from gnusocial.jp permalink
  5. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Friday, 18-Jul-2025 02:35:37 JST anna anna
    in reply to
    • Haelwenn /элвэн/ :triskell:
    @lanodan okay how did i not think of that

    got a piece of plywood we had laying around
    In conversation about 3 months ago from social.vlhl.dev permalink
  6. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Friday, 18-Jul-2025 02:21:00 JST anna anna
    it's so hot that i can't use my laptop on my lap

    like at all
    In conversation about 3 months ago from social.vlhl.dev permalink
  7. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Friday, 18-Jul-2025 02:15:50 JST anna anna
    dandadan's opening is fire
    In conversation about 3 months ago from social.vlhl.dev permalink
  8. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Thursday, 17-Jul-2025 22:39:23 JST anna anna
    36°C

    i left brazil, but brazil didn't leave me
    In conversation about 3 months ago from social.vlhl.dev permalink
  9. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Thursday, 17-Jul-2025 09:36:04 JST anna anna
    • Danielle Foré
    • Rich Felker
    • David Chisnall (*Now with 50% more sarcasm!*)
    @ska @dalias @david_chisnall @danirabbit

    > Is the hostility still prevalent today?

    i got into linux and foss recently (well, in the past ~4 years) (tho also i'm a trans woman (so unsure if my input is helpful at all))

    while most of the spaces i'm in are still mostly full of men, i don't really feel the hostility that teen me would feel in a lot of places spaces (granted, back then non-foss ones, but still tech and gaming spaces)

    the few spaces i've been in that are not mostly men, are my fedi bubble which is mostly trans women, and during fossdem earlier this year, where gf and i got randomly invited to a women & queer only breakfast -- that was one of the very few times i've actually interacted with cis women in a foss spaces/context

    the spaces i found online are most men, and sometimes there's a few bubbles with gender queer folks, mostly trans women, and i barely ever see cis women around

    and honestly i got kinda lucky still, since when i first wanted to leave arch linux and try a non-systemd distro (so around 2021), i picked gentoo simply because i watched a video about it, and it seemed cool

    gentoo's community was kind of my first step to participating in foss more than just as a user, i met one of the devs, and made friends -- that community was welcoming, and from there i interacted with foss more, with wayland folks, started writing my first openrc patches, and so on

    but just as well i could've tried artix which was suggested to me, and that community is, by what i've been told and the bits i've interacted with, not good for one's mental health, it has the hostility mentioned, with extra "alt-right" polities of modern "no politics here only code" foss -- similar things could happen if i had taken any interest on hyprland over sway back then too, if i had fell into one of those communities first, there's a high likelihood i would've quit this whole foss communities thing
    In conversation about 3 months ago from social.vlhl.dev permalink
  10. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Thursday, 17-Jul-2025 08:04:56 JST anna anna
    in reply to
    • Rich Felker
    @dalias the context is pretty much someone shooting down openrc and proclaiming systemd "the only good one", that since openrc uses shell scripts for it's system service definitions, unit files are better because .ini is not turing complete

    i don't feel like it's applicable to service definitions (in this context at least), the person said that unit files being non turing complete stops people adding "all sorts of crazy logic", but they don't really, people still put wrapper shell scripts in ExecStart, or concoct pseudo script with 20 ExecStartPre lines

    what actually helps reduce the crazy (and usually faulty) logic is the init system providing interfaces for things that most services will need -- and that is something we're working on a lot in openrc
    In conversation about 3 months ago from social.vlhl.dev permalink
  11. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Thursday, 17-Jul-2025 07:29:22 JST anna anna
    i honestly can't with people complaining that a init system, which has the job of bringing your system up, and execute the commands necessary to do that...

    is turing complete therefore bad

    ?????????
    In conversation about 3 months ago from social.vlhl.dev permalink
  12. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Thursday, 17-Jul-2025 06:24:22 JST anna anna
    would be funny to ship a game, for posix systems, that uses d3d12 and thus depends on vkd3d unixlib

    unfortunately i'm allergic to directx apis and should not come in contact with them outside working hours
    In conversation about 3 months ago from social.vlhl.dev permalink
  13. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Thursday, 17-Jul-2025 03:13:55 JST anna anna
    in reply to
    • Haelwenn /элвэн/ :triskell:
    @lanodan @ska at least with pkg-config it's easier to abstract moving the headers or adding libdirs to the search path (just changing the .pc file suffices)

    it gets a lot annoying when someone's handcrafted makefile does -lfoo directly, with no checks no anything
    In conversation about 3 months ago from social.vlhl.dev permalink
  14. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Thursday, 17-Jul-2025 02:27:18 JST anna anna

    i think i misunderstood soname for a while now

    they’re supposed to encode abi, not api, and not supposed to match your package version at all, that’s api

    so there’s 3 cases:

    1: whenever your abi changes, you bump the soname. abi-only changes of a library are usually exclusive to when the members are added to a structure, or type sizes are changed (at least i can’t think of any other “usual” change that would change abi without changing api) – abi-only changes means code using your library only needs to be recompiled, nothing else.

    2: when your api changes, so function names/parameter changes, struct member changes, you bump both the package major version, and the soname, since an api changes means you need to edit code and recompile

    3: when you add things to your api and abi, but don’t change anything that already exists, the library is still backwards compatible, soname doesn’t change, you bump only the minor semver and minor soname

    so for a given libnya.so, from package dev-utils/nya-1.90.2 there could be:

    libnya.so.1, soname, this is what elf binaries write as DT_NEEDED, this indicates libnya‘s abi constraints, aka your “abi major version” libnya.so, this is what the compiler looks for when you do -lnya, meant to be “the latest ABI” libnya.so.1.34, this is the full qualified SONAME, so abi-major.abi-minor

    and they would be symlinked as such: libnya.so -> libnya.so.1 -> libnya.so.1.34

    say you add a new function to libnya, not touching any current abi, then all you do is replace libnya.so.1.34 with libnya.so.1.35

    if you break abi, even if you don’t touch the api, you would then install libnya.so.2.0, and update the symlink libnya.so -> libnya.so.2 -> libnya.so.2.0 – and yes, this means that the package nya-1.91 would install libnya.so.2

    note that currently installed applications are still using libnya.so.1, even if you install libnya.so.2.0 and move the libnya.so symlink! which means that if you update the soname to 2.0, you can keep libnya.so.1 installed (without a new generic symlink) concurrently, and old binaries will still work (looking at you arch/pacman, who removes old abi libraries while there’s still programs using it installed, “partial upgrades are not supported” is not an excuse to suck like this) – only remove that old soname when there’s no more packages using it

    that covers cases 1 and 3 quite well, though it’s not perfect for case 3, more on that later

    case 2 is the issue on this system. your api changed, meaning your abi changed too. you could think of this as the same as case 1 and just bump the soname, aka abi-major, when releasing nya-2.0, but that’s not ideal, because what if the user has two programs, one that uses nya-1 and another that uses nya-2 – if you only bump soname, you won’t be able to build both (without shenanigans) since -lnya would always resolve to libnya.so.3 aka nya-2‘s shared object

    there is, however, a solution to this, it’s just not pretty, and imo, a huge hack on what so far seemed like a clean system, insert your API constrains in the shared object name, then reset soname, so nya-2 would ship libnya2.so -> libnya2.so.1 -> libnya2.so.1.0

    this separates the api changes from the abi, and allows libnya2.so and libnya.so to exist at the same time

    so in the end the library naming scheme gets to lib[name][api-major].so.[abi-major].[abi-minor]

    i don’t like putting the api major in the library name at all, it’s ugly, it incentives people to not do major bumps (who wants to ship a file named libnya13.so.1? where the users have to -lnya13 to use it)

    i wish the api was actually part of the soname mechanism, in a better way – however, this is how it is, i can’t think of anything better, at least not currently, with our current toolchains.

    a solution, one often used by distros, is to install to different prefixes, and do -L/usr/lib/libnya-1 or -L/usr/lib/libnya-2, and each would have their own libnya.so -> libnya.so.{2,3} symlink respectively – works, it’s less ugly than putting the api on the name, but still feels hacky to me, split out /usr/lib into multiple small subdirs just for versioned parallel installs, and require lengthy compiler invocations with full search paths for every single library, overall ugly imo

    though this one works way nicer when the distro already installs packages in isolation, something like nix or slashpackage, since you can have the default symlink in /usr/lib be the latest version, and only provide -L for older version. on more traditional distros doing this would mean putting every single library in a split subdir even if it’ll never have parallel installs ever, which i would strongly dislike to do

    another one solution, which would be my prefered since it’s more semantic and systematic, would be to able to specify the soname in the cc invocation, -lnya.2 would use libnya.so.2 directly, even tho libnya.so -> libnya.so.3 exists. but currently this doesn’t quite work. gcc/clang support -l:filepath, (though not posix cc/c17), but pkg-config and other tooling don’t really work with that, and since it’s a fully qualified pathname, it would basically break --static flags in some build tools

    lastly, for case 3, soname makes shared objects abi-backwards-compatible, and gives mechanism for detecting when rebuilds are necessary (soname bump, .so.2 to .so.3), but they have no way to specify a minimum minor version, so a library that uses a symbol only present in libnya.so.1.39, can’t in any way specify that libnya.so.1.38 will not work, but libnya.so.1.40 will

    or you could be like glibc and freeze your soname, and whenever you need to make a change make a new symbol and keep carrying all your old source code versions for all eternity :)

    did i get anything wrong, or miss anything?

    In conversation about 3 months ago from social.vlhl.dev permalink

    Attachments




  15. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Thursday, 17-Jul-2025 02:27:16 JST anna anna
    in reply to
    • anna

    one key takeway i had from this soname / abi != package-version / api is that adding fields to structures shouldn’t be a thing to worry about that much, removing them yes, adding, reordering, etc, no

    libraries shouldn’t keep their data “obscured” behind a malloc-d pointer just for the sake of binary compatibility. there is other reasons for opaque pointers, but more often than not, a library will be better by letting users choose where to allocate data, be it on the stack or on the heap or statically or so on

    and if you worry about people accessing fields they shouldn’t, c23 provides [[deprecated]], meaning you can do:

    #if !defined(MYLIB_INTERNAL) && __STDC_VERSION__ >= 202311L # define mylib_private [[deprecated("private struct member, do not use.")]] #else # define mylib_private #endif

    and mark struct members as such

    distros should have mechanism to easily trigger rebuilds on soname changes, as well as mechanisms to keep the old soname around as long as there’s packages linked to it

    the fact that some distros don’t, is not a limitation of the system, but an implementation failure

    In conversation about 3 months ago from social.vlhl.dev permalink
  16. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Thursday, 17-Jul-2025 02:27:12 JST anna anna
    i need a fucking dev blog ngl

    RE: https://social.vlhl.dev/objects/e9907b8b-49dc-4efc-ae3e-b59f4ff02375
    In conversation about 3 months ago from social.vlhl.dev permalink

    Attachments


  17. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Wednesday, 16-Jul-2025 07:56:11 JST anna anna
    • Haelwenn /элвэн/ :triskell:
    @ska @lanodan gettext is posix now too so I'll just use it
    In conversation about 3 months ago from social.vlhl.dev permalink
  18. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Wednesday, 16-Jul-2025 07:38:33 JST anna anna
    in reply to
    • Haelwenn /элвэн/ :triskell:
    @lanodan @ska i also don't have my own personal catchall lib

    i also prefer to make smaller libs that can be packaged individually, and provide a set of utilities for a given topic, say a lib here for linear algebra math, or so on -- not a fan of "the one package with N libs under my name", it also helps that meson/muon lets me easily include what i need in a project as a subproject/wrap-file

    so far i've used strtol and kindof just... checked if endptr matched what i expected the string to be
    In conversation about 3 months ago from gnusocial.jp permalink
  19. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Wednesday, 16-Jul-2025 07:33:52 JST anna anna
    • Haelwenn /элвэн/ :triskell:
    @ska @lanodan what i've done in the past is defining an status enum and providing a `strerror` function
    In conversation about 3 months ago from social.vlhl.dev permalink
  20. Embed this notice
    anna (navi@social.vlhl.dev)'s status on Wednesday, 16-Jul-2025 07:30:19 JST anna anna
    • Haelwenn /элвэн/ :triskell:

    @ska @lanodan i don’t really use errno for it (aside from openrc, where like 90% of the errors are errno set by libc, and 10% we set)

    i was thinking of something like a lib doing thread_local enum libfoo_status status;, and if say a function returns NULL or false, then status would have a lib-specific more detailed code, or even thread_local struct libfoo_status status; with even more info, like maybe failure location in a parser

    most new code i usually see does that with what you called the pthreads or something similar, return that enum or struct by either the return value or a pointer argument, e.g.

    enum libfoo_status func(struct foo *out, int somearg);

    or

    struct foo *func(int somearg, enum libfoo_status *status); (this one usually allows NULL status to “ignore” it)

    so my brain was just wondering if there’s anything technically wrong with doing the thread_local thing, or if thread_local vars just suck in general and thus everyone prefers to return the status locally one way or another

    In conversation about 3 months ago from social.vlhl.dev permalink
  • Before

User actions

    anna

    anna

    a wannabe hacker just going arounda c gremlingif i forget to cw or alt text please scream at me to, thank you♫♪ And yet we laughed despite it all, at this life which has no meaning at all ♪♫

    Tags
    • (None)

    Following 0

      Followers 0

        Groups 0

          Statistics

          User ID
          146844
          Member since
          8 Jul 2023
          Notices
          1034
          Daily average
          1

          Feeds

          • Atom
          • Help
          • About
          • FAQ
          • TOS
          • Privacy
          • Source
          • Version
          • Contact

          GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.

          Creative Commons Attribution 3.0 All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.