What I mean is that you (IIUC) can’t use an AGPL library in a GPL app without relicensing the whole thing to AGPL. For many larger projects relicensing is a huge hassle and often a non-starter if there aren’t very good reasons for it.
- 0 posts
- 27 comments
- 1 year
- 1 year
“just don’t enforce it” probably isn’t enough for most companies and projects
- 1 year
A good reason to pick GPL is if you want to allow GPL software to integrate yours and you don’t care that much about the AGPL clauses (e.g. because your app isn’t a server).
CC0 might be a good fit for trivial template repos where you don’t want to burden downstream projects with having to include copyright notices.
Having the ability to overload functions or constructors without a million
Stuff::with_xvariants is something I consider more ergonomic and not unsafe. I know the Rust community prefers explicitness in many places, but explicitness and safety are somewhat orthogonal in language design. I consider e.g. Swift to be a safe and ergonomic/sugared language, that borrows, no pun intended, a lot of ideas from Rust
As long as you limit yourself to a subset of modern C++, it’s actually a decent language. Less guardrails than Rust, but more syntactic sugar (think overloading, default parameters, implicit this, implicit reference-taking, implicit conversions). You could argue those are anti-features, but even as someone who really likes Rust, I gotta admit C++ is occasionally more ergonomic.
- paperplane@lemmy.worldtoProgramming@programming.dev•Where can I find a debugger with a GUI for Linux?1 year
VSCode + CodeLLDB is great (and FOSS), surprised no one mentioned this yet
- paperplane@lemmy.worldtoProgramming@programming.dev•Why hasn't gradle been adopted for C/C++ projects?1 year
I know a bunch of larger C++ apps that use vcpkg for cross-platform (Windows/macOS/Linux) builds of their dependencies and it seems to work pretty well
When case insensitivity is the default I always wonder how many apps unknowingly rely on that due to typos somewhere. I encountered this once while porting a Windows/macOS app to Linux that someone imported a module with the wrong case and nobody noticed
- paperplane@lemmy.worldtoProgramming@programming.dev•Rider and Webstorm from JetBrains are now free for non-commercial use2 years
Tbh rust-analyzer is still pretty great. What bothers me more is that Kotlin is pretty much the only language without an official language server, because it doesn’t align with their business interests…
- paperplane@lemmy.worldtoProgramming@programming.dev•What are your favorite statically typed, compiled, memory safe programming languages?2 years
It’s opt-in in Swift 5 mode and opt-out in Swift 6 mode, the Swift 6 compiler supports both modes though and lets you migrate a codebase on a module-by-module basis.
Agree that opt-in sort of defeats the point, but in practice it’s a sort of unavoidable compromise (and similar to unsafe Rust there will always be escape hatches)
- paperplane@lemmy.worldtoProgramming@programming.dev•What are your favorite statically typed, compiled, memory safe programming languages?2 years
Swift does have data race safety as of Swift 6 with their actor-based concurrency model and are introducing noncopyable types/a more sophisticated ownership model over the next few releases
- paperplane@lemmy.worldtoProgramming@programming.dev•What are your favorite statically typed, compiled, memory safe programming languages?2 years
Swift fits the description too
- paperplane@lemmy.worldtoProgramming@programming.dev•What are your favorite statically typed, compiled, memory safe programming languages?2 years
Not that specific tbh, most newer native languages these days are compiled and memory safe (Rust, Swift, Go, Kotlin Native, etc)
- paperplane@lemmy.worldtoProgramming@programming.dev•What are your favorite statically typed, compiled, memory safe programming languages?2 years
Coming from Haskell, OCaml always felt a bit strange to me. The double semicolons, the inconsistency in the standard library between curried and uncurried functions etc. Maybe I’m confusing it with Standard ML though, can’t remember.
- paperplane@lemmy.worldtoProgramming@programming.dev•Looking for a system/application language that is better than C/C++2 years
Counterpoint, I believe the Swift syntax strikes a much better balance than Rust in terms of ergonomics and argument labels are awesome for designing fluent APIs. There are things that Rust does better, aside from having a bigger ecosystem, namely the whole borrowing/ownership system, though they’re catching up (noncopyable types and references are coming soon).
The concerns about ARC are generally a bit overstated, ARC only comes into play with classes, which modern Swift greatly deemphasizes in favor of structs, enums and protocols. Sure, sometimes you need them, especially when interoperating with Objective-C, but Rust has its escape hatches for reference counting too (Rc/RefCell, Arc/Mutex), those are just (intentionally) a bit more verbose.
In short, Swift encourages a very similar, value-oriented programming style as Rust with a modern type system (generics, associated types etc.), while offering lots of nice syntactic sugar (property wrappers, result builders etc.)
- paperplane@lemmy.worldto
Programmer Humor@programming.dev•This is my life now, until I finally understand Cmake.
2 yearsCMake can also emit its own errors during the configure step though, particularly if you have complicated build logic and/or lots of external packages.
That’s mostly still true, with the small caveat that the default prefix on arm64 macOS is /opt/homebrew rather than /usr/local, so you might have to add it explicitly to your PATH
Projects for Apple platforms usually also use .h, where it could mean anything from C/C++ to Objective-C/C++.
In practice, Clang handles mixed C/C++/Obj-C codebases pretty well and determining the language for a header never really felt like an issue since the API would usually already imply it (declaring a C++ class and/or Obj-C class would require the corresponding language to consume it).
If a C++ header is intended to be consumed from C, adding the usual
should alleviate the name mangling issues.
or Swift, Rust has semicolons while Swift doesn’t

In both cases, checkout updates your working tree (by checking out either all or just some files from a commit), just when you’re switching branches it moves your HEAD pointer too