Hacker Newsnew | past | comments | ask | show | jobs | submit | phplovesong's commentslogin

RIP Legend

Vim slime is awesome. I use it for tinkering in languages with a repl like ocaml or javascript.

The feedback loop is probably the best in class from anything i have ever used. No IDE comes even close.


The swedish gripen can do mach2 (2300km/h) and does not need a traditional runway (500 meters of something "flat enough" will do). I assume its way cheaper than something like this.

That doctrine works great for defending your homeland, when you are taking off from your roadside base and coming back home to a road-based airfield already on the map.

My understanding of these VTOL aircraft is they need to travel a long way, quickly, and set down in far less predictable conditions.


Are you saying these are for human transport? Sounds like real niche in modern warfare.

I suppose the argument is that X-76 could work in environments without roads. But that also implies without fuel or any other support on the ground.

What usecase is this? Where is a place "without roads", and that can be important enough for something like this?

Can it hover?

Why do you need hover? Its a pretty useless thing that requires shitloads of engineering (for a plane, not a heli). It sounds like a hollywood movie like requirement that is built for the purpose of burning tax payer dollars.

async rust is the worse async out there. I prayed that rust did not include a async at all. But the JS devs pushed it thru. That pretty much sealed my rust use. Im still salty.

You know what, I’ve heard people say this and thought “OK, maybe these other languages with GCs and huge runtimes really do something magical to make async a breeze”.

But then I actually tried both TypeScript and C#, and no. Writing correct async code in those languages is not any nicer at all. What the heck is “.ConfigureAwait(false)”? How fun do you really think debugging promise resolution is? Is it even possible to contain heap/GC pressure when every `await` allocates?

Phooey. Rust async is doing just fine.


Try golang, where they did the only sane thing: everything is async from the very beginning, no function colouring

I think practical experience with Go reveals that this choice being “the only sane thing” is highly debatable. It comes with huge drawbacks.

Of course it has drawbacks, everything does, but my practical experience has been hugely in favor of what golang is doing, at least, in terms of cognitive load and code simplicity. It is very much worth it in many, many cases

In .NET 11 C# async management moved to the runtime, mostly eliminating heap allocations and also bringing clean stack traces. You really only need to think about ConfigureAwait(false) when building shared libraries or dealing with UI frameworks (even there you mostly don't need it).

You speak in the past tense, but .NET 11 is not released yet at time of writing. Runtime-async is not the current reality.

True, it's in preview currently, but actually .NET is already very efficient with async today also - https://hez2010.github.io/async-runtimes-benchmarks-2024/ (.NET9 tested here).

Sure, it’s really fine for what it does, but it is not significantly easier to deal with than Rust async, and remains fundamentally unsuited in several scenarios where Rust async works really well.

Unless you are writing GUI code, ConfigureAwait() shouldn't be on your source code.

How does it compare to Kotlin async? I find Kotlin generally hits a good balance across the board.

Not sure who pushed async Rust, but at least async JS does work without having to hunt down for runtimes, and naturally the answer is always Tokio.

Usually the answer is embassy for me.

And embedded systems vastly outnumber classical computers. Every classical computer includes several microcontrollers, every car, modern appliance, camera, toy, etc does too. Safe languages for embedded and OSes is very important. Rust just happens to be pretty good for other use cases too, which is a nice bonus. But that means the language can't be tied to a single prescribed runtime. And that it can't have a GC, etc.


PTC and Aicas would disagree there.

As might microEJ, Meadows, F-Secure, Astrobe and a few others.


> PTC and Aicas would disagree there.

Never heard of either. You will have to expand on your reasoning. Microcontrollers do outnumber classical computers though, that is just a fact. So i don't see why there is anything to disagree about there. Even GPUs have helper microcontrollers for thermal management and other functions.


They have been selling real time bare metal Java runtimes for embedded systems, widely deployed across weapon systems in battleships and missile tracking units, factory automation, satellites, and other similar systems for the last decades.

I bet many of those helper microcontrollers, are still Assembly, compiler specific C, and if there is Rust support, most likely only no_std fits, thus no async anyway.


