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/
<pixelherodev> Best part is that this time, support won't be just whatever random features were needed short term
<fengb> I feel like I should learn this so I could generate LLVM directly
<pixelherodev> It's not *that* bad, but if definitely takes some getting used to though
<pixelherodev> s/though//
<AndroidKitKat> pixelherodev: do you use cool retro term unironically?
<AndroidKitKat> not trying to flame jw
<pixelherodev> Yeah, but only with minimal settings
<pixelherodev> And like 2FPS
<pixelherodev> Mostly just for the glow honestly
<pixelherodev> Literally, all I really have active are 43% bloom, tiny screen curvature, and either 1/3 or full transparency depending on what the term is for
<pixelherodev> Each window averages maybe 2% CPU, which is so low as to not affect battery life at idle, and to not seriously slow down e.g. compilation
<AndroidKitKat> w/e floats ur boat tbh
<jaredmm> I won't disagree with that. Digging through the dark magic of these headers trying to figure out why a variable name stops populating. 4 cases when you import Windows.h.
<pixelherodev> To be fair, 2% CPU is actually *absurd*, but it's not *quite* annoying enough to motivate me to profile it and work on optimizing it, nor to replace it with something more... practical?
<pixelherodev> ... mundane?
<jaredmm> I'm pretty sure the issue is that the name of the value is a #define that evaluates to nothing, which I'm sure there's a reason for.
<jaredmm> So I guess by that logic, translate-c is correct that it doesn't have a name, but if it doesn't have a name would the idiomatic Zig code be to use the name of the define as the member name? Is there a better way to represent that Windows-or-C-ism in Zig?
<pixelherodev> If it's defined to nothing, it's usually for `#ifdef`s
<jaredmm> / For compilers that don't support nameless unions/structs
<jaredmm> #if defined(NONAMELESSUNION) || !defined(_MSC_EXTENSIONS)
<jaredmm> I defined that when importing and it got rid of the problem, but I'm trying to understand if that's the right solution or just a solution.
<jaredmm> Basically that. I guess that anonymous unions aren't a thing in C99 and that's why the define exists.
waleee-cl has quit [Quit: Connection closed for inactivity]
<pixelherodev> C11 or GNU extension to C99, yeah
<pixelherodev> Though I've seen a claim (I haven't verified this) that the original 1974 compiler supported them
<pixelherodev> (where Original means Dennis Ritchie's)
<frmdstryr> Was @typeId removed?
<fengb> Yes, @typeInfo does everything you need
Sahnvour has quit [Ping timeout: 240 seconds]
Sahnvour has joined #zig
<frmdstryr> fengb: Thanks
<frmdstryr> andrewrk: Using llvm10 works for the @intToFloat thing
<andrewrk> frmdstryr, interesting. that probably means the difference earlier was 9.0.0 -> 9.0.1
dimenus has quit [Ping timeout: 240 seconds]
<frmdstryr> the size is almost 4x bigger though?
<frmdstryr> the llvm 9 debug build was 109kb, the llvm 10 build is 387kb
<andrewrk> debug builds are allowed to be big. is that new size a problem? how about the size of your release build?
<pixelherodev> That concerns me more if it scales
<andrewrk> by what scale factor?
<pixelherodev> Would e.g. a build that's 10MB in 9 be 40MB in 10? Or would it be 10.3MB?
<pixelherodev> Does it shift a build size graph up linearly or proportionally to existing size?
<frmdstryr> The release build is 334k
<frmdstryr> before the release build was around 35k if I remember correctly
<pixelherodev> *That*'s a much bigger deal than debug builds...
<pixelherodev> release-fast or release-small I assume?
<frmdstryr> release-safe
<pixelherodev> Ah
<pixelherodev> As long as release-fast and release-small aren't overly affected I'm not terribly concerned
<pixelherodev> ... suddenly the fact I'm going to need to extend the parser to support LLVM 10 feels more real :(
<andrewrk> pixelherodev, maybe you should develop against the llvm10 branch
<pixelherodev> Eh, it's fine for now
<pixelherodev> As I mentioned earlier, I'm maybe an hour or two of work away from working codegen
<pixelherodev> As my free time is limited, I'd rather get this working on nine and then add moving to ten to the TODO list for after more important work
<fengb> If it’s anything like my estimates, that’s another 2 weeks >_>
<pixelherodev> I bet you ten internet points that I get it done *tonight* then :)
<pixelherodev> ?
<pixelherodev> ... ohhh, it's additional debug info?
<andrewrk> quite possibly. which reminds me, I should look into bumping the DWARF version emitted
<fengb> Would compiling with —strip help?
<daurnimator> pixelherodev: no I'm saying if size of debug info is a concern then perhaps we should prioritise supporting compressed debug info
<pixelherodev> Ah
<pixelherodev> It's amazing how much more reliable software is when written based on a spec and not a random specific example :D
<BaroqueLarouche> andrewrk: Is there a way to call a function from reflection ? This is what I'm trying to do: https://gist.github.com/mlarouche/3f898a80cff37705851638911a30a94a
<fengb> @field(Type, name) can get you the actual function
<BaroqueLarouche> ohhh
mmx870 has quit [Ping timeout: 248 seconds]
mmx870 has joined #zig
ur5us has quit [Ping timeout: 240 seconds]
<pixelherodev> Part of the fun of writing this parser is finding bugs in the upstream LLVM parser
<pixelherodev> While I don't doubt mine is incorrect in far far more places than upstream, I can now name at least one spot in which it's *more* correct according to the spec :P
<pixelherodev> Or maybe I should do more testing before getting excited: it's the regex in the spec that's wrong, not the parser :P
<pixelherodev> s/wrong/misleading
<pixelherodev> InitializerConstant is optional lexically, but not semantically in the context where I thought it was
<andrewrk> i'm still amazed when I modify thousands of lines of zig code, fix the compile errors, and then everything actually works
<daurnimator> andrewrk: whenever I try that I get compiler segfaults ;)
_Vi has joined #zig
euandreh has joined #zig
drp has quit [Remote host closed the connection]
drp has joined #zig
dddddd has quit [Ping timeout: 272 seconds]
_Vi has quit [Ping timeout: 240 seconds]
ur5us has joined #zig
ScentedFern has quit [Remote host closed the connection]
student069 has quit [Quit: ZNC 1.7.5 - https://znc.in]
return0e_ has joined #zig
mikdusan has quit [Ping timeout: 265 seconds]
<Snektron> <BaroqueLarouche "andrewrk: Is there a way to call"> If you use the length of std.meta.declarations(AllImageFormat) you have an upper bound for the result array size
<Snektron> Besides, i think the break statement adds a bug, since youre exiting a scope with a pointer to a local variable
ur5us has quit [Ping timeout: 240 seconds]
mikdusan has joined #zig
lunamn has quit [Ping timeout: 255 seconds]
student069 has joined #zig
marmotini_ has joined #zig
marmotini_ has quit [Ping timeout: 272 seconds]
lunamn has joined #zig
alexnask has joined #zig
_Vi has joined #zig
marmotini_ has joined #zig
_whitelogger has joined #zig
rappet has joined #zig
drp has quit [Remote host closed the connection]
waleee-cl has joined #zig
<BaroqueLarouche> Snektron: the break statement works because it is inside a comptime block, also thanks for the suggestion :)
<Snektron> Im not quite familiar with lifetime of comptime variables, but i'd guess that they should be similar to runtime lifetimes
<alexnask> Afaik comptime values don't have a lifetime, they are always valid, so you can leak pointers (at least with current stage1 compiler)
<alexnask> Iirc the plan for stage2 (self hosting compiler) is to implement a garbage collector for comptime values
marmotini_ has quit [Remote host closed the connection]
marmotini_ has joined #zig
marmotini_ has quit [Ping timeout: 272 seconds]
alexnask has quit [Ping timeout: 255 seconds]
alexnask has joined #zig
alexnask_ has joined #zig
alexnask__ has joined #zig
alexnask has quit [Ping timeout: 272 seconds]
alexnask_ has quit [Ping timeout: 255 seconds]
LER0ever has joined #zig
<fengb> They have permanent lifetime ;)
<alexnask__> Sure, good point
alexnask__ is now known as alexnask
dddddd has joined #zig
dingenskirchen has quit [Read error: Connection reset by peer]
dingenskirchen1 has joined #zig
dimenus has joined #zig
dingenskirchen1 is now known as dingenskirchen
waleee-cl has quit [Quit: Connection closed for inactivity]
metaleap has joined #zig
<fengb> Really weird idea: can I lookup a runtime pointer value at comptime? It's in a globally static array
<fengb> I suppose I can lookup the offset
<fengb> ... this is so much better than sorting at comptime
<fengb> Sometimes it's just better to do the simple thing :/
frmdstryr has quit [Ping timeout: 260 seconds]
frmdstryr has joined #zig
frmdstryr has left #zig [#zig]
frmdstryr has joined #zig
marmotini_ has joined #zig
marmotini_ has quit [Ping timeout: 260 seconds]
waleee-cl has joined #zig
<andrewrk> alexnask, fengb: they have the same lifetime as any value in a garbage collected language
<andrewrk> e.g. if you use a comptime value only inside a comptime function call to produce a different value, the intermediate values can be freed
<andrewrk> stage1 does not do this
student069 has quit [Quit: ZNC 1.7.5 - https://znc.in]
_whitelogger has joined #zig
dingenskirchen has quit [Remote host closed the connection]
dingenskirchen has joined #zig
LER0ever has quit [Remote host closed the connection]
LER0ever has joined #zig
Akuli has joined #zig
nepugia has joined #zig
<betawaffle> is there some way to determine if the *value* of a `var` argument is comptime-known?
<andrewrk> why do you need to know?
<betawaffle> maybe to switch between returning an array pointer or slice?
<betawaffle> not that important, i suppose
<andrewrk> wouldn't it be better to always return a slice, since that works for both cases?
metaleap has quit [Quit: Leaving]
<betawaffle> i'm writing a minecraft server, and i'm trying to design a really nice interface for parsing the protocol
<andrewrk> I see
<betawaffle> so i'm trying different ideas
<pixelherodev> Comptime is nice, but until performance is improved (or some optimizations are implemented) I'm being very hesitant with how much work I shift to comptime
<pixelherodev> If there was e.g. a builtin for string comparison, that would majorly improve the biggest issue I had
<pixelherodev> A comptime function that does a lot of `std.mem.eql(u8,`s will massively inflate compile times :(
<pixelherodev> The problem with a builtin though is that it increases language complexity, whereas detecting std.mem.eql(u8 calls and replacing them leave the language simpler and complicate the compiler
TheLemonMan has joined #zig
<TheLemonMan> andrewrk, picking a thumb1 only architecture as default for the ARM target isn't a wise move IMO
<TheLemonMan> I mean, you picked a -m variant without ARM instructions
frmdstryr has quit [Ping timeout: 240 seconds]
LER0ever has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<fengb> pixelherodev: yeah I noticed; was sorting on strings at comptime and it was really slow :(
<pixelherodev> I'd try to optimize it but I honestly don't want to touch the C++ any more than I already have
return0e_ has quit [Ping timeout: 260 seconds]
_Vi has quit [Ping timeout: 240 seconds]
<andrewrk> TheLemonMan, you're referring to https://github.com/ziglang/zig/blob/6291e8e4926c2e7dbd5cfa651f862c7dbd2e5bda/lib/std/target/arm.zig#L1512 ? what's your counter-proposal?
<andrewrk> it should probably be an 'a' variant right?
<andrewrk> how about v7a?
<TheLemonMan> yeah that's much better
<andrewrk> ok pushing to master
<TheLemonMan> the m variants are badly supported by the stdlib, we should add some checks for noarm feature here and there
<andrewrk> TheLemonMan, btw why do we have arm and thumb architectures? could we possibly remove the thumb arch and rely on detecting whether "thumb_mode" cpu feature is enabled?
<andrewrk> that has always confused me
<TheLemonMan> the feature means thumb is supported iirc, it doesn't change the instruction set being used
xackus has joined #zig
mahmudov has joined #zig
<xackus> andrewrk, sourcehut CI seems to have hanged on https://github.com/ziglang/zig/pull/4558
<andrewrk> xackus, can you try to see if an admin in #sr.ht can fix it for you?
<xackus> i'll try
<andrewrk> also I'm not worried about that, it's good enough to pass the other ones for this case
xackus has quit [Remote host closed the connection]
FireFox317 has joined #zig
<FireFox317> you can also "force" a recheck on the CI, by closing and opening the PR
<mikdusan> good to know
<alexnask> Is there any way to create a new tuple with an element removed from some existing tuple?
<alexnask> E.g. to keep the first element in a function call then forward the rest to @call
<BaroqueLarouche> alexnask: I would like to know that as well
<andrewrk> TheLemonMan, fyi here's the changes it took to fix behavior tests with --test-evented-io: https://github.com/ziglang/zig/commit/0a8835268915feab561bdb68adb17aed76b9708f
<andrewrk> note that dwarf.zig and elf.zig are not forced to have these annotations; those files remain agnostic. it's debug.zig which is trying to create a "seam" for the purpose of stack trace printing
<TheLemonMan> hmm, I remember trying to run the tests with that flag
_Vi has joined #zig
<andrewrk> the interesting changes in the above commit are in std.fs
metaleap has joined #zig
<andrewrk> btw what should be the convention? (1) `openAtC` (2) `openAtZ` (3) `openAt0`
<andrewrk> sorry, typo fixed: (1) `openatC` (2) `openatZ` (3) `openat0`
frmdstryr has joined #zig
<fengb> mikdusan mentioned Nullz 🙃
<andrewrk> (4) `openat🙃`
<mikdusan> `openat␀`
xackus has joined #zig
<frmdstryr> andrewrk & TheLemonMan thanks for all the help yesterday, finally got it all working
<andrewrk> frmdstryr, so it was a bug fix in llvm then?
<BaroqueLarouche> my vote for 1, since null-terminated sentinel as used when interracting with C
<BaroqueLarouche> *are
<TheLemonMan> frmdstryr, awesome!
<frmdstryr> Yes, Seems like it, with 9.0.0 at least
wootehfoot has joined #zig
<andrewrk> BaroqueLarouche, I veto the C one because it's not only for C related things. when you compile for windows with no libc or linux with no libc, the OS still has a bunch of ABIs that use null terminated strings
<andrewrk> one day C will be dead and zig lives on, there should be no functions with "C" in their name, referring to C programming language
<BaroqueLarouche> andrewrk: I see! 2 then
<BaroqueLarouche> "one day C will be dead and zig lives on, there should be no functions with "C" in their name, referring to C programming language" this is the way
<mikdusan> mando!
<BaroqueLarouche> haha yes!
<andrewrk> TheLemonMan, damn, even with that new debug info improvements, stage1 stack traces not working for me in debug builds: https://clbin.com/EaAOG
<andrewrk> this regressed for me about a month ago
<andrewrk> (this is my wip branch rebased on master)
<TheLemonMan> uh that's weird
<TheLemonMan> can you fax me the zig binary?
<andrewrk> sure, what's your phone number
<shakesoda> for null terminators I like the Z suffix
<TheLemonMan> 1-800-SWEET-BBY
<andrewrk> I doubt you can run it; the dynamic library paths are all in /nix/store. but the elf/dwarf info could be interesting
<TheLemonMan> eh, I hoped to be able to run it but my glibc is too old
<TheLemonMan> can you backtrace where the EndOfStream is coming from?
<andrewrk> sure
<andrewrk> damn if this was zig I could have just passed -target-glibc and called it aday
xackus has quit [Remote host closed the connection]
<andrewrk> TheLemonMan, it's hitting EndOfStream in scanAllFunctions
<TheLemonMan> uh that's weird, can you trace down the exact line where that's returned?
<andrewrk> yeah working on it
<andrewrk> dwarf.zig:515 try s.seekable_stream.seekTo(after_die_offset)
<andrewrk> btw I don't think we have to scan all functions - I think there's a way to do it more lazily
<andrewrk> that's a separate issue though
<TheLemonMan> that's very weird, after_die_offset comes from getPos
<andrewrk> I think this should be reproducible by opening the elf file I sent from a separate zig program, right?
<TheLemonMan> let me check really quick
FireFox317 has quit [Remote host closed the connection]
ur5us has joined #zig
<TheLemonMan> andrewrk, hmm, should seekByFn for SliceSeekableInStream allow a seek to the latest byte in the slice + 1 ?
<TheLemonMan> this code regressed when I changed the file stream to a slice-backed one
<andrewrk> TheLemonMan, yes I think so
<andrewrk> also these interfaces are so awkward :-/
<andrewrk> well, the lang isn't done yet
dingenskirchen has quit [Quit: dingenskirchen]
dingenskirchen1 has joined #zig
<TheLemonMan> there are no tests for SliceSeekableInStream or am I blind?
dingenskirchen1 is now known as dingenskirchen
<andrewrk> I think there are no tests
<TheLemonMan> oh those fucking dependency loops again
<fengb> I think the solution is "don't do stupid shit" :P
<fengb> I feel like I started this whole thing by adding my dumbass loop -_-
<TheLemonMan> nah, the old code worked because it was way too permissive
<andrewrk> I wonder how to describe the lazy value system into the language spec
<andrewrk> it's essential for several language features to work
<TheLemonMan> just describe what they enable, how (lazy values) is an implementation details
<andrewrk> yeah, that makes sense
<pixelherodev> Can you specify an enum value as equal to another value?
<pixelherodev> i.e. `pub const a = enum { A, B, Default = A }`?
<Snektron> I think you might be able to do that with non-exhaustive enums
<andrewrk> pixelherodev, you could define a const and initialize both elems to it
<pixelherodev> No way to do that with an untagged enum?
<andrewrk> I recommend to not have duplicate enum tags. it would be better for "Default" to be pub const Default = a.A; inside the enum
alexnask has quit [Ping timeout: 255 seconds]
<andrewrk> allowing same-value tags is a compromise to support external ABIs
<TheLemonMan> andrewrk, can you try #4563 ?
<andrewrk> it's bad practice for internal code
alexnask has joined #zig
<andrewrk> TheLemonMan, yes just a moment
<pixelherodev> `pub const Default` ... ohhh
<pixelherodev> Didn't realize you could do that in an enum
<mikdusan> and that way it forces you to use one enum during switch
<andrewrk> you can even still use it in a switch too
<andrewrk> switch (foo) { Enum.Default => blah, else => baz }
<mikdusan> if using .(enum literal) syntax that is
<pixelherodev> that's brilliant :)
<Snektron> too bad you cant make use of enum literal syntax with that
<andrewrk> I don't think it's too bad, I think it makes perfect sense
<alexnask> Is 'error: function with inferred error set must return at least one possible error' expeced behavior when try-ing a function with an explicit empty error set return value in the body?
<alexnask> I know this sounds stupid
<andrewrk> alexnask, that error is planned to be removed. you will be able to not return any errors from an inferred error set function. the inferred error set will be error{}
<alexnask> But there is no way to check the return error set of functions that take var arguments before calling them, so I'm trying to use empty error sets as a workaround
<andrewrk> as a workaround you can explicitly put error{}
<pixelherodev> Seconded
<pixelherodev> That not being able to use enum literal makes sense
<andrewrk> TheLemonMan, brilliant: https://clbin.com/wmeEb
<pixelherodev> In my case for instance, if A is default, I should be comparing against A, not default
<alexnask> andrewrk, my current usecase is finding the error set of a method of a given type and attaching it to the return type of a function, so I can't just pass error {} atm.
frmdstryr has quit [Ping timeout: 265 seconds]
<pixelherodev> Whoa, neat! stage2 panic looks awesome :D
<alexnask> The root issue is the type erasure of any function that uses a comptime/var argument imho though
<andrewrk> alexnask, you are welcome to implement https://github.com/ziglang/zig/issues/4564
<andrewrk> pixelherodev, that's stage1!
<andrewrk> we don't ship binaries with debug info on the download page, but one of the benefits of stage1 being a hybrid of c++ and zig is that we get stack traces even in c++
<andrewrk> it could be an interesting open source project to make "libdebuginfo" or something like this, which is intended to be used by C/C++ and provide stack traces
<andrewrk> all it would do is export some C ABI functions that are backed by zig std lib
marmotini_ has joined #zig
<fengb> So backporting Zig into C?
<fengb> The more I think about the bootstrap process, the more circular it sounds >_>
<andrewrk> the crazy thing is that zig's bootstrap process is significantly less circular than most other langs
<alexnask> I used to maintain a compiler that just shipped generated C sources and there was no non-self hosted implementation at all
<andrewrk> yeah. that creates work for maintainers though, every time you introduce a bootstrapping stepping stone
<alexnask> (Well obviously there was one at the very beginning)
<alexnask> It also made it tricky to change syntax
marmotini_ has quit [Ping timeout: 265 seconds]
<andrewrk> mikdusan, yeah like this
<andrewrk> I think we could make a more useful, powerful API too
<mikdusan> the source would be cleaner too
<alexnask> I'm pretty close to an interface implementation that works at compile time :) (at least for non-owning interface types)
<mq32> alexnask, what do you mean by non-owning interface type?
<mq32> like "referene to a thing of that implements this interface?"
<alexnask> Pretty much
<mq32> neat
<mq32> how do you approach it?
<alexnask> The current scheme provides Owning, NonOwning, Inline(N) and InlineOrOwning(N) storage types
<alexnask> Basically you define an interface type given a vtable type (struct with fn fields) and a storage type
<alexnask> And you can initialize it given an object of any type that implements those functions (and an allocator if the storage type needs it)
<mq32> hmm
<mq32> sounds similar to an idea i had
<mq32> but i failed at crafting and calling the right function pointers
<fengb> Can you show an example?
<alexnask> This is an old implementation I wrote back in the day: https://gist.github.com/alexnask/1d39fbc01b42ce2b5b628828b6d1fb46
<alexnask> (it didnt work at comptime)
<alexnask> mq32, generating the vtable can be a bit tricky but it is possible ;)
<BaroqueLarouche> Similar to the ideas in this talk https://youtu.be/gVGtNFg4ay0
<alexnask> Yeah I was inspired by that talk
* andrewrk queued up to watch that video
euandreh has quit [Remote host closed the connection]
marmotini_ has joined #zig
FireFox317 has joined #zig
dingenskirchen has quit [Remote host closed the connection]
dingenskirchen has joined #zig
Akuli has quit [Quit: Leaving]
<FireFox317> TheLemonMan, i pushed #4566 (empty inferred error sets) 6 minutes later than you, whoops XD
<andrewrk> wow
<TheLemonMan> heh, I couldn't wait to get that damn error out of my way
<andrewrk> both so quick
<FireFox317> i guess andrewrk can choose which one to merge hahah
<FireFox317> btw, i wouldn't mind if you chose TheLemonMan andrewrk XD
<TheLemonMan> every damn time I was refactoring shit I had to come back and add `anyerror` to stop the compiler from complaining
<alexnask> Nice, I will be able to remove my workarounds soon it seems :P
<andrewrk> I like the one with the more complicated test case
<FireFox317> which is obviously TheLemonMan's PR :)
<FireFox317> and actually my PR won't pass the tests since i didnt remove the compile error.
<TheLemonMan> yay, 4562 is not my fault
dimenus has quit [Quit: Leaving]
<daurnimator> andrewrk: "we don't ship binaries with debug info on the download page" => this is where the debuginfod issue comes in :)
nepugia has quit [Ping timeout: 240 seconds]
<TheLemonMan> not really
<TheLemonMan> the idea is to ship separate debug infos using the build-id/gnu-debuglink/dSYM mechanisms
<TheLemonMan> debuginfod is meant for debuggers
<daurnimator> TheLemonMan: that would be https://github.com/ziglang/zig/issues/2300
<daurnimator> I did have https://github.com/ziglang/zig/issues/2300 but the PR it was on top of was rejected
frmdstryr has joined #zig
<TheLemonMan> yeah I remember, that's on my radar too
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
<daurnimator> IMO debug.zig needs almost a rewrite: the scanAll stuff should be more object-oriented.....
<alexnask> Can I concatenate tuples somehow?
<alexnask> (I need to add a 'self' argument to a parameter pack)
<pixelherodev> Nested tuple maybe?
<pixelherodev> i.e. `{self, other_tuple}`
<alexnask> Ah, doing ".{self_ptr} ++ args" wasn't working, splitting .{self_ptr} to a const first works
<BaroqueLarouche> doing `const temp = .{self_ptr}` ?
<alexnask> Yes
<BaroqueLarouche> need to try that
<BaroqueLarouche> wanted to do `comCall(obj, "Func", .{args...}` but needed a way to concatenate tuples
<alexnask> We are doing similar things ;)
<alexnask> I can call into undefined function pointers both at runtime and comptime now :D
<alexnask> Just the vtable generation left
metaleap has quit [Quit: Leaving]
<daurnimator> alexnask: hmm? I couldn't get tuple concat working
<alexnask> The code I linked in the screenshot works
<BaroqueLarouche> `.{self} ++ args` should be fixed
<alexnask> Yes, using it directly didn't work, the compiler doesn't seem to be able to make a constant temporary
<alexnask> Explicitly making a temporary worked
ur5us has quit [Ping timeout: 240 seconds]
ur5us has joined #zig
_whitelogger has joined #zig
student069 has joined #zig
dimenus has joined #zig