ChanServ changed the topic of #zig to: zig programming language | https://ziglang.org | be excellent to each other | channel logs: https://irclog.whitequark.org/zig/
radgeRayden_ has joined #zig
radgeRayden has quit [Ping timeout: 272 seconds]
Kena has joined #zig
<Kena> Thanks, good news for UTF-8.
xackus has quit [Ping timeout: 264 seconds]
<Kena> I'm trying a struct now instead of passing a const literal, but the compiler says `error: struct field missing type` but I disagree, my field is in the struct field declaration, in the method and also in the call site, what did I do wrong? https://zero.hurtig.ninja/?4b566fa9019ff37a#sOj+/Ykkk7JmzD/97DWIRKvceJOCTA9rejKhWOwKtag=
<travv0> : instead of `
<travv0> =
<travv0> before the types in your struct definition
<travv0> the ` was supposed to be a = in case that wasn't clear lol
<travv0> so the error was saying that your struct fields don't have types, because instead of specifying the type you're providing their default value as the type
<Kena> Allright, thank you. `your struct fields don't have any type` would have been a much clearer error message.
<Kena> English-US convey less and less information by the day. Writing in english-UK would convey much more information to the user as it is semantically superior.
<fengb> Those sentences are neither UK not US specific
<Kena> A londonian would never communicate in that way.
<travv0> an american wouldn't say that out loud either, written word is often different, especially for technical text
ur5us_ has quit [Ping timeout: 260 seconds]
<fengb> Yeah I’d probably say “shit has no type yo”
<Kena> Agreed, but the familiar style is kind of hard to grasp, especially if english is not your mother tongue.
<Kena> lol
<travv0> lol now there's something everyone would understand
<ugla> "u put = instead of : fyi"
<travv0> there are a few zig error messages that sometimes take me a bit to figure out what they're trying to tell me, i've been too lazy to improve them though
<ugla> some hint would probably be nice
Kena has quit [Remote host closed the connection]
Kena has joined #zig
<Kena> I miss Irssi irc client... I was never disconnected.
<travv0> yeah if you assign a type as the default value without specifying a type that'd be a nice message
<Kena> The compiler must assume it is talking to a complete noobie :D
<Kena> it would bring down the entry barrier a bit.
<hlolli__> a stuct method with var chain = ArrayList(Struct).init(self.allocator); defer chain.deinit(); Seems to be related to this error "error: unable to evaluate constant expression" when calling it from another method. There's no const, could it be the allocator, or the array?
<travv0> yeah, i don't think the error messages have gotten a ton of love
radgeRayden_ has quit [Ping timeout: 272 seconds]
radgeRayden has joined #zig
<travv0> because you're making an ArrayList with a type as the contents, right?
<hlolli__> yes true
omglasers has quit [Read error: Connection reset by peer]
<travv0> er
<travv0> hold on
msingle has quit [Ping timeout: 260 seconds]
<travv0> i got confused for a second because of the name of the struct lol
<hlolli__> Yes it's actually IObject, but I renamed it to make it readable :)
<travv0> can you post a bigger snippet? on a paste site or something?
<hlolli__> yes!
<travv0> i'm excited for fmt to print slices/arrays instead of their addresses
<travv0> there is a PR for that right?
<hlolli__> that double struct is copy paste fail, I was removing noise from the code
<travv0> so this isn't related to your question but one thing that stood out to me is that you deinit the ArrayList that you return
<travv0> alright so your ArrayList isn't of type `type` which is probably the problem
<travv0> its type is ArrayList(IObject)
<hlolli__> both plausable, I tried exactly that.. wait
<travv0> but the type will be inferred so you don't even need to specify it there
<hlolli__> with [IObject]ArrayList as return type I get; error: expected type 'type', found 'fn(type) anytype'
nullheroes has joined #zig
<travv0> ArrayList is a function that returns a type
<travv0> so you either want the return type to be ArrayList(IObject)
<travv0> or []IObject and do `return chain.toOwnedSlice()`
<hlolli__> aaaahh ok :D yes thanks! I stopped using functions returning structs because I couldn't get good types with it
<hlolli__> that explains a lot, thanks!
<travv0> yeah so any function that returns a type you can call that function in a place that expects a type and use the result as the type which is what ArrayList is doing there
<travv0> and no prob!
<Kena> Please why I can't pass the parameter in a simple method ? It's says `error: expected type '[]u8', found '*const [23:0]u8'` https://zero.hurtig.ninja/?de262d5d5fed6d26#UIyBi8sBiEe1J8Awfsjc+b5tcpyuHkv54ioyZjiu0e4=
<travv0> string literals are []const u8
<travv0> so you need to make sure your function takes that
<ifreund> Kena: it expects mutable but you passed const
<Kena> How can I pass it a mutable argument instead?!
<Kena> I do not know any mutable string...
<travv0> string literals are stored in the binary so you can't mutate them
<travv0> do you need to mutate those strings or are you just wondering in general?
<ifreund> Kena: you can use []const u8 instead of []u8 if you don't need those things to be mutable
<Kena> I'm sorry to ask but I don't know what a binary is. It's not something explained anywhere in ziglearn.org or ziglang.org
a92 has joined #zig
<Kena> Those strings won't mutate for now, their goal is to be written in a file.
<g-w1> binary is base 2 numbers: 00110011, a binary is a file, usually produced by a compiler that is executable and is the result of the source code
<travv0> yep, if you're on windows then binaries are .exe files
<travv0> so when you put a string in a program like "hello world!" that string is actually stored in the executable itself
<Kena> ifreund both in the method and the field's definition or only in one of them?
<ifreund> both, you can't convert from const to mutable
<Kena> Allright, thanks g-w1 ifreund and travv0 :)
<travv0> no prob!
<travv0> and if you do need to mutate a string at some point just let us know if you need help
<Kena> For now, I'm just trying to feed a struct with user input, it's just so incredibly hard.
<travv0> you're the one that said you're new to programming right?
<Kena> Yes
<travv0> then it's gonna be tricky at the beginning, especially using a language that makes you pay attention to the code you're writing for correctness sake. but once you get the basics down you'll be able to apply them to a lot of other languages, etc
<Kena> I thought zig was a rational choice for aiming embedded systems programming as C is clumsy and Rust very complex.
<travv0> yeah, can't argue with any of that lol. as long as you understand that zig is still changing rapidly until it hits 1.0
<Kena> Yes if I don't give up learning programming before.
<Kena> Yes, I understand they will be non-retrocompatible changes.
<Kena> *non-backward changes, not sure how to say it in English.
<travv0> nah don't give up, a lot of aspects will seem really complex but eventually they'll click and you won't remember what it was like to not understand those concepts
<a92> Backwards-compatible
<Kena> :)
<travv0> except non- lol
<torque> I would say that starting with embedded systems is an interesting approach
<travv0> it's certainly not an easy route, but i guess if that's what you're learning programming for then why not
<torque> I think it's definitely easier to learn general programming concepts in a high-level language that can be applied to low-level stuff
<torque> I mean, if diving in the deep end is the way you learn best, go for it
<travv0> i think the easy-to-learn high level languages won't have helped them with the things they've been asking about in here if they had learned one of them first
<travv0> like if you learned python you're still gonna be confused about zig string stuff
<torque> I don't fully agree with that
<a92> You'll be a lot less confused than if you didn't learn programming
<travv0> does python have any concept of immutability or string literals?
<torque> yes, tuples are immutable in python
<fengb> Strings are immutable too
<travv0> but they're always immutable?
<torque> anyway, I guess my point was more that if you are having too much trouble getting started with zig, I would recommend trying to learn something that takes care of more of the details to get a foundation
<torque> rather than just giving up
<travv0> yeah for sure, if you're not having fun with zig go with python or javascript or something
<fengb> Yes always immutable. There are bytearrays in Python that match closer to Zig strings
<travv0> make sure you're enjoying yourself but know that it's normal to be frustrated sometimes before you grasp a concept
<Kena> In fact, I tried with python during 5-6 weeks and didn't like it at all.
<a92> Did you try Javascript?
<Kena> Object-oriented paradigm is not my cryptonite and I had no control over the machine since it's very high-level abstraction (no type declaration).
<Kena> Nope.
<travv0> types are actually a high level concept but i'm also a fan of them
msingle has joined #zig
<a92> It's another very-high-level/easy language, and can run in browsers (although it has weird quirks)
<torque> I mean, it depends on what you mean by "control over the machine"
<travv0> there's also typescript which i haven't used but it's javascript with a static type system like zig has
<fengb> Depending on who you talk to, control over the machine isn’t even the intent of programming 🙃
<Kena> I was planning for RISC-V assembly as a second language and Idris 2 as a third one because a lot of people recommand to learn another paradigm-oriented language to boost learning curve.
<travv0> ooo idris will be a fun one lol
<ifreund> best way to learn how to program well is to make actually useful stuff you need imo
<g-w1> ^
<travv0> yeah, that's why i was saying that if they're wanting to learn something low level to do embedded stuff then there's nothing wrong with that
<travv0> if that's what makes it enjoyable
<ifreund> what language you use should be determined by what kind of problem you need to solve
<travv0> yep
<ifreund> and don't be afraid to learn a new language for a new project, I learned zig to write river
<travv0> also whether you're learning for fun or with the intent of getting programming work would probably have some bearing on what language you learn
<Kena> A lot of articles say to not switch to another language before learning the first one for at least 6 months, or you'll be lost.
<Kena> My real-world problem is I want to create a library to archive my hundred of books.
hnOsmium0001 has quit [Ping timeout: 240 seconds]
<Kena> While keeping the idea to code compliant for edge-computing. Thereby, the embedded systems stuff required.
<Kena> I think laptop, tablet and smartphone will be less and less used in the upcoming years.
hnOsmium0001 has joined #zig
<travv0> yeah if you have your mind set on embedded stuff then i think zig's a fine choice as it'll familiarize you with the concepts needed for low level stuff like that even if it's not what you always stick with
<travv0> but if you do stop having fun with it don't be afraid to switch to javascript or something instead
<travv0> since you could program the app you're working on in that as well and it'd still be a good learning process
<justin_smith> yeah, there are embedded devices like the esp32 that can run javascript, lua, python no problem
KIMI_7996__88 has joined #zig
<travv0> but yeah i can't stress enough that when you're first learning, the important part is to continue learning which means you need to be enjoying yourself so you don't quit
<travv0> you can always move on to more complex stuff later on
<novaskell> Kena: type driven development with idris is a brilliant book
<KIMI_7996__88> hi, i tried install sublime text zig package, but it is not compatible https://imgur.com/vVMyi9i.png
<novaskell> that and software foundations in Agda
<travv0> i have that on my list novaskell
<Kena> Allright, thanks a lot for all your support, it's just I need to feel belong to a community because self-learning alone is amazingly depressing.
<KIMI_7996__88> local package from github works, it is possible to update the package on sublime?
<travv0> well i find the zig community quite friendly so you're in a good place in that regard Kena
<novaskell> travv0: (Advanced Topics in) Types and Programming Languages is another to have on your shelf
<travv0> is that the brick book?
<Kena> novaskell thanks for feed-back. Unfortunately, idris 2 (now self-hosted) is not covered in the book aforementionned.
<novaskell> yes
<g-w1> now that the sublime package has 1k downloads, ill make a pr to add zig to bat (the cat with color cli util)
<travv0> yep i own that one, still need to read it like most of my books lol
<KIMI_7996__88> https://github.com/ziglang/sublime-zig-language/issues/46 apparently broken since october!!
<novaskell> You ca follow along with Idris2 as there's a list of corrections/adjustments Kena. The language hasn't changed too much even if the core type theory has
<KIMI_7996__88> since local git works, it is just about uploading new tm file, who do i need ping for such task?
<companion_cube> Woah, #zig talking about type theory now?
<novaskell> (secretly wants refinement types in zig)
<KIMI_7996__88> anyone have idea?
<Kena> Do you think it would be insane to learn Idris 2 in parallel or is it stimulating for the mind?
<g-w1> check the authors on github and see if they are on irc
<a92> If Zig is your first language, you might not want to parallely learn a second one
<travv0> KIMI_7996__88: i'm not sure who's in charge of the package control stuff but i'd see if you can contact the top maintainer on the project
<novaskell> Would be fine as they complement one another. You can use some of what you learn in idris within in Zig
<KIMI_7996__88> i don't know who he is sorry
<g-w1> Ill ask around on discord soon
<KIMI_7996__88> sublime is popular editor, it is broken since october it is big issue
<KIMI_7996__88> ok ty
<g-w1> I would raise an issue on github though
<KIMI_7996__88> issue is already created
<g-w1> oh
<Kena> DO you remember the exact title regarding to foundation of Adga? I can't find him on amazon
<andrewrk> KIMI_7996__88, I haven't seen emekoi around in a while. That project lacks an active maintainer
<novaskell> Programming Language Foundations in Agda
<KIMI_7996__88> i will try send an email andrewrk
hlolli_ has joined #zig
<Kena> Thanks you're kind.
<andrewrk> KIMI_7996__88, I don't think that would be nice. If they are not participating in the development it is intentional and you should leave them in peace
<KIMI_7996__88> package still work but error message might indicate somthing wrong hidden
hlolli__ has quit [Remote host closed the connection]
<KIMI_7996__88> oh ok, sorry
<travv0> andrewrk: they have their email on their github so i don't think they'd be opposed to being contacted about one of their projects that way
Kena has quit [Remote host closed the connection]
cole-h has quit [Ping timeout: 265 seconds]
<companion_cube> @
hlolli_ has quit [Ping timeout: 246 seconds]
KIMI_7996__88 has quit [Remote host closed the connection]
aerona has joined #zig
earnestly has quit [Ping timeout: 264 seconds]
lltt has quit [Ping timeout: 264 seconds]
osa1_ has joined #zig
lltt has joined #zig
osa1 has quit [Ping timeout: 240 seconds]
lltt has quit [Ping timeout: 272 seconds]
lltt has joined #zig
lltt has quit [Ping timeout: 240 seconds]
a92 has quit [Quit: My presence will now cease]
lltt has joined #zig
msingle has quit [Ping timeout: 260 seconds]
pfg__ has quit [Quit: Leaving]
msingle has joined #zig
msingle has quit [Ping timeout: 240 seconds]
<pixelherodev> I'm the local plan9er, yeah :)
didymos is now known as oats
msingle has joined #zig
CodeSpelunker has quit [Remote host closed the connection]
msingle has quit [Ping timeout: 240 seconds]
pfg_ has joined #zig
lltt has quit [Ping timeout: 240 seconds]
aerona has quit [Quit: Leaving]
lltt has joined #zig
pfg_ has quit [Quit: Leaving]
radgeRayden has quit [Ping timeout: 272 seconds]
pfg_ has joined #zig
marnix has joined #zig
osa1_ is now known as osa1
marnix has quit [Read error: Connection reset by peer]
marnix has joined #zig
lucid_0x80 has joined #zig
sawzall has quit [Read error: Connection reset by peer]
sawzall has joined #zig
waleee-cl has quit [Quit: Connection closed for inactivity]
kristoff_it has quit [Ping timeout: 256 seconds]
dongcarl4 has joined #zig
dongcarl has quit [Ping timeout: 246 seconds]
dongcarl4 is now known as dongcarl
sord937 has joined #zig
radgeRayden has joined #zig
_whitelogger has joined #zig
marler8997 has joined #zig
radgeRayden has quit [Ping timeout: 272 seconds]
cole-h has joined #zig
THFKA4 has quit [Ping timeout: 240 seconds]
osa1_ has joined #zig
osa1 has quit [Ping timeout: 240 seconds]
tetsuo-cpp has joined #zig
xackus has joined #zig
tetsuo-cpp has quit [Remote host closed the connection]
tetsuo-cpp has joined #zig
THFKA4 has joined #zig
tetsuo-cpp has quit [Ping timeout: 240 seconds]
osa1_ has quit [Quit: osa1_]
jjido has joined #zig
TheLemonMan has joined #zig
<TheLemonMan> any FreeBSD users around? (nyaayaya ?)
hnOsmium0001 has quit [Quit: Connection closed for inactivity]
osa1 has joined #zig
protheory8-new-m has quit [Quit: Idle for 30+ days]
supercoven has joined #zig
earnestly has joined #zig
retropikzel has left #zig ["Leaving"]
jjido has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
cole-h has quit [Ping timeout: 264 seconds]
<TheLemonMan> daurnimator, I can't think of a better name than LimitedReader :(
<TheLemonMan> TruncatedReader maybe?
Enrico204 has joined #zig
hlolli_ has joined #zig
earnestly has quit [Ping timeout: 265 seconds]
earnestly has joined #zig
marnix has quit [Read error: Connection reset by peer]
marnix has joined #zig
earnestly has quit [Quit: WeeChat 3.0-dev]
TheLemonMan has quit [Ping timeout: 240 seconds]
radgeRayden has joined #zig
<ifreund> LimitedReader seems the best to me
<daurnimator> EarlyEOFReader > LimitedReader IMO
<daurnimator> I don't love either but.... yeah
<ifreund> CutoffReader?
<ifreund> just spitballing
<ifreund> that's an odd trace, I'm on linux... https://0x0.st/i5Dy.txt
TheLemonMan has joined #zig
lltt has quit [Ping timeout: 256 seconds]
<ifreund> figured it out, I just typoed a path in my build.zig
<daurnimator> TheLemonMan: PS, thanks for #6600 answering https://github.com/ziglang/zig/issues/2571#issuecomment-573044264 better than I ever could :)
<TheLemonMan> hah, deep down we all hate std.os
<TheLemonMan> the "EarlyEOF" part in the name threw me off before I inspected the implementation
<TheLemonMan> the first impact is something that.. handles early eof of the backing reader?
<daurnimator> yeah. essentially it may force an end-of-file before the underlying reader really has an end-of-file
<TheLemonMan> but if you set the limit past the stream end... it's not early anymore!
<daurnimator> true, I said "may" :)
<daurnimator> even an early EOF can be upset by an earlier EOF
<daurnimator> `earlyEOFReader(earlyEOFReader(someotherreader, 42).reader(), 100)` who's early now?
<TheLemonMan> that's an argument for not having 'early' in the name :P
<daurnimator> "who's more limited"
<TheLemonMan> the one with a lower limit? heh
dumenci has joined #zig
<novaskell> BoundedEofReader?
lucid_0x80 has quit [Ping timeout: 260 seconds]
<ifreund> or EofBoundedReader?
<TheLemonMan> or BoundedReader?
<ifreund> I like Bounded more than Limited
<ifreund> TheLemonMan: by the way, I'm supposed to pass on a discord invite to you from kristoff_it
<ifreund> though I already told him I don't think you're much of a discord user
<TheLemonMan> last time I tried using Discord my laptop fan kept spinning and spinning, I'll stick to irc for the time being
<TheLemonMan> didn't we have some kind of bridge before?
<ifreund> Idk, though I can't see briding discord to irc working all that well
<ugla> There's a Matrix <-> IRC bridge (I'm using it)
<ugla> Haven't had much luck with Discord bridging. This one is quite seamless though!
<ifreund> well, untill you send a code block over matrix
<daurnimator> or use the reply button in matrix
<ifreund> or edit your message
<ifreund> If you use matrix the same way you'd use IRC though it does work quite well, I use it on my phone
<ugla> I don't know if my client has any of those features
<ugla> Oh look, a reply option if I right click on a message. TIL.
earnestly has joined #zig
osa1_ has joined #zig
osa1 has quit [Ping timeout: 260 seconds]
TheLemonMan has quit [Ping timeout: 256 seconds]
TheLemonMan has joined #zig
TheLemonMan has quit [Client Quit]
<ifreund> hrm, is it intentional that decls included with usingnamespace don't show up in the decl list from @typeInfo()?
osa1_ has quit [Quit: osa1_]
osa1 has joined #zig
marnix has quit [Ping timeout: 246 seconds]
marnix has joined #zig
marnix has quit [Read error: Connection reset by peer]
marnix has joined #zig
msingle has joined #zig
jjido has joined #zig
Kena has joined #zig
<Kena> Hello, is there a function to return the number of field's struct? I would like to prompt the user a number of times equal to the field's number in order to feed a struct.
MohammadMohammad has joined #zig
<Kena> Not the integer value of a field but the amount of fields. (i.e. their quantity I mean)
<g-w1> you probably want std.meta.fieldNames which will return an array of all the fields in the struct
<g-w1> then use @field to set the field with the name
MohammadMohammad is now known as mmohammadi9812
<Kena> Thanks for the guideline. Now I must seek where std.meta.fieldNames is described in the source code lol
<g-w1> std/meta.zig:416 :)
<Kena> are you a descendant of Lucky Luke ^^
<g-w1> I was just looking it up myself in the source code :P, so I had the line number
<daurnimator> Kena: you're probably heading towards something like: `inline for(@typeInfo(someStruct).Struct.fields) |field, i| // now use `field` and `i``
tetsuo-cpp has joined #zig
msingle has quit [Read error: Connection reset by peer]
<Kena> Bu the struct must be instantiated before being fed into the loop right? My problem is: the loop aims precisely to instantiate it so it's kind of a blocker.
<daurnimator> Kena: no, you pass in the type itself; not an instance of it
jjido has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<g-w1> you can just use @TypeOf to get the type from an instance
<Kena> I need some time, its a lot to process.
<daurnimator> `var mystruct: someStruct = undefined; inline for(@typeInfo(someStruct).Struct.fields) |field, i| @field(mystruct, field.name) = try get_from_user("give me a " ++ @typeName(field.field_type), field.field_type);
waleee-cl has joined #zig
supercoven has quit [Ping timeout: 260 seconds]
kristoff_it has joined #zig
<Kena> What is the purpose of i in this case? the for loop is presumed to iterate through the whole sequence of fields.
<ifreund> i is if you want a counter so you know which field you are on
<earnestly> daurnimator: Could that i be _?
<ifreund> you can just omit it
<earnestly> ifreund: I think they're wondering why you need to include it at all, if it's not used
<earnestly> Yeah
<Kena> Allright.
cren has joined #zig
<dominikh> does Zig have safe integer casts? like an @intCast that returns an error if the value is out of bounds for the target type?
<dominikh> or am I going to write that myself
<fengb> std.math.cast
<Kena> I don't understand the compiler, it speaks of a type which I know nothing about: expected type '[]const u8', found 'std.builtin.StructField' https://zero.hurtig.ninja/?0855864b66dcb663#6XHbXjYkixj7bi//Cop6Eo65SdPWDoBT7kxJQa8B8n4=
tsujp has quit [Read error: Connection reset by peer]
<dominikh> thanks
tsujp has joined #zig
<fengb> Builtin functions work with LLVM so it can’t operate on errors. There’s often a corollary stdlib function that does use errors
TheLemonMan has joined #zig
<dominikh> makes sense
<fengb> Kena: Your `field` variable is a struct, not a name. To use @field, you need to use `@field(book, field.name)`
<Kena> I don't understand what it means but I found the struct definition in lib/std/builtin.zig. I replaced field with field.name but now it tells me the container has not such a field , which is false!
<fengb> You passed in Book, which is the type. You need `book`
<Kena> Yes too late to type my reply. thanks.
<TheLemonMan> you can sue the compiler for libel (would that be libel?)
<Kena> Ah! thanks
<Kena> war on machines is declared! Join the league now! Protect your lineage!
<dominikh> I'm siding with the machines
<TheLemonMan> rage against the machines
<fengb> People are the problem
<Kena> You will be merged :D
<Kena> Not closed, just merged.
<TheLemonMan> and forked!
<Kena> mdr
<Kena> we'll have a fengb 1.1.0 with new features. I'll be able to talk about allocators auto-freed
<fengb> wat
<TheLemonMan> fengb is now known as TheAllocatorMan
<Kena> lmao
<TheLemonMan> g-w1, check out `ir_analyze_cast`
<g-w1> is this in relation to the pull request
<TheLemonMan> yep
<TheLemonMan> the bit you're interested in is `small enough unsigned ints can get casted to large enough signed ints`
<g-w1> ah
<TheLemonMan> and please add a few test cases in stage1/behavior/cast.zig
<g-w1> I added a bug test, is that not enough?
<TheLemonMan> the bugs/ folder is for big unreduced test cases
<g-w1> ah
<g-w1> seems that I need to use ir_num_lit_fits_in_other_type
<TheLemonMan> tests that make sure the compiler is behaving according to the specification belong in one of the behavior tests
<TheLemonMan> that only works if you have comptime-known values
<g-w1> its this ir_analyze_widen_or_shorten i think
<g-w1> ir.zig:15372 i think
Snetry has quit [Ping timeout: 246 seconds]
<g-w1> s/ir.zig/ir.cpp
<TheLemonMan> you shouldn't need any cast there
Snetry has joined #zig
<g-w1> ah, what is wrong with my current implimentation then?
<TheLemonMan> check out that piece of code I pointed you to before
<TheLemonMan> and the brief explanation I wrote in the ticket
<g-w1> ok
<TheLemonMan> mq32, I just saw your zig-network project, you may be interested in #7124
waffle_ethics has joined #zig
<TheLemonMan> ifreund_, ifreund, you forgot the `pub` in front of `const bar`
donniewest has joined #zig
<TheLemonMan> usingnamespace won't import private members
<TheLemonMan> and why there are two of you?
<TheLemonMan> beside that typeInfo is not resolving the usingnamespace entries, it should be an easy fix
<ifreund> TheLemonMan: pub doesn't matter in the same file afaik
<ifreund> the one with the underscore is connected over matrix on my phone
<TheLemonMan> yeah it matters, try adding a `var x = B.bar + B.foo` before the `inline for`
<TheLemonMan> it doesn't work if you omit the `pub`
<ifreund> huh, TIL
frmdstryr has quit [Ping timeout: 240 seconds]
<ifreund> In that case I may need to poke this a bit more, I'm trying to recursively ref all decls but my function seems to get stuck on usingnamespace
<ifreund> about to leave on a run now though
frmdstryr has joined #zig
tetsuo-cpp has quit [Ping timeout: 256 seconds]
sawzall has quit [Read error: Connection reset by peer]
sawzall has joined #zig
hlolli__ has joined #zig
hlolli_ has quit [Ping timeout: 240 seconds]
kassane has joined #zig
kassane has quit [Remote host closed the connection]
<g-w1> Should peer type resolution be order independent? if a u8 comes before a u32, should it cast to u32 even if the u8 was first?
<TheLemonMan> the u32 is wider
<TheLemonMan> so no, the order is not importat
<fengb> No? Peer resolution promotes to the smallest type that satisfies all branches
<g-w1> ok
<g-w1> chill fam
<g-w1> sry wrong chat :(
<Kena> I have an existential question, does Zig support buffer underflow?
layneson has joined #zig
marnix has quit [Read error: Connection reset by peer]
<TheLemonMan> half-{empty,full} buffers?
<Kena> Yes, that kind of mechanism.
<TheLemonMan> the language itself doesn't care of how full your buffers are
<Kena> Yes, you're right I shouldn't have ask that.
marnix has joined #zig
layneson has quit [Ping timeout: 240 seconds]
<g-w1> should this example be valid then? https://paste.rs/Ly1
jjido has joined #zig
<TheLemonMan> `x + y` is `u8 + i32`, if #7173 is correct then the result is a `i32`
<g-w1> I fixed the peer type error, but now I get this: https://share.olind.xyz/f.php?h=2sFucVsb&p=1
<TheLemonMan> are you sure? it seems that it picked `u8` as common type
<g-w1> this was my implimentation https://paste.rs/H1X
<g-w1> it works if you switch x and y though
<TheLemonMan> and you added that code where?
g-w1 has quit [Ping timeout: 256 seconds]
<TheLemonMan> works for me, you should recheck that maze of conditional checks
skuzzymiglet has joined #zig
hnOsmium0001 has joined #zig
aerona has joined #zig
gpanders has quit [Quit: ZNC - https://znc.in]
Kena has quit [Remote host closed the connection]
<marler8997> do we currently have a way for a build.zig file to reference another build.zig file?
CodeSpelunker has joined #zig
<ifreund> marler8997: not really, though you can totally import functions and/or build step from it
<ifreund> this is what I do for zig-wayland: https://github.com/ifreund/zig-wayland
<marler8997> gotcha
<marler8997> problem that needs to be solved I think
<ifreund> yeah, the handling of packages in the zig build system needs a fair bit of fleshing out
<marler8997> I'm working on it :)
<ifreund> I think the first step would be deciding on an official manifest format for packages
<marler8997> nah
<ifreund> this would state the version, where the root source file is, and other things as needed
<ifreund> nah?
<marler8997> I've been going through the absolute minimum of what is needed
<marler8997> it's not ready to present, but if you want to have a gander: https://github.com/marler8997/zig-package-manager/blob/master/Filetrees.md
<ifreund> marler8997: at first glance that doesn't look flexible enough to allow e.g. distros to override the way filetrees are retrieved
<ifreund> i.e. /usr/include/zig instead of downloading from a url
<marler8997> it can
<marler8997> http://example.com/foo.tar.xz /usr/include/zig
<marler8997> that would go in .zig-redirects/url
<marler8997> you can also make it project specific, or global
<ifreund> Ah I see, missed that part
<ifreund> yeah I like the direction you're going with this
<marler8997> you can redirect by URL, hash or name, all 3 have valid use cases
<marler8997> I'm trying to approach it from bottom up, what do we absolutely need to get this working
<ifreund> seems like a solid plan to me, building a user friendly interface over the details is the last step
<marler8997> right
<ifreund> what if we standardized a function packages could put in their build.zig instead of the build function?
<ifreund> pub fn package(b: *Builder) Pkg { ... }
<ifreund> it would return the package provided by the filetree
gpanders has joined #zig
gpanders has quit [Remote host closed the connection]
<ifreund> hmm, still wouldn't be enough for zig-wayland though, we need a way to pass config options to the package
<marler8997> now you have 2 ways of adding a package to your local builder object
<marler8997> the builder object has everything we need
<marler8997> My idea right now is to implement serializing the builder object to JSON
<fengb> Just configure everything with JSON. What could go wrong
<ifreund> I don't follow how that would help us?
<marler8997> you could, but zig is much nicer for humans to work with
<marler8997> so the problem is, how do you reference object in other build.zig files correct?
<marler8997> i.e. you have a library in one build.zig file you want to use in another build.zig file
<marler8997> so, zig compiles the librarie's build.zig build, serializses the final data to JSON, then the applications build.zig file can access all it's data from the JSON file
<ifreund> ok, and so in this json file there is a list of packages that you can then use if you want among other things
<marler8997> this means every build.zig file still only gets compiled once, but you can reference the data from any other build.zig file
<marler8997> the JSON would just be the exact data you would find in the builder object
<ifreund> that doesn't solve the problem of user configuration of packages though like I need for zig-wayland
<marler8997> user configuration of packages?
<ifreund> the user needs to be able to pass arbitrary xml files to be scanned in the build.zig
<ifreund> then I generate the packages code from those xml files
<marler8997> -Dxmlfiles=a.xml,b.xml,c.xml?
<ifreund> hmmm
<marler8997> I'm sure I'm missing something
<ifreund> then the user has to manually invoke zig build -Dfoo on all the dependencies?
<marler8997> I'm trying to understand your use case but I'm having trouble filling details
<marler8997> but I really want to understand, tackling use case is the best way to test an idea
<ifreund> did you read my readme to get an idea of my current build.zig API?
<marler8997> reading...
<ifreund> each project may use different protocols and needs a way to tell zig-wayland's build.zig/scanner to scan them and generate the package's code at build.zig time
<ifreund> I think it makes most sense for this configuration to happen from the projects build.zig not zig-wayland's build.zig
<ifreund> I also need to figure out a way to integrate this code generation with zig's caching system, but I think that's orthagonal
<marler8997> I'm understanding a bit more...I don't see how it would be possible for a project's protocol xml files to be in zig-wayland build.zig file... (in response to your statement " I think it makes most sense for this configuration to happen from the projects build.zig not zig-wayland's build.zig")
<ifreund> I mean using build options on zig-wayland's build.zig, that's then separate from the projects build.zig no?
<marler8997> so...for me to understand a bit more...what does zig-wayland do we these protocol files?
<ifreund> it parses them and generates zig code implementing the API described
<marler8997> these don't look like "build options" to me...are these protocols optional for a project?
<ifreund> this zig code forms the package provided
<marler8997> they look like they are part of the project, not optional things
<ifreund> yeah these are part of the project but will vary between projects
<marler8997> ok, so the problem you're solving is...somebody needs to generate code for these protocol files
<marler8997> and zig-wayland has implemented BuildStep objects to generate these files correct?
<ifreund> yep
<marler8997> got it
<marler8997> in that case
<marler8997> I would say that you could put your Build Object definitions in something other than zig-wayland's build.zig file
<marler8997> protogen.zig
<marler8997> so with my proposal, zig-wayland would be a file tree, and the project could access any files from it, including something like protogen.zig
<ifreund> oh, and then import that from the projects build.zig? does the projects build.zig have easy access to zig-wayland's filetree?
<marler8997> yes, with the Filetree's proposal
<marler8997> this enables using files from anything, including nonzig projects
<ifreund> cool so bascially the same API I have now but without having to pass zig-wayland it's relative path and with my build.zig renamed
<ifreund> true, this is super generic
<marler8997> yeah
jjido has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
dumenci has quit [Ping timeout: 260 seconds]
sord937 has quit [Quit: sord937]
wootehfoot has joined #zig
nrdmn0 has quit [Quit: The Lounge - https://thelounge.chat]
lltt has joined #zig
jjido has joined #zig
<frmdstryr> alexnask[m], just watched your showtime on vtables / dispatch, great job! Really interesting results
nrdmn0 has joined #zig
jjido has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
aerona has quit [Quit: Leaving]
jjido has joined #zig
cole-h has joined #zig
wootehfoot has quit [Read error: Connection reset by peer]
frmdstryr has quit [Ping timeout: 256 seconds]
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
<hlolli__> is there a nice way to clone struct, like could I take `struct1: Struct` and make var struct2 = Struct{..struct1KeyVals} ?
Xavi92 has joined #zig
<fengb> You copy using `var struct1 = struct2`
<hlolli__> really, lol. Yes you are right.
<hlolli__> I was just watching this about strings in zigSHOWTIME on youtube, somehow didn't occour to me that it also applies to struct instances. Which means I've probably copied structs unwillingly. Anyway thanks fengb :)
<Xavi92> Hi, we are finding the root cause why the error at the last comment is happening on https://bugs.llvm.org/show_bug.cgi?id=48062 . Is there any way to make zig print the command line arguments passed to clang?
mixi has quit [Quit: quit]
mixi has joined #zig
<marler8997> --verbose-cc or something I think
frmdstryr has joined #zig
<marler8997> zig build-exe --help, there's like 9 --versose-* options you can use, one of them will have what you ned
<Xavi92> marler8997: thanks a lot!!
<Xavi92> --verbose-cc did it
<marler8997> cool
waffle_ethics has quit [Ping timeout: 260 seconds]
waffle_ethics has joined #zig
frmdstryr has quit [Remote host closed the connection]
frmdstryr has joined #zig
skuzzymiglet has quit [Read error: Connection reset by peer]
<andrewrk> marler8997, the build importing another build thing is something I plan to revisit with during the release cycle where we work on the package manager
<marler8997> andrewrk cool, that's where my exploration took me
<marler8997> you didn't happen to look at my filetrees draft did you?
frmdstryr has quit [Ping timeout: 256 seconds]
Xavi92 has quit [Ping timeout: 240 seconds]
<andrewrk> hmm nope not sure what you're referring to
<marler8997> I'm working through package manager use cases and what is the minimum amount of features we need for package management
<marler8997> I think I've come up with a very small set of features that accomplish what we need
<andrewrk> ah nice you took the time to write something up - I will study this
<pixelherodev> I think I'm going to pass on the CBE tests for now and focus on expanding its coverage instead
<pixelherodev> s/tests/Execution &/
<marler8997> Basically, being able to reference other build.zig files, and implementing file acquisition is all we need I think
Xavi92 has joined #zig
<andrewrk> pixelherodev, I'll set something up for that soon - I have a pretty good idea of how it can work
* pixelherodev nods
<andrewrk> marler8997, yeah I think 95% of the implementation will be in zig code with only a tiny modification needed to stage1 code
<pixelherodev> I looked into it twice now, and had a couple ideas on how to go about it, but this is one thing you can definitely do much more easily than I can
<pixelherodev> I haven't touched zig cc at all
<andrewrk> marler8997, one idea that I had about this is that there would exist a strictly declarative (not .zig code) list of dependencies. You would still be able to use build.zig logic to conditionally depend on something, but you would have to declare the *possible dependency* in the declarative file
<andrewrk> libraries which can be built in a standard way and would have a trivial build.zig file would be able to omit it
<marler8997> that idea applies to my Filetrees example would mean declaring all your filetrees in this declarative file
<marler8997> amounts to the same thing
skuzzymiglet has joined #zig
<marler8997> my idea though is to separate zig libraries/packages from file acquisition
<andrewrk> I'm 1/2 way through, agreeing with everything so far
<marler8997> lol
<marler8997> it's not an organized proposal, it's more my thought process as I work through the details
<earnestly> marler8997: You may wonder to consider namespacing your trees by the version
<earnestly> Or hash I guess
<marler8997> earnestly, lower down in the document you can assign your trees names
<earnestly> marler8997: Have you read gogolinux's paper on package management?
<marler8997> I haven't
<marler8997> link?
<andrewrk> marler8997, I think I can solve the problem of working on dependencies problem in a simpler way than this redirect system
<marler8997> andrewrk oh?
<andrewrk> yeah, so one observation is that if you're editing a dependency, 99% of the time you are intending to send a patch to that project once you resolve the issue
donniewest has quit [Read error: Connection reset by peer]
<andrewrk> which means you probably have a source checkout of that dependency that you would intend to use as your development environment
<marler8997> right
<dominikh> (more true for open source than for closed source. closed source loves their custom patches they never upstream.)
<marler8997> zig filetree redirect zigsdl $HOME/git/zigsdl
<andrewrk> yeah but I'm happy to make the open source workflow feel more natural and closed source workflow feel more second class :)
donniewest has joined #zig
<andrewrk> my counter proposal would still allow a command to do this, but the state would be tracked in the declarative package listing file, which would show up in e.g. `git diff`, rather than in this external redirects file system
<marler8997> thinking
<andrewrk> so you'd replace the url with the file path, and then leave the hash empty
<andrewrk> (or maybe there is a special value to ignore hashes)
<marler8997> so would you have to change that file for all repositories?
skuzzymiglet has quit [Read error: Connection reset by peer]
<marler8997> project A B C depend on project D
<andrewrk> I see, this is a good question
<marler8997> one project is the main project
<marler8997> so assume A is the main
<andrewrk> as a developer I can see wanting to pursue both possibilities
<marler8997> right
<andrewrk> maybe your debugging attitude is "I only want to mess with this for this one thing" or it is "let's make sure my changes are correct for all dependencies"
<marler8997> this might be orthogonal to having zig-redirects outside git
<marler8997> there was also ideas of having global redirects
<andrewrk> when I did a bunch of node.js stuff, I never used the "npm link" feature. I was happy with my workflow where I would directly edit the code in node_modules/ then copy the changes to the dev repo, then `rm -rf` the directory and update to reinstall the module
<andrewrk> I found this less error prone than trying to deal with the npm link feature
<marler8997> not familiar with npm link
<andrewrk> it's basically the zig redirect thing :)
<marler8997> so, you're saying we could download a copy of each dependency, probably in zig-cache
<marler8997> then developers would just modify them directoy in zig-cache?
skuzzymiglet has joined #zig
msingle has joined #zig
<marler8997> if we took the proposal and remove .zig-redirects, users would still be able to modify build.zig (or deps.txt or whatever) to modify the filetree URLS to loca file paths and that would still get tracked by git
<marler8997> so I think you're proposal is really just mine but removing the redirect feature
<marler8997> and potentially putting the filetree information in another file besides build.zig (which I think is fine)
frmdstryr has joined #zig
<andrewrk> I guess the main thing I'm saying is that I think we can eliminate the redirects thing and still have a great user experience
<andrewrk> btw marler8997 switching topics, I iterated on your reloader code a bit and worked out a better solution than the environment variable thing
<marler8997> andrewrk, cool what did you find?
<andrewrk> I didn't push it yet but you can use extern weak symbols to detect whether an executable is running statically or dynamically
<marler8997> (yeah, redirects may not be necessary, not sure yet though)
<andrewrk> I also realized that we can't rely on having the libraries in the dynamic section of the ELF because it could be different at runtime
<andrewrk> but that's ok - all we have to do is have an extern weak symbol on dlopen
<marler8997> "different at runtime"?
<marler8997> the names of the so files or something?
<andrewrk> so on system A, you might need to load libXfoo.so but on system B you might need to load libXbar.so
<earnestly> marler8997: https://github.com/gobolinux/paper (there's a pdf there)
<andrewrk> all we really need though is dlopen. then we can detect what we need to do, and load the appropriate driver
<marler8997> andrewrk, gotcha, I didn't anticipate the so filenames being different, so yes, you can't rely on dynamic section
<andrewrk> so that means the next thing zig is blocking on is (1) extern weak and (2) ability to make PIEs
<marler8997> how do you use extern weak symbols to know if you're running statically or dynamically?
<marler8997> you check if they are null or something?
<ifreund> there was something else I wanted extern weak for but I can't remember what now
<andrewrk> yeah, for a static binary all extern weak symbols will be null but when executed dynamically they will be populated
<andrewrk> also std.zig.system.NativeTargetInfo.detect(arena, .{}) works on my machine - it would be a valuable contribution to self-hosted if you made it work on yours too
<andrewrk> I mean as far as detecting the dynamic linker
<marler8997> ok, so you are basically calling dlopen and then dlsym for all functions?
<andrewrk> yeah that's the idea. I didn't get to the part where I could call dlopen yet because I didn't do the -lc hack that you did, I want to make PIEs work instead of that
<andrewrk> because -lc is cheating! that's the whole thing we're trying to do - -lc at runtime :)
tane has joined #zig
<marler8997> I'm not using -lc :)
<marler8997> oh, the C version doesn't use libc
<andrewrk> ahh
<marler8997> zig version had some issues
<marler8997> it doesn't use libc though
<marler8997> but hold on
<marler8997> what are the steps?
<marler8997> run statically
<marler8997> detect NULL extern weak symbol
<marler8997> then find loader and run execve
<marler8997> then detect populated extern weak symbol, then run dlopen/dlsym?
<marler8997> and if those are the steps, how do you know what all your libraries/functions are?
<andrewrk> the c file is just workaround for zig not having extern weak yet
<andrewrk> it gets to the execve and then crashes because the exe is not PIE
<marler8997> is "static-window" in an so file, or in the exe?
<marler8997> I mean: zig_window_get_fns
<andrewrk> it's just `zig build-exe static-window.zig static-window.c`
<marler8997> oh nice
<ifreund> huh, we are missing time_t on linux x86_64 but have it for all other archs
<ifreund> just like dev_t :/
<andrewrk> sounds like an annoying but easy contribution
<marler8997> wait, wouldn't dlopen be all you need?
<marler8997> just check if dlopen is NULL
<andrewrk> yeah
<andrewrk> exactly
<marler8997> very cool
<andrewrk> never mind dlclose that should just be deleted
donniewest has quit [Ping timeout: 256 seconds]
<earnestly> GNU also has dlmopen
<andrewrk> earnestly, the idea here is to be libc-agnostic
<earnestly> Yes, only mentioned in the sense that those additions might be worth looking at, or not as the case may be
<andrewrk> marler8997, I think I could already PoC this in C pretty easily but I obviously want to show it off in zig instead :D
<marler8997> yean must implement extern weak symbols
<andrewrk> yeah I have a branch, hopefully can finish it up today
<marler8997> if we work on the C version, that's less incentive for people to use Zig right? :)
<andrewrk> exactly
<andrewrk> well plus that dynamic linker detection is pulling a lot of weight
<marler8997> oh yeah wait a second'
<andrewrk> although it apparently needs a patch. what system are you on where it is failing to detect your linker?
<marler8997> how do you know all the functions you need?
<marler8997> failing to detect my linker?
<marler8997> did I leave a comment about that or something?
<marler8997> nixos
<andrewrk> me too
cren has quit [Quit: cren]
<marler8997> the reason I think it wasn't working was because I thought it was probably using libc somewhere down the line
<andrewrk> it's looking at the /usr/bin/env ELF file
<marler8997> let me try it right now
Xavi92 has left #zig ["https://quassel-irc.org - Chat comfortably. Anywhere."]
<marler8997> hey it's working now
<marler8997> probably was just a bug
<andrewrk> so after it gets to line 39 in my gist, the next step will be to detect whether the system is running X11 or Wayland or something else, and then figure out what is the appropriate .so file to load to start creating a window
<andrewrk> for x11 it looks like the first one would be Xlib.so, so that we can call XInitThreads() (just going by what GLFW does first)
<marler8997> that's like an "optional" so
<ifreund> for wayland at least you should be able to statically link libwayland. you only need to dynamically link mesa
<marler8997> are we just going to punt and use dlopen/dlsym for that?
<ifreund> as for determining which to use, chech WAYLAND_DISPLAY then DISPLAY in that order
<andrewrk> nice, yeah we'll check wayland first since wayland emulates x11
<marler8997> oh wait andrewrk, NativeTargetInfo doesn't work if you comment out "-lc" in build.zig
<dominikh> strictly speaking, Xwayland is optional, but yes, most compositors do support it. but they also need to link against X11 libs for that
<marler8997> the zig example works if you comment out "-lc"
<marler8997> just not with NativeTargetInfo
<andrewrk> hmm on my machine I am not doing -lc and it works
<ifreund> LemonMan is the best
<andrewrk> omg
<marler8997> jesus
<mq32> andrewrk: do i see this right that builtin functions operate on AST level?
<ifreund> mq32: see e.g. @field(), I think the answer is yes
<tdeo> and @TypeOf
<andrewrk> and @cImport
<mq32> uh, neat :)
<andrewrk> zig's builtin functions: surprise, we're 1/2 lisp
<mq32> haha :D
<mq32> just add a new type `astnode` *laughing*
<tdeo> i think that'd actually be pretty trivial to add in stage1
<mq32> heh
<mq32> lisp.zig :D
<mq32> ziglisp
<mq32> @cImport is still really weird
<mq32> everything else follows typical zig rules
<mq32> > It's just a question of whether it's a good idea.
<mq32> i already see people using translate-c + c-codegen :D
<mq32> write some c-code at comptime
marnix has quit [Ping timeout: 246 seconds]
<mq32> then @cSource it :D
<skuzzymiglet> where do i put zig lib/ again?
<marler8997> with that we could probably remove @cDefine?
<skuzzymiglet> i need to bootstrap zigup with master
<ifreund> it should be ../lib/ relative to the zig binary
<skuzzymiglet> ok thanks
<skuzzymiglet> ima just stick with master
osa1 has quit [Remote host closed the connection]
osa1 has joined #zig
nvmd has joined #zig
<mq32> andrewrk: is there a way to line-break at "and" or "or" in zig fmt?
<ifreund> mq32: put a line break after the and/or
<mq32> ah
<mq32> AH
<mq32> i prefix my lines usually
<mq32> return foo
<mq32> and bar;
<mq32> instead of
<mq32> return foo and
<mq32> bar;
<fengb> That’s not the zig way™️
<mq32> which one? *grin*
<fengb> zig fmt is word-of-god (except for all the bugs)
<ifreund> zig fmt lets you line break after any binary operator
<fengb> Also isn’t it mostly word-of-vexu now? >_>
<scientes> fengb, it came down on stone tablets
<fengb> The we put lightning in those tablets
skuzzymiglet has quit [Ping timeout: 272 seconds]
<mq32> :D
<marler8997> andrewrk, another idea, instead of using dynamic section or dlopen, you could set LD_PRELOAD with the library list before you call execve on the loader
donniewest has joined #zig
<andrewrk> mq32, zig fmt respects line breaks after all binary operators, including `and` and `or`
<mq32> okay, good to know :)
<andrewrk> excellent point marler8997
<andrewrk> although I think dlopen might be less kludgy because with the LD_PRELOAD technique we would need all the symbols to be extern weak
<marler8997> oh is that right?
jogama has joined #zig
lunamn has quit [Quit: Ping timeout (120 seconds)]
ave_ has quit [Quit: Ping timeout (120 seconds)]
lunamn has joined #zig
ave_ has joined #zig
<jogama> Hello; is it possible to donate to bug bounties for zig?
<marler8997> just send LemonMan an email with a check :)
<mq32> LOL
donniewest has quit [Quit: WeeChat 3.0]
frmdstryr has quit [Ping timeout: 240 seconds]
<jogama> I saw that I can email donations@ziglang.org and did so.
jogama has left #zig [#zig]
lqd has quit [Ping timeout: 260 seconds]
travv0 has quit [Ping timeout: 260 seconds]
lqd has joined #zig
travv0 has joined #zig
<hlolli__> I haven't been following all the twitch streams, I notice many of them revolve around the topic of bootstraping and self-hosting. Is there a POC for self-hosted zig compiler in wasm which can run in the browser?
waffle_ethics has quit [Ping timeout: 240 seconds]
<fengb> Not yet. Trying to get the existing code base to work is quite a challenge and self-hosted isn’t there yet
msingle has quit [Ping timeout: 256 seconds]
jpe90 has joined #zig
tane has quit [Quit: Leaving]
jjido has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
jpe90 has quit [Ping timeout: 265 seconds]