Java on smartcard etc is a thing. I haven't met anyone who used that and actually like it. And it is apparently nothing like normal java.

Many microcontrollers are indeed still running C, but things are starting to change. Esperif has official support for Rust for example, and other vendors are experimenting with that too. Many other microcontrollers have good community support.

> if there is Rust support, most likely only no_std fits, thus no async anyway.

This is just plain incorrect. The beauty of async in rust is that it does work on no_std. You don't need an allocator even to use Embassy. Instead becuause async tasks are perfectly sized, you can reserve space statically at compile time, you just need to specify with an attribute how many concurrent instances of a given task should be supported.


PTC and Aicas aren't Java on smartcards, they are Java on high integrity computing where human lives might be at stake.

Interesting how compiler specific extensions are ok for C, with a freestanding subset, or Rust no_std, but when it goes to other languages it is no longer the same.

I stand corrected on async Rust then.


> Interesting how compiler specific extensions are ok for C, with a freestanding subset, or Rust no_std, but when it goes to other languages it is no longer the same.

Not sure what you mean here. For Rust there is only one de facto compiler currently, though work is ongoing on gccrs (not to be confused with rustc_codegen_gcc, which only replaces the llvm backend but keeps the rest of the compiler the same). Work is also ongoing on an official spec. But as it currently stands there are no compiler specific extensions.

If you meant the attribute I mentioned for embassy? That is just processed by a rust proc-macro, similar to derives with serde is used to generate (de)serialisation code. It too adds custom attributes on members.


It means that being constrained to C compiler dialect for tiny CPUs instead of ISO C proper, or being constrained to [no_std] instead of the whole Rust capabilities and ecosystem, isn't seen under the same light as when it is C++, Swift, Go, Java or whatever else might also be constrained for the same purpose.

Hm, I haven't come across such sentiment. It is fairly well understood that if you use C++ for example on embedded, you are limited as to what features you can use. I remember coming across that when using PlatformIO for Arduino many years ago, certain parts of STL was just missing.

The other languages you mentioned I have no personal experience of in embedded (and hardly outside embedded either), but I understand they are less common (apart from Java possibly, but only in certain niches). There is also Ada/SPARK and MicroPython (which always seemed more like an educational thing for people new to programming). I haven't used either.

I would like to add that it feels like no-std rust is less constrained than freestanding C to me. I haven't managed to figure out why exactly. Perhaps the ecosystem of crates in Rust for embedded is just better, with many crates offering a way to opt out of the std-parts (plus a number of good libraries aimed directly at no-std). Perhaps it is that it is easy to add alloc to no-std if you are working on a higher end embedded system (with obvious tradeoffs in code size, memory usage etc). Or perhaps the no-std parts of rust simply contains more than freestanding C.


Wasm is really cool. I imagine a runtime that competes with the likes of JVM thats fully server side that runs wasm.

We have shipped unikernels for the last decade. Zero sec issues so far. I highly recommend looking into the unikernel space for a docker alternative. MirageOS being a good start.

cool! What services have you shipped as unikernels? Docker doesn't have to be an alternative; it can help with the build/run pipeline for them too: https://www.youtube.com/watch?v=CkfXHBb-M4A (Dockercon 2015!)

Mostly finance stuff, and all the sensitive stuff that comes with it.

But the main benefit is the attack surface is greatly reduced when running a unikernel. Also we use way less resources and get really good perf.


You can pretty much replace "docker build" with "go build".

But as long as people want to use scripting languages (like php, python etc) i guess docker is the neccessary evil.


>You can pretty much replace "docker build" with "go build".

I'll tell that to my CI runner, how easy is it for Go to download the Android SDK and to run Gradle? Can I also `go sonarqube` and `go run-my-pullrequest-verifications` ? Or are you also going to tell me that I can replace that with a shitty set of github actions ?

I'll also tell Microsoft they should update the C# definition to mark it down as a scripting language. And to actually give up on the whole language, why would they do anything when they could tell every developer to write if err != nil instead

