What does HackerNews think of cinder?

Cinder is Meta's internal performance-oriented production version of CPython.

Language: Python

#1 in Compiler
#1 in JavaScript
#10 in Python
#2 in PHP
(I use django in production myself, nothing against it)

It's probably worth noting Meta made their own JIT'd version of CPython just for Instagram/Threads. Maybe mastodon devs can use their interpreter, but Meta's human/compute resources are magnitudes more than mastodon, the lessons from Meta might not be very applicable.

https://github.com/facebookincubator/cinder

This is largely due to Meta maintaining an internal performance-oriented production version of CPython: https://github.com/facebookincubator/cinder .
https://github.com/facebookincubator/cinder

Instagram (and presumably threads) runs on Cinder which is Meta's fork cpython with GIL removed.

No, Meta’s contract has explicit carve-outs for Open-Source work done on personal time that are more generous than Canonical’s (I had to choose between the two 3 months ago).

Meta has its own production fork of CPython, Cinder:

https://github.com/facebookincubator/cinder

They’ve kind of done that with Cinder https://github.com/facebookincubator/cinder. Threads and Instagram lie on top of this and it’s essentially a fork of Python 3.10.

I think the problem there is even a company like Meta wants to rest on the shoulders of the giant Python community. It makes sense for Meta to try to get parts of Cinder into Python.

You might enjoy Cinder then. It's based on CPython so it is nearly 100% compatible.

https://github.com/facebookincubator/cinder/

Disclaimer: I used to work on it.

Have a look at Cinder - https://github.com/facebookincubator/cinder - it's Meta's performance oriented fork of CPython that they use to run Instagram (which is a big Django app).
Instagram is a huge Django app and unlike all the ML libraries, Django isn't highly optimized low-level code wrapped in Python, at least not by default. That's why Facebook are putting so much work into running a more performant fork of CPython - https://github.com/facebookincubator/cinder
Exactly.

Facebook literally maintains a python fork: https://github.com/facebookincubator/cinder

Google invented "NoSQL" before anyone else knew what it was, and all those "cloud" tools they used internally were obviously proprietary (except the ones they open sourced). Ex-Googlers I work with typically had to spend quite a bit of time re-adjusting to the "inferior" tools and processes in other companies.

Microsoft invented their own development ecosystem, and the only reason it's "common" or "standard" in the tech community is because they sell it as a product. This is the same for Apple at least for iOS development, and Amazon for their cloud service offerings.

When companies have millions of dollars to spend on maintaining a custom development environment that they think will give them a competitive edge, they will do it. It's the smaller shops that can't afford not to go with the flow, so to speak.

