paperplane

joined 1 year ago
[–] [email protected] 1 points 1 week ago* (last edited 1 week ago) (1 children)

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.)

[–] [email protected] 26 points 1 month ago

CMake can also emit its own errors during the configure step though, particularly if you have complicated build logic and/or lots of external packages.

[–] [email protected] 2 points 1 month ago (1 children)

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

[–] [email protected] 1 points 5 months ago (1 children)

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 #ifdef __cplusplus extern "C" {... should alleviate the name mangling issues.

[–] [email protected] 2 points 6 months ago* (last edited 6 months ago)

To be fair, the gaming chair also holds you against lateral GeForce

[–] [email protected] 1 points 6 months ago* (last edited 6 months ago) (1 children)

or Swift, Rust has semicolons while Swift doesn't

[–] [email protected] 6 points 7 months ago

It's open source though and they plan on adding Linux/Windows support in the future

[–] [email protected] 6 points 8 months ago (1 children)

Side note: Rust is the only of the three to have an ML-style type system, which is generally agreed upon as one of the most theoretically sound foundations. Also the point is that Rust does it precisely without requiring dynamic allocation, as opposed to Go, for example.

[–] [email protected] 1 points 8 months ago

Why not just add a timestamp that rotates every, say 5 seconds, to the hashed data?

That would make it infeasible to precompute the table permanently (it would have to be precomputed for a very narrow attack window, which is still better than nothing)

[–] [email protected] 5 points 10 months ago

A nice example of this is Ardour: A DAW that's free in the sense that the source code is GPL, but the prebuilt official binaries have to be paid for.

[–] [email protected] 16 points 10 months ago (3 children)

How so? It's a polished Unix desktop that runs most open-source and a bunch of proprietary apps, including Final Cut and Logic. It's natively POSIX and has a proper shell.

[–] [email protected] 1 points 11 months ago* (last edited 11 months ago) (1 children)

Not OP, but a pretty common reason is having a super-modular and hackable IDE that can be used to develop pretty much anything. Everything is JSON-configurable, all editors are webviews, so adding stuff like HTML rendering in Jupyter notebooks is almost trivial from a technical perspective. Fleet might be a step in the right direction, but still feels like a layer on top of IntelliJ, which is a beast in of itself, plus it is closed-source.

Also the approach of decoupling editors from the language support via LSP might be one of the biggest innovations in this space in recent years, IMO. Having a widely adopted and open protocol for language support effectively made Neovim, Emacs etc. a viable choice. It has spawned several high-quality LSP implementations, often directly supported by the compiler vendors, e.g. clangd or rust-analyzer.

Arguably Microsoft has been monetizing a bunch of services on top of VSCode too and they haven't always stuck to their own principles (see Pylance, a closed-source language server that only runs in official VSC builds), but the LSP itself was still a pretty big net positive.

view more: next ›