Just because you have an extremely narrow view of the field doesn't mean it's the only thing that matters.


My point was that 90% of "dockerized" stuff is just scripting langs

Go is just one language, while Dockerfile gives you access to the whole universe with myriads of tools and options from early 1970s and up to the future. I don't know how you can compare or even "replace" Docker with Go; they belong to different categories.

In some situations, yes, others no. For instance if you want to control memory or cpu using a container makes sense (unless you want to use cgroups directly). Also if running Kubernetes a container is needed.

You have to differentiate container images, and "runtime" containers. You can have the former without the latter, and vice versa. They are entirely orthogonal things.

E.g. systemd exposes a lot of resource control as well as sandboxing options, to the point that I would argue that systemd services can be very similar to "traditional" runtime containers, without any image involved.


Well, I did mention "or use cgroups" above.

And what I've said is that there are more options. You don't have to use cgroups directly, there are other tools abstracting over them (e.g. systemd) that aren't also container runtimes.

Wasn’t this the same argument for .jar files?

> You can pretty much replace "docker build" with "go build".

Interesting. How does go build my python app?


It obviously means you dont use a scripting language, instead use a real langauge with a compiler.

Calling "go" a "real language" is stretching the definition quite a bit.

Real languages don't let errors go silently unnoticed.


For any serious app you dont ignore errors, and enforce them with the vast go linting tool.

Ok yeah let me just port pytorch over that should be quick

It doesn't sound like Golang is going to dominate and replace everything else, so Docker is there to stay.

At the risk of stating the obvious, there's quite a lot of languages besides just scripting languages and Go that get run in containers.

Many ada devs probably write software i would not be comfortable writing. Its always been a kind of place i dont want to be part of.

Assuming your discomfort is around the defense side of things here's an example of a diving reberather system using Spark/Ada from a while back.

https://youtu.be/zL9vVs5vHuQ?si=-thG-FkelkW6oFfb


It's used for planes, trains, and automobiles. No reason to feel uncomfortable working on those things.

Honestly i would be shit scared writing software for planes/trains etc. One bug can literally cost multiple lives. I rather have less stress in my life.

What are we comparing Ada to… PHP?

I wonder what Ada Lovelace would think about her namesake being the language for weapon systems.

She was an aristocrat in the greatest empire the world had ever seen. She is unlikely to have objected to weapons systems per se.

I’d rather fly in an airplane with a system coded in Ada/Spark rather than Python ¯\_(ツ)_/¯

you have problem with Snakes in a plane ?

I've had it with these monkey-coding snakes this Monday-to-Friday work-week.

[flagged]



Haxe used to be the goto for Flash development. Maybe it could benefit a project like this too. I assume the target is AS5?

Rust has nothing new (even the lifetime stuff is copied) really. It just marketed itself really well. It got a huge number of migrants from JS/TS ecosystem, and python, and some from the C(+*) ecosystems.

Its a good language dont get me wrong, but also a huge pita to work with.


> Rust has nothing new (even the lifetime stuff is copied) really.

Rust has nothing new by academic standards, and this is an explicit goal of the project. (And that's why it has yet to support e.g. Haskell-like higher-kinded types; or dependent types for compile-time programming: the interaction with its low-level featureset is very much an open question.) It's incredibly novel as a production language, of course.


It has nothing new but they did a good job at cherry picking what what nice in other languages.

Which makes it an interesting language to learn actually. I even feel like Rust can even be a superb first language to learn for a new programmer : that’s a journey for sure but it would expose you to most of the modern programming concepts.


> [Rust is] a good language [...] but also a huge pita to work with

This is practically the elevator pitch of the language :) and I speak as one who likes it a lot!


Saying it has nothing new seems like an uncharitable take. Yes, it has influences (that rust docs dedicate a page to [0]), but PL theory has such a rich body of literature that you can make a similar claim about virtually any language. It's the whole package that matters, and I don't think there's anything "rust but earlier" to point to there. Certainly isn't Ada.

[0] https://doc.rust-lang.org/reference/influences.html


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: