Comment by pjmlp

6 days ago

The use cases is not writing unsafe C in first place, and proving the point Go is usable in such scenarios, regardless of naysayers.

The creators of USB Armory also created TamaGo, instead of using Rust, exactly for the same reasons, to prove a point.

https://github.com/usbarmory/tamago

https://reversec.com/usb-armory/

Because in IT, seeing is believing.

It's also a good way to learn about UEFI for people most familiar with go.

Quite apart from that, an EFI shell that's less awful than the standard UEFI one is an interesting project in its own right...

No amount of proven points will give Go null safety, though.

  • Yet the whole Docker, Kubernetes, CNCF ecosystem is powered by Go, doesn't seem to have been hindered by lack of null safety.

    Same applies to GCP, AWS and Azure, powered mostly by Java, C# and C++.

    People should stop being so obsessed with one specific language feature, when there is so much C and C++ code being produced every day.

    • And Linux kernel is written in C etc, so by this logic you don't even need memory safety. There is no good excuse for designing a language in modern times (this century) with every object nullable by default. C# at least mostly has solved this design mistake later by introducing nullable reference types (https://learn.microsoft.com/en-us/dotnet/csharp/nullable-ref...). Then again, Go designers insisted that generics were also unnecessary, until they changed their mind.

      1 reply →

If one can't write safe C code, then maybe stick to web development and leave the bootloaders and UEFI stuff to people who can.

Training wheels are merely a race to the bottom for barely-literate programmers.

  • The number of memory safety CVEs written in C by people who ostensibly 'didn't need training wheels' point strongly to the antithesis of your argument.

    And I say that as someone who's been a kernel engineer for 20 years.

  • Nah, people ignore on purpose that C creators are the first to acknowledge C's flaws, hence why Alef, Limbo and Go were created by them, and Plan 9/Inferno as improvements on UNIX.

    Too many focus on where the journey started instead of where it ended.