Live data from Hacker News

The first new build of Circle, a new C++20 compiler, since April 2022 is online

github.com

21–30 of 80 posts

Re: The first new build of Circle, a new C++20 compiler, since April 2022 is online

#21
post #13

Earlier quoted context omitted.

Kotlin managed it in some cases with clever forwards compatible type system tricks, so it's not impossible

Except it does so by compiling into the same bytecode as Java, javap will just output Java like code from class files, and some stuff like co-routines cannot be called from existing Java code without wrappers that setup the runtime semantics as expected by Kotlin libraries.

Yes, but so? When they can implement a feature in a forwards compatible way they do, when they can't, they don't and it's caveated as such. That's why nullable types and other Kotlin specific type stuff are encoded using annotations.

It's the same strategy here. Carbon is (was?) also intended to compile to the C++ ABI and so does Circle, that's why it says it doesn't run on Windows (commercially a huge error. many of the biggest C++ codebases that could benefit are running on Windows like game engines, and Windows doesn't impose a specific C++ ABI anyway). But there's no way to take existing code files and switch them to the new language in Carbon, at least not yet. Kotlin was carefully designed at every step of the way such that every Java program can be expressed in Kotlin without change, even if that meant compromising on some things. Seems like the Carbon guys are being sucked up by the lure of safetyism and just want to make their own version of Rust that happens to compile to the Itanium C++ ABI.

Re: The first new build of Circle, a new C++20 compiler, since April 2022 is online

#22

Earlier quoted context omitted.

He seems like a wonderboy. His linkedin has a recommendation: "Cannot say enough good things about this guy--probably the most capable programmer I've ever met."

Absolutely, also Sean made enough money in his previous life to be able to work on Circle full-time (while living in NYC), truly living the dream.

100x programmer.

Re: The first new build of Circle, a new C++20 compiler, since April 2022 is online

#23
post #13

Earlier quoted context omitted.

Except it does so by compiling into the same bytecode as Java, javap will just output Java like code from class files, and some stuff like co-routines cannot be called from existing Java code without wrappers that setup the runtime semantics as expected by Kotlin libraries.

Yes, but so? When they can implement a feature in a forwards compatible way they do, when they can't, they don't and it's caveated as such. That's why nullable types and other Kotlin specific type stuff are encoded using annotations. It's the same strategy here. Carbon is (was?) also intended to compile to the C++ ABI and so does Circle, that's why it says it doesn't run on Windows (commercially a huge error. many of…

It is only forward compatible, is stuck in decisions when Java 8 was current, there is no roadmap to keep the language in sync wiht the underlying progress of the platform as Kotlin tries to be everywhere.

Loom, value types, SIMD, Panama,... are all features that start to be an issue to expose as Kotlin features.

It is working on Android, because Google is pushing it as Java 8 => Kotlin, not as Java XYZ Kotlin.

Re: The first new build of Circle, a new C++20 compiler, since April 2022 is online

#25
post #16

Earlier quoted context omitted.

I agree that safety should affect API design, which means that there is at least one major piece missing after the rewrite. Either the ability to switch to an even stricter type system (e.g. Rust) or a ~zero cost binding generator to a stricter language (again, e.g. Rust). However, before reaching that point, piecewise refactoring is something of considerable value. There are huge C++ codebases lying around that I be…

Scala and F# are safer than Rust since they're on a VM.

Well, you can compile Rust to WASM. But yes, point taken, out of the box, Scala and F# have a safer execution mode.

Re: The first new build of Circle, a new C++20 compiler, since April 2022 is online

#28
post #16

Earlier quoted context omitted.

This lays groundwork for opt-in safety per file, but safety should affect API design. Once you get done doing this to every file and refactoring every public API, have you really spent less effort than would have gone into a rewrite? If you only get halfway there, is the new version going to blow up any less often?

I agree that safety should affect API design, which means that there is at least one major piece missing after the rewrite. Either the ability to switch to an even stricter type system (e.g. Rust) or a ~zero cost binding generator to a stricter language (again, e.g. Rust). However, before reaching that point, piecewise refactoring is something of considerable value. There are huge C++ codebases lying around that I be…

C++ templates cannot be reused or rewritten piecemeal in a new language, it's practically impossible. There's a reason why the Rust folks were very careful to separate out generics from the more flexible case of macros (that come in both rewrite-based and procedural varieties).

Re: The first new build of Circle, a new C++20 compiler, since April 2022 is online

#29
First the acknowledgement: to produce this amount of work single handedly - the guy is undisputed genius.

do not want to go through the whole article but have this question:

fn ParseAsInt()

The goal for this new languages like Rust, Carbon, Go etc. is to introduce "better" alternatives to C and C++ languages and move the developers over. Nothing is wrong with that. Now to syntax: I completely understand syntax constructs that actually add value and deal with new / changed concepts like memory management, concurrency safety etc. However what is the point of changing already established syntax just for the fuck of it. What is fucking wrong with int X(). Why change something that does not need changing and increase the impedance of getting into new language?

Re: The first new build of Circle, a new C++20 compiler, since April 2022 is online

#30
post #29

First the acknowledgement: to produce this amount of work single handedly - the guy is undisputed genius. do not want to go through the whole article but have this question: fn ParseAsInt() The goal for this new languages like Rust, Carbon, Go etc. is to introduce "better" alternatives to C and C++ languages and move the developers over. Nothing is wrong with that. Now to syntax: I completely understand syntax constr…

Guess it simplifies parsing, e.g. infamous "most vexing parse" etc.
Post reply on HN