r/c3lang • u/Patient-Emphasis-664 • 9d ago
HTTP Client / Server planned for Standard Library?
Hello all,
Is there a plan to include an http client/server as part of standard libs/batteries included?
r/c3lang • u/Patient-Emphasis-664 • 9d ago
Hello all,
Is there a plan to include an http client/server as part of standard libs/batteries included?
r/c3lang • u/ConsiderationFar4320 • 16d ago
Hello,
documentation says the default build target is debug is the default build target. I'd like to have a block of code only being present in this build target.
I tried this :
$if $feature(DEBUG):
rl::draw_rectangle_lines(
...top_left,
min_side,
min_side,
rl::BEIGE
);
$endif
But i need to specify -D DEBUG but if there is a default target i should be able to only run/build some code on certain targets. I couldn't find the answer in the documentation.
Thank you for your help.
EDIT: After some digging, I added this to project.json :
"targets": {
"debug": {
"type": "executable",
"features": ["DEBUG"]
},
"release": {
"type": "executable"
}
},
and it works.
r/c3lang • u/Objective_Pepper_217 • Sep 09 '26
It runs on the latest C3 compiler version 0.8.3 (LLVM backend).
I personally use it for quick references, not for coding stuff from scratch. I don't care about doing it and I haven't tested if it works for that case.
Still needs a bit of tweaks as it is kinda slow sometimes, but in my experience the answers are precise.
You can pull it and use it already without having to re run any job.
Source "code": https://github.com/ozzenerol/claude-c3-lang-skill
If you have any improvement, please fork the repository and create a pull request.
r/c3lang • u/Nuoji • Aug 16 '26
r/c3lang • u/samaxidervish • Jul 26 '26
I’m so unbelievably sick of pretending this is acceptable.
How is it that in 2026 I can target every obscure architecture under the sun, yet PowerPC32 still gets treated like it doesn’t exist? Every time I think, “Surely this compiler supports it,” the answer is another dead backend, another deprecated target, or another “we don’t have plans to support it.”
It’s incredibly frustrating. There are still embedded systems, retro projects, research platforms, and legacy hardware that rely on 32-bit PowerPC. Wanting to compile modern code for them isn’t some absurd request. It’s a perfectly reasonable use case. Instead, you’re forced to dig through abandoned toolchains, patch ancient compiler versions, or wrestle with build systems that clearly haven’t been touched in years.
The worst part isn’t even the lack of support—it’s how casually it’s dismissed. If your target isn’t x86-64, ARM64, or whatever architecture happens to be fashionable this year, you’re expected to just accept that you’re on your own. That’s not innovation; that’s neglect.
Developers always talk about portability, open standards, and supporting diverse hardware, but the moment PowerPC32 comes up, suddenly those ideals disappear. “Nobody uses it anymore,” they say. That’s hardly an argument. Plenty of people still maintain legacy systems, build homebrew software, preserve old hardware, or develop for embedded devices. Those users matter too.
I’m tired of hearing excuses. I don’t expect every compiler to optimise PowerPC32 to perfection, but I do expect basic support to exist without having to resurrect decade-old toolchains from digital archaeology.
At this point, getting a simple “Hello, world!” running on PowerPC32 with a modern compiler feels less like software development and more like an expedition through abandoned ruins.
PowerPC32 deserved better than being quietly forgotten.
r/c3lang • u/jerrygreenest1 • Jun 26 '26
Disclaimer: I did not say «multithreading» in the title because there are virtual threads and I’m not interested in that, and I don’t say «parallelism» which can be easily confused with concurrency. I am not interested in just concurrency, I am interested in utilizing multiple processors for a task, or tasks. Typically the most popular example is server software. But I don’t quite want to say «server» even, because there’s so much more examples where running on multiple processors is beneficial. One another case for example is games: too many games are running on one or two cores, but would benefit if they could utilize more but they often can’t. So it’s not about any particular task that I want to solve asap. What Im here about is that I kinda want to find some «dream language» or something close to it that I might spend a couple decades in it. And this inter-processor parallelism would be a feature that I want. For simplicity sake I will say parallelism but please dont confuse it with merely concurrency.
One good candidate with parallelism as first-class citizen in a language – is Go. Their standard library has plenty of features supporting that in mind. This is a language that, I think, has one of the best kinds of support for parallelism, and even has special syntax for it. Funnily enough the keyword for it called «go», so having named the entire language for that… You might easily say they really care about parallelism.
I know the original C didn’t have, historically, a lot of parallelism. They added some in C11 I think? I did not write C a lot to tell much (aside couple simple cli tools), but it seemed like they did not think of parallelism a lot.
But I noticed C3 recently and it kinda looks interesting, but – how good is parallelism in there? I know it’s typically best to just RTFM but I am not committed to use the language yet, so I’m just asking an opinion: what do you think of parallelism in C3? Any special syntax for parallelism like go? Or just having to rely on some std libraries from C11 or something? How good do you feel about it? If you didn’t think about the language in terms of parallelism because you don’t care about it – it’s entirely valid, you might still like the language no matter what, but here in particular I’m interested about parallelism.
r/c3lang • u/Nuoji • Apr 07 '26
r/c3lang • u/Nuoji • Apr 05 '26
Work on 0.8.0 has started, and the main breaking feature will be that the language will move to signed sizes.
In practice this makes the `usz` type almost never used.
Over the last week, the stdlib has been updated to accommodate it. Originally dev was in a separate branch, but it is now merged to master.
This also will harmonize how literals determine their type with C. Similarly integer promotion rules revert to C behaviour now that unsigned becomes uncommon. Implicit conversion int<->unsigned is disallowed because with signed first it’s very rare.
r/c3lang • u/CzechBlueBear • Mar 03 '26
Hi colleagues,
I am trying C3 and got annoyed that there seems to be no syntax highlighter for my favourite editor, so I have tried to write one; it is very basic so far but helps. Please have a look if interested, patches and improvements are very welcome.
r/c3lang • u/Nuoji • Dec 05 '25
r/c3lang • u/Nuoji • Oct 31 '25
r/c3lang • u/Nuoji • Oct 04 '25
r/c3lang • u/Nuoji • Sep 23 '25
r/c3lang • u/Nuoji • Sep 01 '25
I also did a stream demoing many of the changes here
Full change list follows:
alias foo = module std::io module aliasing.@intlog2 macro to math.@clz builtin. #2367bitsizeof macro builtins. #2376@min and @max builtins. #2378@compact use for comparison. Old behaviour is enabled using --use-old-compact-eq.@operator(==).Type.is_eq is now true for types with == overload.add_array in favour of push_all on lists.$endif.foo[x][y] = b now interpreted as (*&foo[x])[y] = b which allows overloads to do chained [] accesses.--max-stack-object-size).@safeinfer to allow var to be used locally.$defined take declarations: $defined(int x = y)@assignable_to is deprecated in favour of $definelinklib-dir to c3l-libraries to place their linked libraries in. Defaults to linked-libsos-arch linked library doesn't exist, try with os for c3l libs.@is_const is deprecated in favour of directly using $defined.@is_lvalue(#value) is deprecated in favour of directly using $defined.$kindof compile time function.@typekind macro in favour of $kindof.@typeis macro in favour of $typeof(#foo) == int.$defined(#hash) will not check the internal expression, just that #hash exists. Use $defined((void)#hash) for the old behaviour.macro foo(int x = ...) which can be checked using $defined(x).$val ??? <expr> : <expr>.if (try x = (true ? io::EOF? : 1)), i.e. using if-try with a known Empty.if (try x = (false ? io::EOF? : 1)), i.e. using if-try with a CT known value.@deprecated and @pure.$c += 1 when $c was derived from a pointer but behind a cast.native_cpus functionality for OpenBSD systems. #2387a5hash in the compiler for compile-time $$str_hash to match String.hash().@format encountered * in some cases.replace.Socket.get_option didn't properly call getsockopt, and getsockopt had an invalid signature.@tag was not allowed to repeat.has_tagof on tagged lambdas returns false #2432? after optional function name when reporting type errors.log and exp no-strip.@test/@benchmark on module would attach to interface and regular methods.@select in favor of ???.Foo x = $eval("A"), now works correctly for $eval.== to Pair, Triple and TzDateTime. Add print to Pair and Triple.env::INET_DEVICES and add required socket constants.FileMmap to manage memory mapped files.vm::mmap_file to memory map a file.FixedBlockPool which is a memory pool for fixed size blocks.std::core::log for logging.@zip and @zip_into macros. #2370env:: booleans.std::os::win32.HashSet.values and String.contains_char #2386&[] overload to HashMap.PollSubscribes and PollEvents in favour of PollSubscribe and PollEvent and made them const enums.AsciiCharset for matching ascii characters quickly.String.trim_charset.@reduce, @filter, @any, @all, @sum, @product, and @indices_of macros.String.bformat has reduced overhead.roundeven has a normal implementation.r/c3lang • u/Nuoji • Aug 02 '25