• 3 Posts
  • 212 Comments
Joined 6 years ago
cake
Cake day: May 31st, 2020

help-circle









  • I’m on NixOS for my personal laptop, too. I just tried it and well, #!/bin/bash apparently does not work, but #!/bin/sh does.

    The file /bin/sh does also exist as a symlink for me:

    > ls -l /bin/sh
    lrwxrwxrwx 1 root root 73 14. Dez 19:50 /bin/sh -> /nix/store/35yc81pz0q5yba14lxhn5r3jx5yg6c3l-bash-interactive-5.3p3/bin/sh*
    

    Does that point into the bash package for you, too?


    Edit: And for #!/bin/bash, the output was:

    > ./test
    exec: Failed to execute process './test': The file specified the interpreter '/bin/bash', which is not an executable command.
    

  • That is definitely not right. That sounds like you don’t have a shebang or it isn’t defined correctly. The shebang has to be the very first thing in the script, with no whitespace before it. It gets read out by the kernel, which very dumbly checks the first few bytes.

    And well, such a shebang should also work for Python or the like. If you copy the first script in this link into a file script.py, then run chmod +x script.py and finally run ./script.py, does that print Hello, World! ?




  • Lots of “modern” languages don’t interop terribly well with other languages, because they need a runtime environment to be executed.
    So, if you want to call a Python function from Java, you need to start a Python runtime and somehow pass the arguments and the result back and forth (e.g. via CLI or network communication).

    C, C++, Rust and a few other languages don’t need a runtime environment, because they get compiled down to machine code directly.
    As such, you can call functions written in them directly, from virtually any programming language. You just need to agree how the data is laid out in memory. Well, and the general agreement for that memory layout is the C ABI. Basically, C has stayed the same for long enough that everyone just uses its native memory layout for interoperability.

    And yeah, the Rust designers weren’t dumb, so they made sure that Rust can also use this C ABI pretty seamlessly. As such, you can call Rust-functions from C and C-functions from Rust, with just a bit of boilerplate in between.
    This has also been battle-tested quite well already, as Mozilla used this to rewrite larger chunks of Firefox, where you have C++ using its C capabilities to talk to Rust and vice versa.





  • I also think ANY game should have a “full potato” mode capable of running in older computers with NONE of the fancy graphics stuff that we have access to today, despite having a decent computer now.

    Problem is that the fancy graphics stuff isn’t just additive.
    For example, raytracing is actually relatively simple to implement, since you just make light behave like it does in real-world physics, according to a couple relatively straightforward rules and material properties.
    Lighting without raytracing involves tons of smokes and mirrors hacks and workarounds. For example, mirrors were often faked by building the same room behind the wall, with everything inverted, including the player character’s animations.
    So, making a game with potato graphics typically requires building a second version of the game.

    Of course, there can be a mode that does just turn off the additive stuff, so only that which does not require changing the game implementation. But that can just be one of the graphics presets…



  • The description in the ticket isn’t too bad:

    allows users to make a window disappear and keep only its title bar visible.

    It really just hides the window contents. In effect, it is similar to minimizing a window, except that it doesn’t spring into your panel and rather stays in place as just the window title bar without the contents.

    It is a niche feature, if you couldn’t tell. But it isn’t some KDE specialty feature; various other desktops and window managers also support it. I think, it was more popular in the early days of graphical user interfaces, when we were still working out, how we want to do panels and such.

    And conversely, I do think it makes more sense as a feature on big screens like you can have today, where your panel might be quite a bit away.
    Don’t think, window shading will make a big comeback just yet, but yeah, probably enough existing users that use it, so that it would be cool to support that workflow.