Cinder (https://github.com/facebookincubator/cinder) has Static Python bundled with it, which is pretty useful for replacing Cython.

[disclaimer: I work on Cinder]

One minor clarification here: Cinder[1] is actually 100% compatible with C extensions (by virtue of being a fork of CPython).

[1]: https://github.com/facebookincubator/cinder

That wasn't my intended meaning, I don't think static typing is a "fad". I think the "new" typed languages (Go, Rust, Typescript) are more ergonomic than 90s-00s Java, C++, C#, as you said. This is also forcing them to improve, with features like type inference, sealed classes, records. I also think that the combination of gradual typing and type inference is playing a big role in the adoption.

However, I called static typing a "trend", and I'll try to explain why. I think attempts to type Python, JS, Ruby and the popularity of Go and Rust are the natural consequences of people departing from the Java/C++ ecosystem 10-20 years earlier (for good reasons). Now they are rediscovering the good parts of this ecosystem (ease of deployment with binaries/fat jars, static typing, performance). Since Twitter, Github, Youtube, Shopify, Instagram, etc have all that code around, they are going to either improve it, or try to migrate from it. For example, Shopify is working on a compiler to native for Ruby based on LLVM https://sorbet.org/blog/2021/07/30/open-sourcing-sorbet-comp.... Instagram is working on a performance-oriented CPython fork https://github.com/facebookincubator/cinder. Twitter, from what I understand, went back to Java, going through Scala first (which is another example of "better type system"). KhanAcademy is migrating services from a Django monolith to Go services https://blog.khanacademy.org/half-a-million-lines-of-go/. Whatsapp even had a project to do a statically typed "Erlang 2".

The "trend" here is that some companies that use "new" dynamic languages in the 00s are now very large companies that have enough money to invest in language, tooling and things like that.

> I'm wondering why there isn't a corresponding project for Python.

But there are various projects for Python.

For example, there's Pyston [0] which was started by Dropbox. Or Cinder [1] which was started by Facebook. Or PyPy [2].

[0] https://github.com/pyston/pyston

[1] https://github.com/facebookincubator/cinder

[2] https://www.pypy.org/

There was a different similar post a few days ago from Facebook and this one stems from Dropbox and they both are said to make Python code run faster.

I think the obsession with monocultures is unhealthy.

Python is a great language. It is reasonably easy to learn, somewhat readable if you dont yet. It is one of the most popular programming languages on the planet. But it was not created to produce the fastest code possible.

There are other programming languages that are focused on speed.

Perhaps for the most critical parts use one of them. Python can integrate pretty well with C with some magic i hear- (Never tried it myself).

One programming language will never cover all use cases and they should not have to.

Every programing langue is not made to be "functional" but they can be tortured into it.

Every programming language is not object oriented, but they can be tortured into it.

Every programming langue is not focused on being the fastest on execution but they can be tortured into it.

There is a reason carpenters have more than one tool to build something.

For the longest time I programmed in C with some C++ mixed into it. It is a great language. There are many problem domains I would not recommend using C.

I think it was delightful ot pickup Python many years ago.

It is great. I can be very productive in Python in contexts were Python is great.

It is not C, it should not want to be.

Now I am picking up Elixir, I am learning a lot. It is neither Python or C and I am happy with that.

use proper tool for the job at hand

e to https://github.com/facebookincubator/cinder reply

Pyston originally started as an internal project at Dropbox and they had a couple of super interesting blogposts where they detailed their approach and findings[0]. After a a year or two, the project got axed, but the devs kept working on it and then released it on their own (I don't remember the details, but evidently the chosen license for the project allowed that).

Last year (I think it was last year, but can't tell if that was 2020 or 2019) they released it on their own, thinking of a commercial model. Now they have switched to OSS+services, which is interesting because it'llopen up more people using Pyston.

I tihnk this is interesting in its own right, but yesterday we got Facebook announcing Cinder[1] -- which is unsupported to outsiders, but significantly faster than Pyston. According to Facebook, they intend for parts of Cinder to be upstreamed (and have already upstreamed a few, apparently) to CPython. So again, and sorry for using such a vague word, it'll be interesting to see how all these things play out in time.

[0] https://blog.pyston.org/2014/09/

[1] https://github.com/facebookincubator/cinder

I got it to work with the following but errored out on openssl so I couldn't install pip. It builds fine with docker fedora 32. Thank you. Platform Fedora 32, Docker on Windows 10, Version 2004

Steps to Reproduce Install docker from docker.com

   docker run -t -i fedora:32 bash
   git clone https://github.com/facebookincubator/cinder.git
   yum install zlib-devel openssl-devel
   ./configure
   make
   make altinstall

This error is occurs when you do ./configure --enable-optimizations this version of python complies it either way.

   >> Objects/accu.o
   Parser/listnode.c: In function ‘list1node’:
   Parser/listnode.c:66:1: error: ‘/cinder/Parser/listnode.gcda’ profile count data file not 
   found [-Werror=missing-profile]
   66 | }
      | ^
If you get this error it is because you used --enable-optimizations.

github.com/brianherman https://www.linkedin.com/in/brian-herman-092919208/

Edit: Removing github flavored markdown Edit: Answering own question Edit: More formatting