comparing how 95% of russians speak english to his english is like comparing a native english speaker to a coughing chinese baby I was always impressed at how good he was at english for the education we have here)
@@konstantinsotov6251 The education you have is fine. It's very challenging for a native Russian speaker to learn and speak English because the two languages are so different in all aspects. His English is actually very good tho.
i have the same issue, especially with subtraction. i can do pretty advanced math and programming stuff, but simple calculations make me count on my fingers xd
I remember rust developers answering newbie question of "can you bring rust, or any other high level functionality into C?" with such definitive no. Well well well, what is this stream all about?? 😅
@@alexeski4109 there is __auto_type one can implement async with future structs and coroutines, pretend a return is a yield same thing with iterators, pretend a return is yield and trust the compiler to inline all the bloat traits are also doable using vtables, mark the generic function as inline_always, and then create a function for each type the compiler will inline the vtable function calls in all cases, except in the case where the vtable is actually dynamic and the functions are unknown at compile time one can go on and on about all high level features, and since C is turing complete they're all doable if you're... imaginative enough
This is like early Objective C (which used a custom preprocessor for the Smalltalk syntax) but implemented purely using the C preprocessor. Really fun!
There's a library that exploits a bug in the internet explorer to call winapi functions outside of ie's sandbox and a full-fledged wrapper lib for it, but I forgot the name :(
26:00 A slice is a kind of fat pointer. Fat pointer is a normal pointer with some metadata attached. Type of metadata is known at compile time (from usage) so it's not stored in the pointer. But metadata content is stored right after (or before) the pointer. This is important disambiguation because the metadata can be anything - in Rust, slices are one, but also a `&dyn Trait` is effectively `(data_addr, vtable_addr_of_trait_impl_for_data)`. And you can of course hand-craft your own metadata in case you need more/other information.
2:01:40 The reason it would take multiple files is because con"cat"enation of multiple files is the entire point of the cat utility. What we have here is just nl without the line numbers.
15:48 the binary is so big because it includes debug symbols from the standard library. Since rust 1.77 they disable that by default so the default binary size for hello world is now ~400kb
Funny thing about library sizes was in the 90s when people considered Delphi bloated when its statically linked graphical hello was about 500 kB (it ran rings around Visual Basic btw) 😂....Delphi was a gem.
Rust runtime is big because it has stack unwind on panic, so if you want panics to behave like C runtime errors and not like C++ exceptions, you'd have to make panics abort the program.
@@pookiepatsC has a runtime too. “The more you know” (TM) 🤯 On a serious note (whether or not you’re being sarcastic), both can ‘disable’ the runtime in order to work for embedded systems, it’s not new or unique to Rust.
Yo! I wasn't expecting much from Cello based on the title/thumb, but wtf indeed... So many clever ideas in Cello. More than using it, I want to try creating some stuff like that myself.
There are jit compilers for C or more broadly anything that compiles to llvm. The general purpose one is called lili and it's actually a part of llvm itself. There's also the orc api which allows you to integrate llvm's jit. Mesa uses that for compiling shaders in it's software backend.
8:10 You say you don't perceive this as a usable. production-ready library but rather an experiment. Just saying that I had the same opinion about python back in 2000 when I first learned of it.
Rust can be suprisingly small when using whole project, my whole project which ~2k rust code is like 2.3M compiled release mode with direct 6 dependencies
This looks kind of neat. I'd still rather have more syntax than more code in certain cases, but this looks like a nice intermediary. However, someone mentioned your use of Python to calculate simple stuff and I've noticed it in other streams too. So I ask you, why not just use echo $(( )) with bash? Sometimes I don't even use echo and as long as the calculation doesn't form an existing program name I'm good. Occasionally I'll echo a calculation to `bc -ql` to get something a bit more complex, but simple decimal stuff I can just add zeroes to the numerator and use bash anyway.
How on earth your debug symbols are bigger than all the code that you write in text? It's just adds garbage and doesn't know wtf code is doing, that's why it includes a lot of shit.
1:40:30 - streaming isn't bad or outdated. It's scalable. Read entire file, maybe, only up to 100 mb? 200? 1gb if you fat or your runtime allows you to do this? What above...? Streams.
I can only see this useful for people who want assistance briefly transitioning from a higher-level language to C. But if it were me in such a scenario, I wouldn't use Cello for long, need to get used to writing C, which isn't difficult by any stretch.
It's the opposite of assistance. The best way to learn C is to accept that program is running on a real computer and it has memory where everything have size. Also, C is high-level language, it does not translates 1-to-1 into machine code that you type, because there is no "variables" in reality.
@@rogo7330 Yeah, I agree, but if a newbie going from Javascript to C is struggling, I would definitely tell them to use Cello very very briefly, before actually writing proper C, that's just me though.
@@elbandsy That's why it should be adapted. As 'chello', 'tshello' or even 'tschello'. Any of these at least suggests the correct pronunciation for those not knowing Italian.
@@glowiak3430 Words are not written prescribed on how it should be spoken, and vice-versa. There are a lot of weird pronunciations in English (e.g. "colonel", "Wocestershire", and other words that are borrowed from other languages like French) - and in many other languages as well - that require the speaker to know it before hand by common usage. You might read it "wrong", but someone eventually might correct you.
"My main language is acutally Russian"
- What? I thought it was assembly all along.
Maybe russian is a flavour of assembly?
@@blackbeard3449 но руссиан ис нот а флавор оф ассембли.
"I don't speak English" - Tsoding
I laughed so hard at that hahaha
Makes content in English, refuses to elaborate further, ends the stream
comparing how 95% of russians speak english to his english is like comparing a native english speaker to a coughing chinese baby
I was always impressed at how good he was at english for the education we have here)
95% of people in Russia don't speak English
@@konstantinsotov6251 The education you have is fine. It's very challenging for a native Russian speaker to learn and speak English because the two languages are so different in all aspects. His English is actually very good tho.
dude has no problem making a 3d software renderer in c but has to consult python for the calculation of 2024 - 12, gives me hope lmao
i have the same issue, especially with subtraction. i can do pretty advanced math and programming stuff, but simple calculations make me count on my fingers xd
@@aidennwitzsame, I know how to, but cant do, specially subtractions, on my head, I either need a piece of paper or a calculator
Next project: A superset for Cello called TSello
var aliasing to void* gave me a good chuckle.
Zozin can like anything if it's implemented in C.
I remember rust developers answering newbie question of "can you bring rust, or any other high level functionality into C?" with such definitive no. Well well well, what is this stream all about?? 😅
ah yes void* everything much high level so functionality /s
Well c2x has auto so we have type inference now, can just replace void* with auto
@@alexeski4109 there is __auto_type
one can implement async with future structs and coroutines, pretend a return is a yield
same thing with iterators, pretend a return is yield and trust the compiler to inline all the bloat
traits are also doable using vtables, mark the generic function as inline_always, and then create a function for each type
the compiler will inline the vtable function calls in all cases, except in the case where the vtable is actually dynamic and the functions are unknown at compile time
one can go on and on about all high level features, and since C is turing complete they're all doable if you're... imaginative enough
This is like early Objective C (which used a custom preprocessor for the Smalltalk syntax) but implemented purely using the C preprocessor. Really fun!
Now please turn my javascript into C
its called static hermes.
@@trejohnson7677or deno 2.0
its called hatic stermes.
There's a library that exploits a bug in the internet explorer to call winapi functions outside of ie's sandbox and a full-fledged wrapper lib for it, but I forgot the name :(
when the guy asked if they could make a JIT 😭😭😭
26:00 A slice is a kind of fat pointer. Fat pointer is a normal pointer with some metadata attached. Type of metadata is known at compile time (from usage) so it's not stored in the pointer. But metadata content is stored right after (or before) the pointer.
This is important disambiguation because the metadata can be anything - in Rust, slices are one, but also a `&dyn Trait` is effectively `(data_addr, vtable_addr_of_trait_impl_for_data)`. And you can of course hand-craft your own metadata in case you need more/other information.
17:15 the best way to do optimisations in rust would be "sudo rm -f /bin/rustc"
Good one mr comedian! 🤡
@@RustIsWinningofc your username is "rust cool haha" and your avatar is a crab 😂
1:59:05 wtf he needed python of that 💀
It is a good commandline calculator. Also there was a number with four digits, that is way too complicated to calculate just in your head.
@@theevilcottonballdude stop acting like your brain is 8-bit
@@theevilcottonball It is just the last two digits that change. That's easy.
@@theevilcottonball emacs has a built in calculator that is even better
Do you feel better by writing this?
the author of this is a boss, his work on Phase-Functioned Neural Networks for Character Control, is nuts along with his other work.
2:01:40 The reason it would take multiple files is because con"cat"enation of multiple files is the entire point of the cat utility.
What we have here is just nl without the line numbers.
15:48 the binary is so big because it includes debug symbols from the standard library. Since rust 1.77 they disable that by default so the default binary size for hello world is now ~400kb
Funny thing about library sizes was in the 90s when people considered Delphi bloated when its statically linked graphical hello was about 500 kB (it ran rings around Visual Basic btw) 😂....Delphi was a gem.
Delphi is still a gem, but buried under so much shit by Embarcadero/Idera. Lazarus/Free Pascal are gems people should use more.
so c++ if you dont like c++
Is it better? 🤔
18:20 to smile and laugh 😃
Lovecraftian C
Can confirm that hashtable in the title would have got me
I looked at this library in the past, I really enjoyed the playfulness of it. So much fun!
now I understood many of c and CS concepts in this video I would have spent years learning them thx broskieee
Rust runtime is big because it has stack unwind on panic, so if you want panics to behave like C runtime errors and not like C++ exceptions, you'd have to make panics abort the program.
Didn’t know rust had a runtime wow
May as well just use Go
@@pookiepatsC has a runtime too. “The more you know” (TM) 🤯
On a serious note (whether or not you’re being sarcastic), both can ‘disable’ the runtime in order to work for embedded systems, it’s not new or unique to Rust.
Also, rustc essentially compiles with -ggdb by default, making the comparison even more unfair
@@anonymousalexander6005 lol 😆 i enjoyed this thx - and did learn something
Yo! I wasn't expecting much from Cello based on the title/thumb, but wtf indeed... So many clever ideas in Cello. More than using it, I want to try creating some stuff like that myself.
23:44 Tsodinagen
I was searching for this comment
yeah same 😂
1:08:08 Doesn’t use exceptions to stop iteration. Literally unusable and unpythonic. Reported to Guido for reeducation.
this is the first time im seeing zozin so excited about a project
There are jit compilers for C or more broadly anything that compiles to llvm. The general purpose one is called lili and it's actually a part of llvm itself.
There's also the orc api which allows you to integrate llvm's jit. Mesa uses that for compiling shaders in it's software backend.
there is no going back, the only way is through!
Love it when Tsoding finds something he actually likes, rly wholesome episode :^)
1:38:30 i have not heard of this type of documentation
man graduated at 2013 and looks like he did it before and forget and went again, Love It
I find using the clangd LSP to be helpful when trying to understand a macro. you can expand a specific call to see what the macro does.
and my only-python-using friend still wouldnt know how to declare a variable..
waiting for a cello music player written in cello
8:10 You say you don't perceive this as a usable. production-ready library but rather an experiment.
Just saying that I had the same opinion about python back in 2000 when I first learned of it.
The library itself says it's not production ready thought, its not just his personal opinion
Yo I just saw this the other day. This is going to be a fun episode.
Hey Zozing please make a video on dependent types. I think you're the best person to explain them.
I discovered this library in 2020; your reaction was the same as mine
hi zozing! i have an idea: make a simple immediate gui library for raylib on some future streams? would be cool to see your approach!
57:45 why did you say thank you after sneezing?
_porffor join the chat_ : *let me transform your javascript into ASM or C*
51:43 look at what they have to do to achieve a fraction of the power of C++.
It's funny thou
How do you turn twitch chat into subtitles 😮
$ ? JQuery for C ? Cquery?
Believe it or not, cquery is actually a thing, it used to be the main language server for the C family before ccls and clangd made it obsolete
Rust can be suprisingly small when using whole project, my whole project which ~2k rust code is like 2.3M compiled release mode with direct 6 dependencies
36:30 why not compile it more!?
This looks kind of neat. I'd still rather have more syntax than more code in certain cases, but this looks like a nice intermediary. However, someone mentioned your use of Python to calculate simple stuff and I've noticed it in other streams too. So I ask you, why not just use echo $(( )) with bash? Sometimes I don't even use echo and as long as the calculation doesn't form an existing program name I'm good. Occasionally I'll echo a calculation to `bc -ql` to get something a bit more complex, but simple decimal stuff I can just add zeroes to the numerator and use bash anyway.
Title got me 😅
Cello it's an italian word and this cello it's faster than lua jit in some cases amazing
Great video! Really fun experience :)
I wonder if we can make something like this for Python? 🤔
10:03 i'm sorry but i was watching at 2x speed and bursted laughing at him LOL
Go figure why searching for austral I landed here
Rust is 3-4mb just because it includes debug symbols
How on earth your debug symbols are bigger than all the code that you write in text? It's just adds garbage and doesn't know wtf code is doing, that's why it includes a lot of shit.
So did Cello. It did -g in the makefile... didn't even -Os the thing
That is only the case in Debug mode (std is stripped by default since a few versions ago), a hello world on aarch64 is ~400K
@@Aras14 a minimal function in wasm is 16kb if you remove the debug symbols
@@rogo7330 who hurt you lol, it includes debug symbols of the standard library for clean backtraces etc.
Can you make a project in libcello?
1:44:05 Dungeon master is proud of you
1:40:30 - streaming isn't bad or outdated. It's scalable. Read entire file, maybe, only up to 100 mb? 200? 1gb if you fat or your runtime allows you to do this? What above...? Streams.
Gleam next?
28:06 viruses, welcome
1:44:04 FISTING MENTIONED 💀
Tsoding getting new laptop :pog: 🎉
NEW STREAM! based library. I love your vids! 😀
Will this run in browser????
This looks straight out of my nightmare
Has he tried CUDA yet?
Thank you.....
Can your swift do that... Dabdabdab
28:05 😂😂
Bro, you need to record a video for Emacs and i3. I’ve never seen better configs!
Isnt i3 just default and emacs just in console mode? Look not so configured actually...
Why
Looks more like a python to me than JavaScript.
C already had has tables look it up and also c has generics
What tables are you referring to?
@@xravenx24fe it's in search.h
I see C and I click 😊
Well I’m too dumb for this stream😢
I can only see this useful for people who want assistance briefly transitioning from a higher-level language to C. But if it were me in such a scenario, I wouldn't use Cello for long, need to get used to writing C, which isn't difficult by any stretch.
It's the opposite of assistance. The best way to learn C is to accept that program is running on a real computer and it has memory where everything have size. Also, C is high-level language, it does not translates 1-to-1 into machine code that you type, because there is no "variables" in reality.
@@rogo7330relative to other high level languages it is comparatively low level
@@rogo7330 Yeah, I agree, but if a newbie going from Javascript to C is struggling, I would definitely tell them to use Cello very very briefly, before actually writing proper C, that's just me though.
18:30 lmaoooo😂😂
This reminds me so much to objective-c 😂 pretty cool project.
Спасибо!
But why?
someone was bored, probably
Fun
recreation
Pointless question in web development world 😂
why not?
But... is it not just emcc wrapper??
Another video another reauest to look at odin lan 😉
You what now? God forbid, turn C into Javascript? These JS stans are getting out of hand smh. Blasphemous, lord have mercy
lol
This Cello looks like C# ripoff
11:10 Same. English spelling sucks.
It's an italian word 🤷♂
@@elbandsy cello does not mean anything in italian
@@elbandsy That's why it should be adapted. As 'chello', 'tshello' or even 'tschello'. Any of these at least suggests the correct pronunciation for those not knowing Italian.
@@DomenicoPezzullo-ib9bg Sorry if I was misunderstood. It's short for the italian word "violoncello".
@@glowiak3430 Words are not written prescribed on how it should be spoken, and vice-versa. There are a lot of weird pronunciations in English (e.g. "colonel", "Wocestershire", and other words that are borrowed from other languages like French) - and in many other languages as well - that require the speaker to know it before hand by common usage. You might read it "wrong", but someone eventually might correct you.
Macros scare me 💀
ewww brother ewww
Ah sweet a schizo project :D
wtf
Wtf
UNINSTALL THIS NOW I DON'T WANNA HEAR ABOUT IT
I recommend -fno-strict-aliasing for this,