Live data from Hacker News

Programming languages endorsed for server-side use at Meta

engineering.fb.com

271–280 of 302 posts

Re: Programming languages endorsed for server-side use at Meta

#271
post #193
post #157

Earlier quoted context omitted.

I've often wondered what it would be like having a variant of Rust that was essentially the same underlying language, but with a garbage collector of some kind instead of a borrow checker and lifetime annotations.

That would be pretty close to OCaml.

That's fair. My favorite language so far has been F#, so maybe it's some of that preference sneaking through.

Re: Programming languages endorsed for server-side use at Meta

#272
post #172

Earlier quoted context omitted.

Chasing popularity seems to be a necessary evil these days. I am disappointed when zig calls itself a general purpose language, and 10 years ago Go called itself a system language.

Back in my days, systems programming evolved writing compilers, linkers, os drivers and kernels. Given that the whole Go toolchain is bootstraped, it fulfills that role quite alright. Maybe we need drivers and such to strenght the argument, well given the role of gVisor and Android GPU debugger, that seems a case for systems programming. Maybe still not good enough, then I refer to the F-Secure TamaGo unkernel being…

I’ve seen comments from you several times that echo this point. But it always seems to end conversations, which I find disheartening, because I’d really like to see others at least discuss your point, even if they never adopt a similar view. Your premise seems to be that most devs are overlooking the applicability of ‘managed’ languages in the area of ‘systems programming.’ I think your listing of systems programming topics above is a fairly representative sample and I never see much push back, or any concrete examples, for why a managed language is not capable of being used in the general case.

I agree that examples of drivers, and possibly kernels (outside of Oberon), that utilize managed languages may be needed to really start the conversation, but there really should be a conversation. So, off hand, can you think of any books, technical reports, papers, videos, whatever on this general topic that can point me deeper? At my core as a developer, I am concerned first and foremost with performance (along many metrics, not just wall-clock speed), but outside of hard or soft real-time systems (and soft may have more leeway than is commonly claimed) I really think there are some big wins possible in multiple areas by switching the default definition of ‘systems programming language’.

PS. Sorry for going super OT and for dragging up an almost day old comment.

Re: Programming languages endorsed for server-side use at Meta

#273
post #172

Earlier quoted context omitted.

Back in my days, systems programming evolved writing compilers, linkers, os drivers and kernels. Given that the whole Go toolchain is bootstraped, it fulfills that role quite alright. Maybe we need drivers and such to strenght the argument, well given the role of gVisor and Android GPU debugger, that seems a case for systems programming. Maybe still not good enough, then I refer to the F-Secure TamaGo unkernel being…

I’ve seen comments from you several times that echo this point. But it always seems to end conversations, which I find disheartening, because I’d really like to see others at least discuss your point, even if they never adopt a similar view. Your premise seems to be that most devs are overlooking the applicability of ‘managed’ languages in the area of ‘systems programming.’ I think your listing of systems programming…

It is hard to have such conversations, because they tend to be more ideologic than technical.

Most of the systems that we had in such directions, like Xerox PARC and ETHZ endevours, Inferno, Microsoft research, usually failed not because of technical issues (which they had), but because management decided to spend money elsewhere.

As proven by stuff like Android, JavaScript JIT and similar projects, it isn't a MVP product, rather something that you really need to be willing to spend years putting money into to prove a point, and the large majority isn't into it.

Regarding information, the now abandoned Android Things replaced the original Brillo project, whereas Brillo was Android without Java everything C++, Android Things became a subset of Android, where for security reasons drivers would have to be written in Java.

https://developer.android.com/reference/com/google/android/t...

Since Project Treble, Android allows for writing Treble drivers in Java,

https://source.android.com/devices/architecture/hidl

Apple's continuous push for Swift (they even made the point at WWDC 2022 that Objective-C is done and thank him for all the fish) is another example, so anything coming from them. Yes, Swift does count as managed language, as RC is a GC algorithm.

Re: Programming languages endorsed for server-side use at Meta

#274
post #196
post #142

Earlier quoted context omitted.

I believe you're thinking of Project Verona. https://www.microsoft.com/en-us/research/project/project-ver...

I wouldn't put much stock in MSR languages until they get usage in other orgs. There's at least a dozen research languages in flight at a given point in time. They used to have this great site were you could interact with them all: https://web.archive.org/web/20180130101736/https://www.rise4... Source: I'm a former member of RiSE

To be fair, many modern C# features have started their life in MSR languages and eventually found their way to C#.

It is also where F# started, although they seem not yet to know where to push it, or if it was a good idea to actually box it in VS 2010.

Re: Programming languages endorsed for server-side use at Meta

#275

Earlier quoted context omitted.

Rust is far more widely used than D in the industry, so it's no surprised that it's more supported at Meta. Re: Go, it's use cases overlap with the officially supported languages, so there's no broad need for it.

