this post was submitted on 08 Sep 2024
38 points (95.2% liked)

Programming

17362 readers
254 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
 

I have a small homelab running a few services, some written by myself for small tasks - so the load is basically just me a few times a day.

Now, I'm a Java developer during the day, so I'm relatively productive with it and used some of these apps as learning opportunities (balls to my own wall overengineering to try out a new framework or something).

Problem is, each app uses something like 200mb of memory while doing next to nothing. That seems excessive. Native images dropped that to ~70mb, but that needs a bunch of resources to build.

So my question is, what is you go-to for such cases?

My current candidates are Python/FastAPI, Rust and Elixir, but I'm open for anything at this point - even if it's just for learning new languages.

you are viewing a single comment's thread
view the rest of the comments
[–] atomkarinca@lemmygrad.ml 3 points 2 months ago (1 children)

Are you planning to compile the programs on the thin client? Although rust runs efficiently on a lot of hardware, compiling is gut-wrenching.

I have an rPi 1B running as a lightweight server and both rust and c++ applications take hours to compile (some of them take over a DAY). so, interpreted languages might be what you're looking for. my favorite is python. most distros have a lot of native packages in their repos. albeit a little weird to work on, perl is great, too.

[–] felsiq@lemmy.zip 3 points 2 months ago (2 children)

To add to this, with rustup you can add different build targets than the current system - could let you build the binary on a more powerful pc and then just scp it over.

[–] Ephera@lemmy.ml 5 points 2 months ago* (last edited 2 months ago)

Yeah, we do this regularly at $DAYJOB, although we use Cross.

Basically, if you pull in any libraries with vendored C code, like e.g. OpenSSL, then you'd need to configure a linker and set up cross-compilation for C code.
Cross does the whole compilation in a container where this is already set up, so you just need to install Docker or Podman on your host system.

Basically:

cargo install cross

cross build --release --target=armv7-unknown-linux-gnueabihf

...and out plops your binary for a Raspberry Pi.

[–] atomkarinca@lemmygrad.ml 3 points 2 months ago

this is great.