Hacker News
CobaltC – The Successor to C?
13 points by SilentLambda
ago
|
19 comments
ethin
|next
[-]
This is so obviously written by ChatGPT from what I can tell. Not even an attempt to copyedit it unless I missed something.
pizlonator
|next
|previous
[-]
This doesnt seems to be meaningfully different from Rust.
> does not require tracing garbage collection
Just call it garbage collection.
(Applies in two ways: if you think that garbage collection subsumes reference counting then this language doesn’t require garbage collection in the sense that it also doesn’t require reference counting; if you think that garbage collection does not subsume reference counting then there’s no point in saying three words when you can say two.)
AlotOfReading
|root
|parent
[-]
It's less specified than rust. For example, you can bind references to individual collection elements here. It doesn't seem to prohibit borrowing a dynamically indexed element either, which is one hell of a static analysis lift. Seems like you can also have simultaneous references to distinct static indices (e.g. &mut arr[0] and &mut arr[1]) as long as you don't do invalidating operations, which isn't expressible in NLL or polonius. That's feasible for a borrowchecker at least.
ronsor
|next
|previous
[-]
Before I read this, what is there about C3 [0] you don't like?
jjtheblunt
|root
|parent
[-]
C3 is an embarrassing mess regarding integer types and sizes, missing C99's stdint.h defs, for example.
strenholme
|root
|parent
[-]
To clarify: C3 has fixed sized ints. Maybe the parent poster doesn’t like their names, but they are fixed sized, as follows:
Name Size Signed
bool 1 no
ichar 8 yes
char 8 no
short 16 yes
ushort 16 no
int 32 yes
uint 32 no
long 64 yes
ulong 64 no
int128 128 yes
uint128 128 no
Source: https://c3-lang.org/language-overview/types/#integer-types
ternaryoperator
|next
|previous
[-]
It's great to have it all spec'd out. However, I think specs like this suffer the same fate as war plans: they get modified quickly as soon as implementation begins. Nonetheless, it's good to have a clear idea of where you're headed. I just wouldn't call it "Final."
rurban
|next
|previous
[-]
Unsafe identifiers, prone to homoglyph attacks. No TR39 provisions. Worse than rust or Java. https://strawberry9.github.io/the-wrong-memory/Appendix_06.h...
drgo
|next
|previous
[-]
reads more like a Wishlist rather than actual implementable specs.
yoklov
|next
|previous
[-]
This is certainly copying off Rust's homework...
woodruffw
|previous
[-]
Another one?
SilentLambda
|root
|parent
|next
[-]
Yes, but remember is the last appendix to a book, and book provides the context for this appendix. So yes, in that sense, it's just another one attempting to address the memory-safety issues of C. At least this one uses C like syntax and doesn't require C programmers to learn some alien syntax. Of course, this is just a spec, Rust is well and truly live in the environment. The book is more interesting than the spec.