>> Rust is far more widely used than D in the industry An off the cuff comment but all the same it made me think - how would you get data for an assertion like that. The usage of both D and Rust is notoriously low in the industry, a rounding error. That has to make it so hard to measure. Still, you'd expect D to be more popular because Rust's only been around 10-ish years or so. If you click through the TIOBE ranking…

You've said many wrong things on this thread, but the most egregious is quoting TIOBE like is has any meaning whatsoever. It's exclusively meant for managers who have no technical chops.

Do you even know what TIOBE measures? Not usage, not sentiment, not search trends. It measures the number of search results that a term returns. So any change to Google's algorithm changes the ranking of a programming language. If Google starts returning coffee results for "Java" that will boost it's TIOBE ranking.

Let me give you a few examples of how dumb TIOBE is.

1. You know what's the most popular language by any metric - jobs, Github repos/PRs, stackoverflow stars, survey results? Yeah, JavaScript. You know what TIOBE ranks higher than JS? Visual Basic.

2. Next, you know the entire iOS ecosystem that supports tens of thousands of devs and the billions of dollars in app revenue? All of it is written in Swift and Obj-C. You know what's ranked higher than those two? Assembly Language.

3. You know what almost all new web frontend codebases are written in now? TypeScript. In a few years it'll be the #1 language in the world once it supplants JS. You know it's TIOBE rank? #37, below Scratch, Prolog, Object Pascal.

But no, perhaps your confident assertion that Mozilla doesn't use Rust beats this TIOBE nonsense.

Re: Programming languages endorsed for server-side use at Meta

#276

> Meta’s primary supported server-side languages are Hack, C++, Rust, and Python. > For specific use cases, we support other languages, including Java, Erlang, Haskell, and Go Makes sense. Python because ML. Rust because of performance. C++ and Java because all-the-things. Go because 75% of all cncf.io projects are Go. Haskell because elitism. Erlang because stability. /s I think the real story is that migrating off…

> Erlang because stability. Maybe because of WhatsApp acquisition ? Some services might still be running in Erlang. Last I heard, Erlang was being replaced by C++. > Haskell because elitism. Haxl used to be a project at FaceBook, not sure what Haskell is used for now there. Thoughts as an outsider. I dont work [neither have worked] at Meta.

I think Sigma (FB's spam filtering system) is still written in Haskell, but I may be wrong (basing this around internet rumours since I don't work at Meta).

Re: Programming languages endorsed for server-side use at Meta

#277
post #250

This was an interesting, thought-provoking read. But the author of the post is a member of the board of directors of the Rust Foundation. https://foundation.rust-lang.org/news/2022-03-16-news-announ... Perhaps a blind spot for Meta is they're spending time working away from PHP/Hack so as they reach for Rust (away from web-centric languages) they don't realize TypeScript has compelling reasons to choose it on the ser…

Single threaded JIT for dynamic languages is no match to JIT designed for static languages or plain AOT compiled languages.

I cringe every time I need to deal with node powered software on the backend, including some famous build tools.

Re: Programming languages endorsed for server-side use at Meta

#278
post #266

Earlier quoted context omitted.

Can you link to the source of any widely deployed grep whose "inner loop" is coded in Assembly?

ugrep has full SSE/AVX support https://github.com/Genivia/ugrep/blob/a3acf863803a755ff8da8c...

So does ripgrep... Which is written in Rust. So how exactly is Rust a poor fit?

And that isn't Assembly.

So I guess what you said earlier, "grep inner loops are coded straight in Assembly," was a misrepresentation. And that "Rust was a poor fit" is just empirically wrong.

Re: Programming languages endorsed for server-side use at Meta

#279
post #30

“Since we began our journey with Rust, the number of projects using Rust inside Meta has increased at an accelerated rate” That almost sounds like an endorsement. I’ve been holding off learning Rust. However, it seems like Rust adoption is reaching a tipping point.

Rust adoption very much seems to be ramping up within the really big companies. Google talking about it both for Android and Chrome, FB with a ton of things, Apple had uses for it I think but I'm blanking on what, Amazon is using it for at least some new AWS infrastucture...

It's commonly used at Cloudflare too. You're probably browsing pages piped via Rust services every day.

Re: Programming languages endorsed for server-side use at Meta

#280
post #70

Earlier quoted context omitted.

Andrei is now at NVidia, and I bet most likely for his C++ skills. It is a pity that D never found its enterprise sponsor to push it no matter what. Even the recently announced Carbon could probably have somehow built on top of it.

Depressing that even a PL savant amongst us has to go and ply his trade around town instead of being financially independent.

You are absolutely right. Many languages, libraries and tools are crucial for the software industry and the whole world.

And yet in 2022 we still have to beg employers and donors to keep those projects running.

Post reply on HN