<< 14-09-2021 >>

00:05:24*arkurious quit (Quit: Leaving)
01:11:30FromDiscord<impbox [ftsf]> I'm pretty sure there's a way to do it but I can't find the syntax for a for loop that's expanded at compile time
01:12:26FromDiscord<impbox [ftsf]> sent a code paste, see https://play.nim-lang.org/#ix=3yNJ
01:19:49*Pyautogui joined #nim
01:26:52*Gustavo6046 quit (Read error: Connection reset by peer)
01:30:07*crem quit (Ping timeout: 240 seconds)
01:30:13*neurocyte0 joined #nim
01:30:13*neurocyte0 quit (Changing host)
01:30:13*neurocyte0 joined #nim
01:30:46*Gustavo6046 joined #nim
01:32:10*crem joined #nim
01:32:35*neurocyte quit (Ping timeout: 268 seconds)
01:32:35*neurocyte0 is now known as neurocyte
01:39:28*Pyautogui quit (Ping timeout: 252 seconds)
01:40:44*pch quit (Remote host closed the connection)
02:01:01*pch joined #nim
02:11:41*rockcavera quit (Remote host closed the connection)
02:16:22*pch quit (Ping timeout: 268 seconds)
02:20:56*pch joined #nim
03:11:59FromDiscord<leorize> tag your proc with compileTime
03:12:10FromDiscord<leorize> or are you looking for loop unrolling?
03:13:04FromDiscord<impbox [ftsf]> loop unrolling since N is known at compile time as it's a generic param
03:14:17FromDiscord<leorize> pray really hard that the compiler will do it for you, or ask in #science
03:14:44FromDiscord<leorize> I'm pretty sure mratsim made an unroller, couldn't find it though
03:15:07FromDiscord<Elegantbeef> https://github.com/schneiderfelipe/unrolled archived but yea
03:15:09nrds<R2D299> itHub: 7"🧻 Unroll for-loops at compile-time."
03:18:55FromDiscord<impbox [ftsf]> oh ok, i thought it was a built-in nim feature i couldn't find
03:19:11FromDiscord<leorize> i think it was removed because it wasn't implemented
03:19:21FromDiscord<impbox [ftsf]> but yeah maybe compiler will do it for me anyway
04:00:45FromDiscord<xflywind> see also https://github.com/nim-lang/Nim/pull/18038/files
04:02:02FromDiscord<xflywind> https://github.com/mratsim/constantine/blob/c2d716b0/helpers/static_for.nim
04:05:57FromDiscord<impbox [ftsf]> Thanks
04:06:01*supakeen quit (Quit: WeeChat 3.2.1)
04:06:31*supakeen joined #nim
04:07:00FromDiscord<xflywind> there is also a hole in Nim compiler, so you can also use #pragma directives.
04:07:11FromDiscord<xflywind> sent a code paste, see https://play.nim-lang.org/#ix=3yOe
04:08:21FromDiscord<xflywind> generates
04:08:29FromDiscord<xflywind> sent a code paste, see https://play.nim-lang.org/#ix=3yOf
04:26:48ZevvVarriount: yes, I know. but that's of course caused by the fact that npeg generates a 17k case statement full with stuff from your grammar
04:26:56Zevvit's something to chew on for the compiler
04:27:12Zevvyou're boldly pushing npeg where noone has pushed it before
04:27:25ZevvI'd like to call it insanity, but hey, I'm not stopping you from testing my code, right
05:03:38*Gustavo6046 quit (Read error: Connection reset by peer)
05:04:04*Gustavo6046 joined #nim
05:19:50FromDiscord<Varriount> Zevv: My end goal here is to create an actually usable SQL formatter. So far every formatter I've used has either had... highly questionable code quality, cost money, or been too buggy to use.
05:20:06nrds<Prestige99> impbox: Are you using sdl2_nim? Curious if we can easily target wasm
05:20:10FromDiscord<Varriount> (or been fairly inflexible, configuration-wise)
05:20:52*Gustavo6046 quit (Quit: ZNC 1.8.2 - https://znc.in)
05:21:05*Gustavo6046 joined #nim
05:21:27FromDiscord<impbox [ftsf]> @prestige, yep
05:21:31FromDiscord<impbox [ftsf]> it works well
05:21:36FromDiscord<Varriount> In reply to @Zevv "<@169336940846514176>: yes, I know.": Bison (another parser generator for C) appears to generate jump tables. I'm guessing the compiler doesn't choke on that because it doesn't even attempt to optimize the jumps. What I'd like to know is what Clang is actually spending all its time doing.
05:22:12*max22- joined #nim
05:22:27nrds<Prestige99> impbox: How do you compile for that target?
05:23:02FromDiscord<impbox [ftsf]> emscripten
05:23:14FromDiscord<impbox [ftsf]> check out nico's exampleApp
05:23:27nrds<Prestige99> Thanks I'll take a look
05:23:31FromDiscord<impbox [ftsf]> https://github.com/ftsf/nico/tree/main/exampleApp
05:23:46FromDiscord<impbox [ftsf]> https://github.com/treeform/nim_emscripten_tutorial based off this
05:23:48nrds<R2D299> itHub: 7"Nim emscripten tutorial."
05:23:58nrds<Prestige99> Sweet :D
05:24:42FromDiscord<impbox [ftsf]> i just do `nimble webr` and it builds a wasm, js, data and html via empscripten
05:34:10arfyhi. is there plans for, or does an REPL for nim exist?
05:34:19FromDiscord<impbox [ftsf]> inim exists
05:34:31FromDiscord<Elegantbeef> `inim` and `nim secret`
05:34:51FromDiscord<impbox [ftsf]> whoa a secret repl
05:35:05FromDiscord<impbox [ftsf]> now i don't need to run a calculator
05:35:08FromDiscord<Elegantbeef> Well nimsecret is the VM iirc so it's not as feature filled
05:35:21arfyhahaha. i use python as a calculator all the time. :D
05:48:45FromDiscord<Varriount> Anyone know of a way to get an output of what the Nim compiler is allocating memory for?
05:50:24*Gustavo6046 quit (Quit: ZNC 1.8.2 - https://znc.in)
05:51:04arfyexcellent. inim installed. very cool
05:56:16*Gustavo6046 joined #nim
06:00:17*eph quit (Remote host closed the connection)
06:02:56ZevvVarriount: by "stack trace", do you mean a nim-level stack trace or a peg-level stack trace?
06:03:37Zevvi've been trying to propagate my original peg nimnode lineinfo through into the npeg IR and generated code, but stuff is buggy - I get nonsense output every now and then and I'm having troubles to isolate and minimize the problem
06:04:06Zevvfor now I'm blaming myself, but i wouldn't be suprised if it's a nim bug
06:04:22FromDiscord<Varriount> Zevv: In the issue I just posted? Ideally both, but a peg-level stacktrace at minimum (the sequence representing the return stack).
06:04:47Zevvhmm that should be doable, I'll have to check if I have all the state present in the backframes
06:05:19FromDiscord<Varriount> Otherwise, you know that you have a recursive loop somewhere, but not where.
06:05:27Zevvtrue, that
06:05:34Zevvis the closure allocation really a problem for you?
06:05:50ZevvI did this on purpose for sake of code simplicity, but if it booms on you I might have to change that somehow
06:07:45FromDiscord<Varriount> Zevv: Yes. It causes the program to immediately crash half the time. I was able to fix it by making `doTrace` a procedure, and passing in all the state through parameters.
06:08:23FromDiscord<Varriount> Zevv: https://gist.github.com/Varriount/bc815b21ca6df742b19f22e8f8844b59
06:09:15FromDiscord<Varriount> Feel free to clean it up. I'm just hacking onto things, trying to make the output C file palatable for Clang
06:44:53Zevvwell, something like that might work just fine, this was not designed to scale up this far
06:44:55*PMunch joined #nim
06:45:20Zevvaltough i am surprised by things crashing on a stack oveflow; this is 2021
06:45:25Zevvwhat os are you runing on?
07:00:58*tdc joined #nim
07:05:45FromDiscord<gogolxdong (liuxiaodong)> How to solve `No 'Access-Control-Allow-Origin' header is present on the requested resource.` with jester?
07:21:42FromDiscord<gogolxdong (liuxiaodong)> sent a code paste, see https://play.nim-lang.org/#ix=3yOH
07:21:52*Vladar joined #nim
07:29:21FromDiscord<Varriount> In reply to @Zevv "what os are you": Windows. To be honest, it's only my guess that it's a stack overflow. All I know is that the changes I've made to NPeg appear to make the crash go away.
07:35:51FromDiscord<linux user> i found out that you cna only use 1 space for indentation :V
07:36:17FromDiscord<linux user> manual said it was 2 spaces minimum
07:39:11FromDiscord<Yardanico> In reply to @richard stallmen(crazy GNU guy) "manual said it was": it didn't
07:39:15FromDiscord<Yardanico> (edit) "didn't" => "doesn't"
07:40:06FromDiscord<Yardanico> manual has no mention of "2 spaces" at all, maybe you're referring to NEP-1 which is a code style you might or might not want to follow and not the language spec
07:41:01ZevvVarriount: why the sleep in the dotrace? :)
07:42:29FromDiscord<Varriount> In reply to @Zevv "<@169336940846514176>: why the sleep": Oh! Sorry about that. I was trying to debug an infinite loop
07:42:59Zevvhaha, np
07:45:37FromDiscord<Varriount> In reply to @Zevv "haha, np": Looks like there might be some backend optimizations I can disable to prevent Clang from consuming all memory: https://stackoverflow.com/questions/59041227/any-tips-for-compiling-huge-code-generated-source-files
07:46:21FromDiscord<Varriount> Right now a -O2 build is taking 15 minutes and counting.
07:46:22Zevvwell, i guess optimizing these things in npeg makes sense right, it'll likely reduce memory and improve speed in any case
07:46:27Zevvwait what
07:46:34Zevvthat's horrific. why the hell are you doing this
07:46:54FromDiscord<Varriount> Do you have any alternative options?
07:47:04Zevvjust write a parser by hand?
07:47:11Zevvtop down, classical
07:48:03FromDiscord<linux user> oh sorry
07:48:55FromDiscord<Varriount> In reply to @Zevv "just write a parser": There's a reason PostgreSQL's grammar is generated via a parser generator.
07:49:06Zevvhmm. fair enough
07:49:57ZevvVarriount: master is updated, now uses a nimCall proc instead of a closure for trace
07:50:04FromDiscord<Varriount> It's definitely past the "too complex to write by hand without going insane" mark.
07:50:35*neurocyte quit (Quit: The Lounge - https://thelounge.chat)
07:51:25FromDiscord<Varriount> I'll muddle along. Hopefully simplifying the grammar will help.
07:53:41*neurocyte joined #nim
07:53:41*neurocyte quit (Changing host)
07:53:41*neurocyte joined #nim
07:53:56FromDiscord<Varriount> In reply to @Zevv "<@169336940846514176>: master is updated,": Any idea if a table-based approach is comparable in runtime performance to a case-based approach?
07:54:25Zevvwhat goes in the the table then, functions?
07:55:00Zevvi haven't tried for a long time, but when developing this i looked at a number of different implementations and this one was about 1.5 times faster then second place
07:55:14FromDiscord<Varriount> I don't know yet. I'm still looking through Bison's output.
07:55:18Zevvthe good thing about the computed goto is that the C compiler can optimize way deeper
07:55:21Zevvit throws away half of the states
07:55:28Zevvor the jumps, anyway
07:55:53Zevvin the olden days npeg did not compile to nim but simply had a VM running the IR
07:56:25Zevvinstead of compiling every IR instruction into a nim snippet
07:56:54FromDiscord<Varriount> Hm, could you have a double-case statement, to expand the maximum number of states a computed goto could handle?
07:57:08Zevvprobably
07:57:27Zevvbut the non-goto case works well enough, albeit it has a somewhat lower performance
07:57:42Zevvnesting the gotos will require 2 jumps per instruction
07:57:45*arfy thinks he needs to learn more about compiler construction to answer this, but what's the process for getting nim onto a new system, if it's needed to compile itself? cross-compile from another system?
07:58:02Zevvarfy: typically you generate the C code somewhere
07:58:05Zevvand compile it on your target
07:58:32Zevvbut cross compiling might work as well, if you have that all setup
07:58:51FromDiscord<Varriount> In reply to @arfy "thinks he needs to": You generally need a C compiler capable of generating executables for an architecture other than the one the compiler is running on.
07:58:56arfyah yes, nim essentially transpiles to C.
07:59:19FromDiscord<Varriount> It's very handy like that.
07:59:39FromDiscord<Elegantbeef> Plus as it generates C you can always output C that fits a niche and it just works
07:59:57arfyC: the modern assembler.
08:00:02FromDiscord<Elegantbeef> It's how i've compiled Nim for the rpi-pico, emit C into the directory then call Cmake
08:01:11*arfy now giggles at the thought of... wait for it, nim for dos.
08:01:17arfysomeone's probably done it.
08:05:37PMunch@arfy, Nim compiles to C, not transpiles. It drops a level of abstraction when it goes from Nim to C, in the same way that C drops a level of abstraction when it compiles to assembly
08:07:15FromDiscord<Elegantbeef> Pmunch on a battle he'll never win
08:07:26*PMunch picks up pitchfork
08:11:38FromDiscord<Yardanico> @arfy why giggle at dos? https://github.com/nim-lang/Nim/blob/devel/compiler/platform.nim#L42
08:11:43FromDiscord<Yardanico> that said, I'm not sure it works with latest nim
08:11:53FromDiscord<impbox [ftsf]> what, no dos CI?
08:12:04FromDiscord<Yardanico> https://github.com/nim-lang/Nim/blob/devel/compiler/options.nim#L587
08:26:23FromDiscord<Varriount> Zevv: So, what it looks like Bison does (and this is just from skimming through the generated C code) is something similar to NPeg, except that it extracts the information that makes each state unique (token to match, next state, etc.) to global tables. The core "loop" consists of generic logic that looks up all the information about the current state, and then acts on it.
08:26:23PMunchDamn it, I've been trying to write this module without using macroutils. But now I need it and know I could've made some better patterns around the code..
08:27:53FromDiscord<Varriount> Zevv: It looks like a shift-reduce parser (https://en.wikipedia.org/wiki/Shift-reduce_parser), based on the terminology used in the source code. (note, I don't actually understand what a shift-reduce parser is)
08:32:49ZevvVarriount: well, I don't understand any of this as well. I'm blisfully oblivious of all other parser types then peg and top-down-recursive
08:56:06*sagax quit (Read error: Connection reset by peer)
08:56:43FromDiscord<Varriount> Zevv: Well, I'm going to head off to bed. I really appreciate your help with this.
09:18:36Zevvnighty
09:25:51*hmmm joined #nim
09:25:51Yardanico@federico3 you around? Can you please resolve some of my doubts about licenses? So far I thought that LGPL-3 is not suitable for languages where all modules are compiled into a single binary since one of the points of LGPL is the ability to swap the library after compilation so there won't be any difference between GPL and LGPL, but you use LGPL in some of your Nim projects - so with e.g. https://github.com/FedericoCeratto/nim-httpauth my whole Nim
09:25:51Yardanicoproject has to be LGPL-3, right?
09:26:18hmmmhooooy
09:26:28hmmmlong time no see folks nimions
09:28:26FromDiscord<Elegantbeef> Hello
09:28:37Yardanico*correction - I know that I don't need my whole project to be LGPL or GPL in this case, but it needs to have a GPL-compatible license and I still should ship the source with the binaries, right?
09:29:50hmmmbeefy bro! what happened to this place we used to be so many
09:33:23FromDiscord<Elegantbeef> uhh people leave over time it seems
09:33:35hmmmthose damn people
09:33:44FromDiscord<Elegantbeef> Though i think the discord server has had growth
09:33:51hmmmit's also irc that is now unmanagable, I'm downloading discord client rn
09:33:52hmmmyea
09:34:08FromDiscord<Yardanico> you can also use matrix
09:34:15FromDiscord<Yardanico> like beef does :)
09:34:21hmmmwhat's the handle of my boi xflywind I need to bother for my personal gain
09:34:27FromDiscord<Elegantbeef> Wait this is matrix, where's keanu?!
09:34:29hmmm[him]
09:34:48FromDiscord<cabboose> So… matrix resurrection
09:35:12hmmmyard I'm too low tech for matrix I think
09:35:38hmmmis my man disruptek still around?
09:35:55FromDiscord<Elegantbeef> Not here but in other places he is
09:36:30FromDiscord<cabboose> Like a bdsm ninja?
09:36:43FromDiscord<Elegantbeef> You'd know wouldnt you
09:36:52FromDiscord<cabboose> I learnt watching you
09:38:38FromDiscord<hmmm> jeez discord looks like it was made by a trippy 6 yo on pills
09:39:46FromDiscord<hmmm> I think @xflywind is a cute looking boi, also he might tell me why his xlxs lib hello world example complains about lacking zlib.h
09:41:39FromDiscord<Rika> The files likely use compression from zlib
09:42:12FromDiscord<hmmm> Rika! weren't you my bro from jp?
09:42:30supakeenxlsx is a zipfile with some xml in them ;)
09:42:38FromDiscord<hmmm> installing zlib on windows turned out to be a huge nightmare
09:43:40FromDiscord<hmmm> like: install 8gb o VisualStudio, then install CMake, then run this weird powershell script and it will still not work
09:43:54FromDiscord<Rika> In reply to @hmmm "Rika! weren't you my": My memory is exceptionally bad. I do not recall who you are
09:44:08FromDiscord<hmmm> Rika I might get hurt by this comment
09:44:22FromDiscord<hmmm> delete it since it's discord and they probably have the babby features
09:44:29FromDiscord<Rika> I understand. It has happened with multiple people before
09:44:37FromDiscord<hmmm> but I still love u
09:44:44FromDiscord<Rika> But I’m not in control of my memory
09:44:57FromDiscord<hmmm> if I choose a cute discord icon you might like me again
09:45:01FromDiscord<hmmm> or even remember about me
09:45:32FromDiscord<cabboose> This sounds like a priest at a school joke gone wrong
09:45:34FromDiscord<Rika> I legitimately do not recall you
09:46:29FromDiscord<Rika> In reply to @hmmm "like: install 8gb o": Nim does not use mvsc, so you will need to install it for the compiler it does use
09:46:34FromDiscord<Rika> Which I have forgotten as well
09:46:47FromDiscord<hmmm> hmmm
09:46:49*arkurious joined #nim
09:46:54FromDiscord<Rika> In reply to @Rika "Nim does not use": Does not use mvsc by default
09:46:56FromDiscord<Rika> In reply to @hmmm "hmmm": Ah
09:46:59FromDiscord<Rika> You’re that guy
09:47:10FromDiscord<hmmm> 😄
09:47:14FromDiscord<Rika> You’re /hm+/
09:47:35FromDiscord<hmmm> ❤️
09:47:35FromDiscord<Rika> The man with ever changing m counts
09:47:59FromDiscord<hmmm> you see Rika that you couldn't forget me even with your memory
09:48:07FromDiscord<Rika> It takes a while
09:53:32*hmmm quit (Quit: WeeChat 3.2)
09:54:33FromDiscord<PsychoClay> anyone have some threading code i can look at?
09:55:08FromDiscord<cabboose> Theres some in the manual/gc/threads section I tink
09:55:29FromDiscord<PsychoClay> yea but i need some more
09:55:41FromDiscord<cabboose> MOAR
09:56:03FromDiscord<Rika> What in particular is stumping you?
09:56:10FromDiscord<cabboose> What trouble do you have with threading
09:56:21FromDiscord<PsychoClay> everything just segfaults :Sadge:
09:56:54FromDiscord<cabboose> Do you have some example code?
09:57:17FromDiscord<Rika> I am betting that you are passing a reference around
09:57:21FromDiscord<PsychoClay> well its kind of hard to show because it involved multiple files and templates
09:57:27FromDiscord<Rika> Or a wrongly allocated pointer
09:57:29FromDiscord<PsychoClay> (edit) "involved" => "involves"
09:57:41FromDiscord<hmmm> icon test
09:57:49FromDiscord<cabboose> are you using refc or arc/orc
09:57:51FromDiscord<hmmm> perfect
09:57:51FromDiscord<cabboose> but as rika says
09:57:53FromDiscord<Rika> Oh wow you actually took what I wrote
09:57:54FromDiscord<PsychoClay> orc
09:58:11FromDiscord<Rika> Okay it’s a bit harder to wrongly allocate on orc so
09:58:24FromDiscord<Rika> Now it’s odd that you’re getting issues
09:58:33FromDiscord<Rika> Do you not have code even if it is long
09:58:36FromDiscord<cabboose> Are you dealing with IO?
09:58:37FromDiscord<PsychoClay> sent a code paste, see https://play.nim-lang.org/#ix=3yPf
09:59:07FromDiscord<cabboose> I dont know what I’m looking at; I defer to master rika
09:59:38FromDiscord<PsychoClay> i think im trying to copy a Table
10:00:31FromDiscord<Rika> In reply to @cabboose "I dont know what": I could understand it but I am not really in the mood to read such a long stack trace
10:00:44FromDiscord<cabboose> It also looks like theres some IO in there
10:01:01FromDiscord<cabboose> are you doing async naughty things?
10:01:03FromDiscord<Rika> It says thread local storage there so are you sure you’re using orc?
10:01:12FromDiscord<PsychoClay> ye
10:01:14FromDiscord<Rika> Or maybe orc still has thread local heap
10:01:20FromDiscord<Rika> Are you using ref or pointer
10:01:28FromDiscord<PsychoClay> just object
10:01:36FromDiscord<Rika> How do you initialise the table
10:01:41FromDiscord<Rika> With new or init
10:01:44FromDiscord<PsychoClay> initTable
10:01:58FromDiscord<PsychoClay> i was using ref but that gave me other issues
10:02:00FromDiscord<Rika> How is it passed to the thread
10:02:34FromDiscord<PsychoClay> its the ArgStore
10:02:37FromDiscord<cabboose> There shouldn’t be that much issues using thread on ORC
10:02:40FromDiscord<PsychoClay> sent a code paste, see https://play.nim-lang.org/#ix=3yPk
10:02:45FromDiscord<Rika> How are you allocating these pointers
10:02:46FromDiscord<cabboose> o yummy pres
10:02:50FromDiscord<cabboose> ptrs
10:03:05FromDiscord<PsychoClay> allocShared0
10:03:39FromDiscord<Rika> I assume all of these pointers are allocated with that
10:03:43FromDiscord<PsychoClay> ye
10:03:57FromDiscord<Rika> Definitely strange
10:04:20FromDiscord<cabboose> well if you don’t initialise the objects correctly after using allocShared0 won’t it be nil?
10:04:26FromDiscord<Rika> Uh?
10:04:31FromDiscord<Rika> Objects are never nil
10:04:36FromDiscord<Rika> Ah
10:04:41FromDiscord<Rika> Wait no
10:04:49FromDiscord<Rika> Objects are never nil indeed
10:05:02FromDiscord<Rika> After calling allocation you have a zeroed object
10:05:13FromDiscord<cabboose> I thought thats createShared
10:05:14FromDiscord<Rika> It should be fine once you []=
10:06:00FromDiscord<PsychoClay> but dont u guys have some example code somewhere
10:06:09FromDiscord<cabboose> I’m probably wrong but I thought you just give allocShared0 a size while createShared gets a type
10:06:27FromDiscord<cabboose> so I thought only createShared actually knows what to do with it in terms of object in it
10:06:51FromDiscord<Rika> Create shared is basically just alloc shared with size of type as the argument
10:06:54FromDiscord<Rika> I believe
10:07:15FromDiscord<cabboose> But why use pointers when you’re using orc \:’)
10:07:25FromDiscord<PsychoClay> dude i have no idea what im doing
10:07:42FromDiscord<Rika> Is there a reason you use threading
10:07:52FromDiscord<PsychoClay> fast
10:07:58FromDiscord<Rika> Not necessarily
10:08:00FromDiscord<cabboose> Fast to die
10:08:04FromDiscord<PsychoClay> async doesnt work fast
10:08:07FromDiscord<cabboose> 🤣
10:08:07FromDiscord<PsychoClay> i tried
10:08:07FromDiscord<Rika> Fast to lose mind
10:08:15FromDiscord<Rika> You probably tried wrong then
10:08:21FromDiscord<PsychoClay> yea :Sadge:
10:08:27FromDiscord<Rika> Or you have some crazy performance goals
10:08:27FromDiscord<cabboose> Async can be pretty fast
10:08:56FromDiscord<PsychoClay> i wanted to try something like 10 threads each with 10 async workers
10:08:59FromDiscord<cabboose> It’s hard to give you example code because if you’re doing manual memory allocation it’s up to you to be safe about it
10:09:08FromDiscord<Rika> That sounds like a quick way to get rate limited
10:09:20FromDiscord<PsychoClay> nah its for a web crawler
10:09:38FromDiscord<Rika> That sounds like a quick way to get rate limited (1)
10:09:40FromDiscord<cabboose> have you tried using `MyType = ref object` instead of `MyType = ptr object`
10:09:55FromDiscord<Rika> He did as he said
10:09:57FromDiscord<PsychoClay> il try that
10:10:01FromDiscord<Rika> Oh?
10:10:04FromDiscord<Rika> You liar
10:10:09FromDiscord<PsychoClay> no i was talkin about the table
10:10:14FromDiscord<PsychoClay> no the udata object
10:10:21FromDiscord<PsychoClay> (edit) "no" => "not"
10:10:22FromDiscord<Rika> Rude
10:10:26FromDiscord<Rika> Smh
10:10:32FromDiscord<cabboose> Hahahaha fair
10:10:45FromDiscord<cabboose> If you don’t know what you’re doing with manual memory allocs just do ref pointers
10:10:47FromDiscord<PsychoClay> well i was using refc before thats why it was a ptr
10:10:47FromDiscord<cabboose> orc has a shared heap
10:11:01FromDiscord<cabboose> fair
10:11:15FromDiscord<PsychoClay> so if u use orc i dont have to use any pointers
10:11:20FromDiscord<PsychoClay> every thing can just be ref?
10:11:25FromDiscord<Rika> Supposedly
10:11:28FromDiscord<cabboose> Well in a way
10:11:53FromDiscord<Rika> I’ve had issues with putting locks in objects before so maybe that contributes to the issue but it doesn’t seem so
10:12:19FromDiscord<cabboose> For most use cases refs work good
10:12:55FromDiscord<PsychoClay> sent a long message, see http://ix.io/3yPo
10:13:00FromDiscord<cabboose> and I also found manual memory allocations had to be handled differently if they can also contain referenced objects in ORC compared to RefC
10:13:47FromDiscord<cabboose> I actually don’t know about channel
10:13:49FromDiscord<cabboose> I mean
10:13:51FromDiscord<cabboose> again
10:13:53FromDiscord<cabboose> you have a shared heap
10:14:05FromDiscord<PsychoClay> so?
10:14:20FromDiscord<cabboose> Why bother with channel
10:14:36FromDiscord<PsychoClay> how else do i pass msgs between threads? deque maybe
10:14:41FromDiscord<cabboose> That’s mostly for interthread communication in pre-orc world AFAIK
10:14:50FromDiscord<cabboose> yeah
10:14:55FromDiscord<PsychoClay> hmm ok
10:15:09FromDiscord<cabboose> Deque and locks will do swimmingly
10:15:57FromDiscord<cabboose> If you’re doing async and threading make sure your asyncs are poll’d only on the thread they were dispatched from
10:16:09FromDiscord<cabboose> else shit blows
10:16:11FromDiscord<PsychoClay> ofc
10:17:09FromDiscord<PsychoClay> should i lock when writing to int?
10:17:10FromDiscord<cabboose> I could show sample code of multi threading and CPS but that’s all i’ve got on a public repo
10:17:28FromDiscord<Rika> Personally I’d just recommend going with one or the other
10:17:40FromDiscord<Rika> In reply to @PsychoClay "should i lock when": Unless the operation explicitly says it is atomic, use the lock
10:20:31FromDiscord<cabboose> Or as I like to say, always lock and \\\\
10:25:06FromDiscord<Rika> Sorry but this isn’t exactly on topic but seems extremely important to spread
10:25:07FromDiscord<Rika> https://twitter.com/peter_szilagyi/status/1437646118700175360?s=21
10:25:51FromDiscord<Rika> “Between the 3 Sept and 10 Sept, secure env vars of all public @travisci repositories were injected into PR builds. Signing keys, access creds, API tokens. ↵↵Anyone could exfiltrate these and gain lateral movement into 1000s of orgs. “
10:26:50FromDiscord<PsychoClay> who is travis :thonk3d:
10:27:21FromDiscord<Rika> Name of CI service
10:28:30PMunchDamn, that is baaaad
10:29:16FromDiscord<Rika> Yes it’s pretty bad, and that’s not the end of it
10:29:39FromDiscord<Rika> “Felix Lange found this on the 7th and we've notified @travisci within the hour. Their only response being "Oops, please rotate the keys", ignoring that all their infra was leaking.↵↵Not getting through, we've started reaching out to @github to have Travis blacklisted.”
10:29:54FromDiscord<Rika> “After 3 days of pressure from multiple projects, @travisci silently patched the issue on the 10th.↵↵No analysis, no security report, no post mortem, not warning any of their users that their secrets might have been stolen.”
10:30:07FromDiscord<Rika> “Finally after multiple ultimatums from multiple projects @travisci posted this lame ass post hidden deep where nobody will read it: travis-ci.community/t/security-bul… ↵↵Not even a single "thank you". Not acknowledgment of responsible disclosure. Not even admitting the gravity of it all.”
10:30:25FromDiscord<Rika> The link that I copied incorrectly
10:30:27FromDiscord<Rika> https://travis-ci.community/t/security-bulletin/12081
10:30:47PMunchYeah I saw that
10:32:16NimEventerNew thread by Kiloneie: Looking for feedback on my latest video before it goes live: Nim for Beginners #26 Reference Objects, see https://forum.nim-lang.org/t/8425
10:32:26FromDiscord<Rika> Secrets are not plaintext but nonetheless
10:32:35FromDiscord<Rika> It is not safe to keep them unchanged
10:41:00FromDiscord<enthus1ast> does one know if its possible in ormin to specify the result type in a select?↵I want to query the db like this\:↵`select checkruns(id, exitcode, output, startedat, stoppedat, !!"stoppedat::timestamp - startedat::timestamp")`
10:41:31FromDiscord<enthus1ast> but obviously it knows nothing about this calculated column
10:49:16FromDiscord<fwsgonzo> Hey all, is there a 128-bit integer type in Nim?
10:49:40FromDiscord<fwsgonzo> all C, C++ compilers of note support `uint128_t` and `int128_t` and I need it specifically for my project
10:50:12FromDiscord<Rika> There is none
10:50:15FromDiscord<Rika> You can make it so
10:50:21FromDiscord<Rika> With importc
10:50:51FromDiscord<Rika> But you will need to create the procedures (probably with importc as well)
10:51:03FromDiscord<xflywind> there is a rfc
10:51:09FromDiscord<xflywind> https://github.com/nim-lang/RFCs/issues/399
10:51:30FromDiscord<xflywind> and a package
10:51:32FromDiscord<xflywind> https://github.com/rockcavera/nim-nint128
10:51:35nrds<R2D299> itHub: 7"128-bit integers"
10:52:00FromDiscord<fwsgonzo> the problem for me is that while uint64 works most of the time, I am building an assembler for a 128-bit achitecture, so it's going to be a PITA without it
10:52:15FromDiscord<hmmm> xxxxxflywind my favourite boi
10:52:34FromDiscord<hmmm> what incantation I have to spend to install zlib on windows
10:52:48FromDiscord<Rika> The package does not use C’s 128-bit integers
10:53:03FromDiscord<enthus1ast> can you not just download the dll?↵(@hmmm)
10:53:10FromDiscord<enthus1ast> or the lib?
10:53:31FromDiscord<hmmm> I have no idea how to get the dll, the official site just spits the sources
10:53:54FromDiscord<fwsgonzo> In reply to @flywind "https://github.com/rockcavera/nim-nint128": That might be just what I needed 👍
10:53:54FromDiscord<Rika> He needs the header
10:53:56FromDiscord<hmmm> I suspect zlib dudes hate windows
10:53:57FromDiscord<enthus1ast> https://github.com/kiyolee/zlib-win-build
10:53:59nrds<R2D299> itHub: 7"zlib Windows build with Visual Studio."
10:54:30FromDiscord<enthus1ast> i can remember that building it was quite a pain
10:54:37FromDiscord<enthus1ast> but with msys it was okisch
10:54:59FromDiscord<enthus1ast> building withouth msys on windows is always a pain ;D
10:55:03FromDiscord<enthus1ast> except nim
10:56:02FromDiscord<hmmm> hmm
10:56:10FromDiscord<hmmm> I should try msys
10:56:46FromDiscord<hmmm> the other github link has the very helpful "To build, simply open the required solution file, and you know how to use Visual Studio, right?"
10:56:52FromDiscord<hmmm> jeez
10:57:01FromDiscord<hmmm> who uses visual studio in this day and age ffs
11:00:06PMunchHmm, this is annoying: http://ix.io/3yPx/nim, http://ix.io/3yPy/nim
11:00:41PMunchFor some reason One, Two, and Three aren't declared as they would otherwise be when they are part of a generated symbol..
11:00:50FromDiscord<hmmm> munchie you old fox
11:01:07PMunchHuh?
11:01:26FromDiscord<hmmm> jesus I stay away some months and everyone forgets about lowly me
11:01:46PMunchHaha, I haven't forgotten you
11:01:50PMunchWhere did you go?
11:01:53FromDiscord<hmmm> ❤️
11:02:09FromDiscord<Rika> In reply to @hmmm "jesus I stay away": I apologise
11:03:01FromDiscord<hmmm> I had some real life spells, frightening stuff being exposed to irl tbh, but now I'm back with my stupid nim questions
11:03:15FromDiscord<cabboose> @PsychoClay\: are you still having issues or all good
11:03:37FromDiscord<PsychoClay> im converting from ptr to ref
11:03:58FromDiscord<cabboose> You mad man; you were just choc full of ptrs werent you
11:03:59FromDiscord<PsychoClay> do have some weird deque issue where elemtns dont get removed
11:04:22FromDiscord<PsychoClay> In reply to @cabboose "You mad man; you": yea it was pretty bad
11:04:24FromDiscord<cabboose> That is... odd.
11:04:38FromDiscord<cabboose> Even with a lock?
11:04:47FromDiscord<PsychoClay> yea
11:05:06FromDiscord<PsychoClay> but only the first time each thread acceses the que
11:05:42FromDiscord<cabboose> I'd be interested to help but it's becoming more abstract without seeing the code
11:05:59FromDiscord<cabboose> And my code is all CPS so it's not very helpful to share unless you're interested in going down that rabbithole
11:06:07FromDiscord<cabboose> (worth it)
11:06:46FromDiscord<PsychoClay> heres the file if u want to take a look https://github.com/PsychoClay/aberrant/blob/master/src/scrapers/mcrawl.nim
11:08:57FromDiscord<cabboose> `# threading in nim is hell`
11:08:58FromDiscord<cabboose> woke
11:09:15FromDiscord<PsychoClay> i spent like a month trying to figure it out
11:09:55FromDiscord<cabboose> Your name is truly fitting for the sites you are scraping friend
11:10:05FromDiscord<PsychoClay> wha t??
11:10:12FromDiscord<PsychoClay> im scraping all the sites
11:10:23FromDiscord<PsychoClay> downloading all the files
11:10:42FromDiscord<cabboose> maybe i just didn't read further pass the files called onlyfans.nim etc hahahaa
11:10:48FromDiscord<PsychoClay> lol
11:11:10FromDiscord<cabboose> I'll have a looksy
11:12:40FromDiscord<PsychoClay> i think maybe i was copying the que with `var targets = udata.targets`
11:12:56FromDiscord<fwsgonzo> how do i capture variables in an inline function like C++ lambdas?
11:14:04FromDiscord<Rika> In reply to @fwsgonzo "how do i capture": You should be able to, what error are you getting
11:14:21FromDiscord<fwsgonzo> does it work like in javascript where you "inherit" the larger scope?
11:14:35FromDiscord<Rika> What do you mean?
11:14:39FromDiscord<Rika> I am unfamiliar
11:15:18FromDiscord<fwsgonzo> well, in C++ I would do: `auto x = [captured_var] (int arg) { function; goes; here; }`
11:15:34FromDiscord<fwsgonzo> and then I can invoke it, `x(myint)` later.
11:16:14FromDiscord<fwsgonzo> in javascript you inherit the scope you are in when the function is created, so you can bring with you locals
11:16:40FromDiscord<fwsgonzo> either is fine with me, I just need inline functions with capture storage
11:18:09FromDiscord<Rika> You don’t need any extra special syntax
11:18:21FromDiscord<Rika> You just use the variable and it should work
11:18:54FromDiscord<fwsgonzo> Yes, I see that's very simple
11:19:04FromDiscord<fwsgonzo> In C++ everything has to be rocket theory
11:20:30FromDiscord<tandy> is there a way to force nimble to install from the latest commit and not the latest tag / release?
11:20:43FromDiscord<impbox [ftsf]> there is... i forget the syntax
11:20:49FromDiscord<impbox [ftsf]> nimble install foo@#head maybe
11:20:51FromDiscord<impbox [ftsf]> (edit) "nimble" => "`nimble"
11:20:55FromDiscord<impbox [ftsf]> (edit) "foo@#head" => "foo@#head`"
11:21:33FromDiscord<tandy> yee i got it
11:21:39FromDiscord<tandy> repo@#head
11:23:43FromDiscord<cabboose> my friend, you have a lot here to be refactored hahahaha
11:23:45FromDiscord<cabboose> so many ptrs
11:23:47FromDiscord<cabboose> so so many
11:23:52FromDiscord<PsychoClay> yea iknow
11:24:33FromDiscord<cabboose> For starters don't pass your udata as a pointer to the threads, it'll bring up issues with the reference counting
11:24:43FromDiscord<cabboose> make an arbitrary object to contain the references and pass that to the thread
11:25:08FromDiscord<cabboose> but pass that I got scared by all the pointers
11:25:20FromDiscord<PsychoClay> i tried to pass it directly but it didnt work
11:25:57FromDiscord<cabboose> that should work no?
11:26:01FromDiscord<cabboose> sent a code paste, see https://play.nim-lang.org/#ix=3yPI
11:26:04FromDiscord<PsychoClay> oh like that
11:26:21FromDiscord<cabboose> ye
11:27:01FromDiscord<cabboose> anytime you pass things around in pointers you risk them not being reference counted correctly; and since you are using orc it's really unnecessary to risk that unless you really have to
11:27:23FromDiscord<cabboose> I mean it would be more manageable if things weren't so nested
11:27:26FromDiscord<cabboose> this looks like a hell of a project
11:27:34FromDiscord<cabboose> Kudoes
11:27:36FromDiscord<PsychoClay> its fun
11:27:51FromDiscord<PsychoClay> except for the threading part lol
11:28:05FromDiscord<PsychoClay> well it should be better now
11:28:21FromDiscord<cabboose> I haven't had so much trouble with threading, but I could see how it could get chaotic trying to refactor all this into a multithreaded model
11:28:43FromDiscord<cabboose> Have you tried turning it off and on again? 🤣
11:29:01FromDiscord<PsychoClay> bruh
11:29:34FromDiscord<Rika> I’m gonna assume your model is messy
11:29:45FromDiscord<cabboose> \:')
11:29:48FromDiscord<Rika> In which case it might be easier to refactor the whole thing before threading
11:30:06FromDiscord<cabboose> That would be a painful experience
11:30:09FromDiscord<PsychoClay> its not messy i think?
11:30:38FromDiscord<Rika> Less painful than fixing the current I would assume, can
11:30:39FromDiscord<cabboose> \:')
11:30:42FromDiscord<Rika> Cab
11:30:56FromDiscord<Rika> I don’t know for sure, I can’t look at the code on my mobile
11:31:06FromDiscord<Rika> I mean I can but I will cry
11:31:08FromDiscord<cabboose> Definitely easier to just refactor it all
11:31:12FromDiscord<cabboose> but
11:31:13FromDiscord<PsychoClay> what part is messy?
11:31:17FromDiscord<cabboose> it looks painful
11:31:18*leth joined #nim
11:32:00FromDiscord<cabboose> well; I would suggest strongly against mixing camelCase and\_this\_stuff
11:32:16FromDiscord<PsychoClay> right
11:32:49FromDiscord<PsychoClay> its becuase autocomplete gives camelcase
11:32:54FromDiscord<cabboose> but it's whether it makes sense to you or not; the issue is making it all multithreaded friendly while tracking errors might be a pain in the ass
11:33:06FromDiscord<cabboose> it's no issue, just difficult for someone outside to come into it \:)
11:35:03FromDiscord<cabboose> I still think its a cool project and I'm all for it
11:35:04FromDiscord<cabboose> I am maybe too used to a certain style
11:35:11FromDiscord<Rika> Jesus this is messy code
11:35:40FromDiscord<PsychoClay> guys its not that bad :copege:
11:36:10FromDiscord<cabboose> 🤣 Rika be nice hahahaha
11:37:06FromDiscord<Rika> Well there’s no separation of logic I think
11:37:39FromDiscord<PsychoClay> you mean too much in 1 func?
11:37:57FromDiscord<Rika> Yeah
11:38:08FromDiscord<Rika> Handling too many different things in one proc
11:38:21FromDiscord<cabboose> 🍝
11:38:54FromDiscord<Rika> Also why pass a pointer? You’re not required to
11:39:15FromDiscord<Rika> What do these names mean? Too short to be descriptive
11:42:23FromDiscord<PsychoClay> sent a code paste, see https://play.nim-lang.org/#ix=3yPN
11:42:55FromDiscord<cabboose> image.png https://media.discordapp.net/attachments/371759389889003532/887302387738497024/image.png
11:43:21FromDiscord<PsychoClay> sent a code paste, see https://play.nim-lang.org/#ix=3yPO
11:43:21FromDiscord<PsychoClay> should be fine right?
11:43:52FromDiscord<Rika> Kinda
11:43:54FromDiscord<cabboose> what
11:43:55FromDiscord<cabboose> nein
11:44:02FromDiscord<Rika> Wait
11:44:09FromDiscord<Rika> Why the fuck do you need to set length all the time
11:44:12FromDiscord<PsychoClay> ehhhh
11:44:26FromDiscord<PsychoClay> because var in llop make thread go dissapear
11:44:27FromDiscord<Rika> Just do it once to the thread count
11:44:33FromDiscord<cabboose> hahahahahaha someone hold him down
11:44:35FromDiscord<PsychoClay> oh right
11:44:37FromDiscord<Rika> What
11:44:48FromDiscord<Rika> Did you get enough sleep today
11:44:58FromDiscord<Rika> Did you forget your morning coffee
11:45:02FromDiscord<cabboose> ITS FINE
11:45:03FromDiscord<cabboose> okay
11:45:03FromDiscord<Rika> Are you eating properly
11:45:07FromDiscord<PsychoClay> im vibreaigng
11:45:08FromDiscord<cabboose> also
11:45:09FromDiscord<cabboose> don't do that
11:45:21FromDiscord<cabboose> Tdata(udata\: udata) will sink the udata
11:45:21FromDiscord<cabboose> make a Tdata()
11:45:35FromDiscord<cabboose> and then assign udata to the udata field
11:45:37FromDiscord<cabboose> that's safer
11:45:40FromDiscord<cabboose> AFAIK
11:45:43FromDiscord<PsychoClay> whats the difference
11:45:48FromDiscord<Rika> semantics
11:45:52*pro joined #nim
11:45:58FromDiscord<cabboose> if you sink it; it makes your program sad
11:46:00FromDiscord<Rika> Can’t you force a copy without doing that though
11:46:12FromDiscord<Rika> Prolly with .copy or so
11:46:55FromDiscord<PsychoClay> sent a code paste, see https://play.nim-lang.org/#ix=3yPQ
11:47:02FromDiscord<PsychoClay> good?
11:47:15FromDiscord<cabboose> I reckon
11:47:51FromDiscord<Rika> Might still sink
11:48:04FromDiscord<Rika> Is there no explicit copy
11:48:07FromDiscord<Rika> Like I’ve said
11:48:28FromDiscord<PsychoClay> but its a ref?
11:48:50FromDiscord<PsychoClay> it seems to work
11:49:03FromDiscord<Rika> Well why would constructor syntax sink then
11:49:29FromDiscord<cabboose> I remember seeing it somewhere
11:49:30FromDiscord<cabboose> I can't remember
11:49:45FromDiscord<cabboose> but pretty sure constructor syntax is automatically sunk
11:50:01FromDiscord<cabboose> otherwise the compiler will determine if it's safe to do so?
11:50:09FromDiscord<cabboose> I'm sure I remember seeing it somewhere
11:50:18FromDiscord<cabboose> I've definitely run into the problem before
11:50:38FromDiscord<PsychoClay> sent a code paste, see https://play.nim-lang.org/#ix=3yPR
11:50:55FromDiscord<cabboose> oh dear
11:51:01FromDiscord<cabboose> cyclic structures
11:51:06FromDiscord<PsychoClay> (edit) "https://play.nim-lang.org/#ix=3yPR" => "https://play.nim-lang.org/#ix=3yPS"
11:51:24FromDiscord<cabboose> wait
11:51:48FromDiscord<rb3.nim> Hey guys, is there some trick to figure out if a variable is a `let` or `var` in variable declaration macro pragmas? I saw this RFC https://github.com/nim-lang/RFCs/issues/220, but I was hoping there was an existing solution
11:52:24FromDiscord<cabboose> Does that occur when you try to access the field in your thread psychoclay?
11:52:45FromDiscord<cabboose> Also; why are you creating a new Tdata for every thread
11:52:47FromDiscord<cabboose> you only need 1
11:52:53FromDiscord<PsychoClay> oh right
11:52:57FromDiscord<xflywind> it seems like a known issue
11:52:59*pro quit (Quit: WeeChat 3.2)
11:52:59FromDiscord<xflywind> https://github.com/nim-lang/Nim/issues/14901
11:53:27FromDiscord<cabboose> But would the same behaviour occur with manual thread creation?
11:53:30FromDiscord<cabboose> fak
11:54:37FromDiscord<PsychoClay> hm it doesnt error anymore
11:54:51FromDiscord<cabboose> `nim`
11:55:10*Vladar quit (Quit: Leaving)
11:55:48FromDiscord<cabboose> There was a pragma for stopping ORC from collecting your cycles wasn't there?
11:55:50FromDiscord<cabboose> or was it the opposite
11:55:56FromDiscord<cabboose> I think it was the opposite
11:56:15FromDiscord<Rika> In reply to @rb3.nim "Hey guys, is there": I recall someone asking about the same thing
11:56:22*rockcavera joined #nim
11:56:22*rockcavera quit (Changing host)
11:56:22*rockcavera joined #nim
11:56:49FromDiscord<cabboose> Too much effort; goodluck psychoclay friend 🤣
11:57:01FromDiscord<PsychoClay> thanks :))
11:58:28FromDiscord<Rika> I’d like to help but I ain’t at my PC so lol
11:59:10FromDiscord<Goel> sent a code paste, see https://play.nim-lang.org/#ix=3yPT
12:00:00FromDiscord<Rika> @PsychoClay by the way in the async portion of your code instead of awaiting everything one by one in the sequence you can just “await all ts”
12:00:10FromDiscord<PsychoClay> oh nice
12:00:29FromDiscord<Goel> (edit) "https://play.nim-lang.org/#ix=3yPT" => "https://play.nim-lang.org/#ix=3yPU"
12:00:34FromDiscord<cabboose> Oh yeah if you await everything one by one youre in for a bad time
12:00:41FromDiscord<Rika> Not really
12:00:51FromDiscord<Rika> It wouldn’t be much slower I don’t think
12:01:12FromDiscord<Rika> Actually I don’t think it would be slower at all
12:01:22lethGoel: you could also check for gap.len - 1.
12:01:32FromDiscord<Rika> Smh use high please
12:01:46FromDiscord<cabboose> wait is it in the same async pragma proc?
12:01:58FromDiscord<cabboose> because then it would have to await the first result before itll fetch the next no?
12:02:08FromDiscord<Rika> No
12:02:11FromDiscord<Rika> That’s not how that works
12:02:26FromDiscord<cabboose> D\:
12:02:38FromDiscord<Rika> When you call the proc that’s when each thing runs until the first await part of such called proc, then it’s waiting for data
12:02:56FromDiscord<cabboose> Ye
12:03:11lethGoel: either start at 1 and do - 1 on operations, or start at 0 and do -1 when checking when to stop.
12:03:14FromDiscord<Rika> When you await the first future you wait for it to finish (but every proc is fetching data I believe)
12:03:19FromDiscord<Goel> @leth but my problem is not with out of bound for the last, but for the first pass
12:03:38FromDiscord<cabboose> I think I misunderstood what you were referencing then, I thought he was awaiting independent things within a single async proc
12:03:51FromDiscord<Rika> https://github.com/PsychoClay/aberrant/blob/master/src/scrapers/mcrawl.nim#L159
12:03:53FromDiscord<Rika> I mean this line
12:04:16FromDiscord<cabboose> Ohhhh
12:05:32FromDiscord<cabboose> Yeah I getchya
12:06:01*supakeen quit (Quit: WeeChat 3.2.1)
12:06:30*supakeen joined #nim
12:06:37*max22- quit (Ping timeout: 252 seconds)
12:07:14FromDiscord<cabboose> I can hear my neighbour diarrhoeaing in the toilet
12:07:24FromDiscord<cabboose> send help
12:07:39FromDiscord<Rika> That’s TMI
12:08:34FromDiscord<cabboose> I don’t think he has an issue with throughput at least
12:08:38FromDiscord<cabboose> no awaiting there
12:08:51lethGoel: 0 - 1 is expected to be out of bound because it's -1.
12:10:11FromDiscord<Goel> I found a way, even if not optimal, just added a different indexer for the `texture`, not the same of the `gap`
12:10:26FromDiscord<Goel> (edit) removed "the"
12:17:28PMunchHmm, damn it
12:17:38PMunchI think my C wrapping is breaking the Nim compiler..
12:17:49PMunchIt outputs the output of the macro, and then it just sets there
12:18:12PMunchOne core pegged
12:18:22PMunchBut doesn't seem to ever progress..
12:19:09PMunchI guess having a bunch of "when declared" and types pointing to other types just somehow breaks things..
12:45:51PMunchIf someone wants to try and help figure out what is wrong: http://ix.io/3yQ2
12:45:56PMunchWarning, it's a massive file..
12:46:14PMunchWell, not that massive, only 2.5K lines
12:46:25PMunchBut compiling it causes the compiler to just freeze up
12:46:39PMunchI'm guessing it might be a circular type definition there or something
12:59:58PMunchHmm, removed all of the when stuff and weird alias names from the generation but it still won't build
13:00:11PMunchhttp://ix.io/3yQ5 <- new file, only 1.2k lines
13:00:51PMunchTBH no idea why this one fails..
13:02:45PMunchFails on devel as well..
13:05:43lethHaving some troubles with understanding scope in nested templates.
13:06:09lethhow would I make something like this work for instance? https://play.nim-lang.org/#ix=3yQ7
13:11:08PMunchhttps://play.nim-lang.org/#ix=3yQ9
13:11:15PMunchSomething like that works leth ^
13:14:37PMunchOkay, built a debug compiler build and got this: http://ix.io/3yQc
13:15:02PMunchNow to figure out where that recursion is..
13:22:15lethPMunch: Thanks, I see i made some mistakes in my example. I wanted to do something like this rather https://play.nim-lang.org/#ix=3yQd
13:22:56*max22- joined #nim
13:26:00lethBut if i understand correctly the template content: string you added works in a way to make it work on that defined variable in the nested templates, on some sort of implied definition that is done in the templates? I'm not sure I understand how it works.
13:35:20PMunchThat `template content: string = message.content` simply rewrites every instance of `content` in your `body` to a `message.content`
13:36:26lethOh, thank you, good explanation, and handy syntax.
13:47:54*Gustavo6046 quit (Quit: ZNC 1.8.2 - https://znc.in)
13:48:12*Gustavo6046 joined #nim
13:52:23*Vladar joined #nim
14:04:19lethI also need to add the string in the template and then apply that to the object, would that be possible?
14:08:10arfyJust refreshing my syntax. this is a function that's going to take a variable number of directory paths, and return a single list of files. is this correct?
14:08:12arfyproc getFileList(files: vararg[string]): seq[string] =
14:24:08PMunchHoly shit, it actually builds!
14:25:07PMunchNot to hype this up too much, but I've got libclang wrapping a massive C project by only telling it what I want to include, where it can find the C sources, and a couple type rewrites just because I want it more type safe
14:25:18PMunchHopefully I can release this soon! :D
14:25:19*PMunch quit (Quit: Leaving)
15:47:18arkanoidPMunch: whaat?
15:47:41arkanoidwait a moment, are you and haxscramper working on same tool?
15:51:50FromDiscord<haxscramper> No, pmunch is working on the C conversion tool
15:52:27arkanoidbut he said wrapping, not converting
15:52:27FromDiscord<haxscramper> So he avoided this abyss of fuck-you language design choices and edge cases that libclang dumps on you
15:52:40FromDiscord<haxscramper> Well, wrapping
15:53:19FromDiscord<gerwy> Hi, is there any good Javascript FFI tutorial for Nim? i have one library i want to use but im not sure how i should translate the code for it↵also idk if i need to locally have those .js files for library or i can have it installed via npm i have both to be sure
15:53:20FromDiscord<haxscramper> But anyway, c2nim v2 using libclang
15:54:45arkanoidAnd aren't you doing same but with C++ and preprocessing included?
15:56:11arkanoidgerwy, I've learn how to do that myself in an afternoon. Is quite easy, just follow https://github.com/nim-lang/Nim/wiki/Nim-for-TypeScript-Programmers#javascript-interoperability and jsffi module docs/tests/examples
15:57:15FromDiscord<haxscramper> Technically yes↵(<@709044657232936960_arkanoid=5b=49=52=43=5d>)
15:57:51FromDiscord<haxscramper> Practically "with c++ and preprocessor included" makes it not "the same"
15:57:56FromDiscord<gerwy> In reply to @arkanoid "And aren't you doing": i mean kinda, but there is some async going on in the example code for the lib↵i could use nim's async module do i?
15:58:14FromDiscord<gerwy> In reply to @arkanoid "<@347345994217816066>, I've learn how": ooooh i forgot about this thank youuu
15:58:17FromDiscord<haxscramper> Well, maybe pmunch just was smart enough to avoid all walls, while I repeatedly managed to hit them for a year
15:58:51FromDiscord<haxscramper> But I'm pretty sure his tool would be more usable than what I have right now
15:59:21arkanoidhaxscramper, sure, I was not trying to underestimate. I know how C++ is massively more complex and generally bad than C, that's why I tend to avoid it
16:00:32arkanoidgerwy: https://nim-lang.org/docs/asyncjs.html
16:00:38arkanoidnever used it myself
16:02:43*Gustavo6046 quit (Quit: ZNC 1.8.2 - https://znc.in)
16:03:14*stkrdknmibalz joined #nim
16:06:51FromDiscord<gerwy> In reply to @arkanoid "<@347345994217816066>: https://nim-lang.org/docs/as": :😳
16:06:53FromDiscord<gerwy> (edit) ":😳" => "😳"
16:09:06*Gustavo6046 joined #nim
16:17:54*rockcavera quit (Read error: Connection reset by peer)
16:18:19*rockcavera joined #nim
16:18:19*rockcavera quit (Changing host)
16:18:19*rockcavera joined #nim
16:19:16FromDiscord<gerwy> ugh i think i need some examples on how its done, i will look more into it later
16:25:21FromDiscord<fwsgonzo> what is the sanest way to check if a string is a number vs a hex string?
16:25:42FromDiscord<fwsgonzo> (edit) "a" => "an integral" | "string?" => "string vs a floating-point constant?"
16:26:10FromDiscord<cabboose> check if it's all numerical characters?
16:29:54FromDiscord<cabboose> https://nim-lang.org/docs/strutils.html#allCharsInSet%2Cstring%2Cset%5Bchar%5D
16:30:19FromDiscord<cabboose> I guess use that against `Digits`
16:30:45FromDiscord<cabboose> if you get `false` then it's not an int
16:30:54FromDiscord<dain> im trying to get my head around writing macros
16:31:04FromDiscord<dain> this is so much fun :)
16:31:06FromDiscord<cabboose> can then test it against `HexDigits`?
16:31:50FromDiscord<fwsgonzo> yeah, but I think to make it easier for myself I will just enforce 0x, 0b and all digits = integral
16:32:23FromDiscord<fwsgonzo> that leaves floating points but I will handle that later
16:32:30FromDiscord<cabboose> so you specifically want to know if its a hex/integer vs a float?
16:33:46FromDiscord<fwsgonzo> yes I'm actually parsing assembly instructions
16:34:17FromDiscord<cabboose> well the fastest thing then might just be an iteration over the characters. return a val of 0 while the characters are integers, and then return a val of 1 if you hit a hex, and a 2 if you hit a period?
16:34:28FromDiscord<cabboose> oh shiet
16:34:34FromDiscord<cabboose> byelolnope
16:37:06FromDiscord<fwsgonzo> I think the only sane way is to enforce 0x and 0b to avoid confusion
16:48:56FromDiscord<gerwy> actually it might be my lib that doesn't work not nim hmm
16:49:27FromDiscord<fwsgonzo> sent a code paste, see https://play.nim-lang.org/#ix=3yRv
16:49:35FromDiscord<fwsgonzo> (edit)
16:49:40FromDiscord<Rika> you cannot have sets of strings
16:49:43FromDiscord<Rika> use hashset
16:49:50FromDiscord<cabboose> You cant do dat
16:50:11FromDiscord<Rika> cabby my man you're a bit too late ain't ya :PP
16:50:18FromDiscord<Rika> i kid
16:50:24FromDiscord<cabboose> it's getting too late for me
16:50:26FromDiscord<cabboose> leave me behind
16:50:32FromDiscord<cabboose> let me die
16:50:37FromDiscord<Rika> you cant
16:50:42FromDiscord<Rika> you still have responsibilities
16:50:49FromDiscord<cabboose> hahahahahahahahahahaha
16:50:52FromDiscord<cabboose> hahahahahahahhahahahahhahahahahhaa
16:50:56FromDiscord<cabboose> dead
16:50:58FromDiscord<Rika> oh no
16:51:15FromDiscord<Rika> this will really impact your relationships with your employer...
16:51:16FromDiscord<Rika> x d
16:51:20*neurocyte quit (Quit: The Lounge - https://thelounge.chat)
16:51:39FromDiscord<cabboose> you heartless bastard hahahaha
16:51:57FromDiscord<cabboose> I won't die so long as I can still pester you and beef
16:52:02FromDiscord<Rika> poggers
16:52:05FromDiscord<Rika> one more in the group
16:52:13FromDiscord<Rika> pestering triad
16:52:28FromDiscord<fwsgonzo> sent a code paste, see https://play.nim-lang.org/#ix=3yRw
16:52:35FromDiscord<fwsgonzo> (edit) "https://play.nim-lang.org/#ix=3yRw" => "https://play.nim-lang.org/#ix=3yRx"
16:52:40FromDiscord<Rika> the generic is not needed
16:52:42FromDiscord<cabboose> aiyaaaaa
16:52:43FromDiscord<Rika> that isnt a type
16:52:46FromDiscord<Rika> here is the correct:
16:52:55FromDiscord<Rika> `let opcodes = toHashSet([""])`
16:53:10FromDiscord<Rika> but you can make it empty, empty string != no string
16:53:17FromDiscord<Rika> if it were empty, you'd use the generic
16:53:28FromDiscord<Rika> `let opcodes = toHashSet[string]([])` i think will work
16:53:29FromDiscord<cabboose> or just do a nice `let opcodes = initHashSet[string]()` if you want to use the generic
16:53:34FromDiscord<Rika> oh yeah
16:53:35FromDiscord<Rika> init
16:53:42FromDiscord<Rika> it's 2 am and i wake up early forgive me
16:53:43FromDiscord<cabboose> you need tea
16:53:48*Vladar quit (Quit: Leaving)
16:53:49FromDiscord<cabboose> hahahahahaha
16:55:17FromDiscord<fwsgonzo> thanks
16:58:00*neurocyte joined #nim
16:58:00*neurocyte quit (Changing host)
16:58:00*neurocyte joined #nim
17:15:43*arfy8820 joined #nim
17:18:04arfy8820ok... help? I'm trying to call a function that requires a pointer. I have this, but can't remember how to create a pointer in the function call.
17:18:06arfy8820var info: BASS_DEVICEINFO
17:18:06arfy8820discard BASS_GetDeviceInfo(1, info)
17:22:37FromDiscord<Rika> pointers can be retrieved from variables by `addr`
17:22:53arfy8820aha. thanks.
17:23:03*arfy8820 quit (Quit: Reality intrudes...)
17:23:20FromDiscord<Rika> letiables will need `unsafeAddr` for reference
17:23:28FromDiscord<Rika> ~~sorry not sorry for the bad joke~~
17:47:36FromDiscord<dain> is it possible to attach an else clause to a macro
17:48:19FromDiscord<dain> sent a code paste, see https://play.nim-lang.org/#ix=3yRP
17:48:34FromDiscord<haxscramper> it should be possible
17:49:39FromDiscord<dain> but isn't the else syntactically outside of the macro so it wouldn't get passed in?
17:50:00FromDiscord<haxscramper> sent a code paste, see https://play.nim-lang.org/#ix=3yRQ
17:50:26FromDiscord<haxscramper> `else/elif/of/finally/except/do` are passed in the same block↵(@dain)
17:50:35FromDiscord<dain> oooh cool
17:50:42FromDiscord<dain> that's good
17:50:43FromDiscord<haxscramper> https://github.com/nim-lang/RFCs/issues/420#issuecomment-917476330
18:01:29FromDiscord<tandy> i wish the compiler would tell me where im using native sockets
18:01:44FromDiscord<tandy> instead of just warning me \>\:o
18:03:17FromDiscord<exelotl> ohhh wow else block actually landed?
18:03:30FromDiscord<exelotl> that's super cool I always wanted that to be a thing
18:05:30FromDiscord<exelotl> actually maybe it didn't, I can't tell from the convo 😅
18:06:52*Gustavo6046 quit (Remote host closed the connection)
18:07:24*Gustavo6046 joined #nim
18:18:55FromDiscord<haxscramper> In reply to @exelotl "ohhh wow else block": They have been available for the last five years at least
18:19:13FromDiscord<tandy> is there any serialisation library that supports the JS backend?
18:19:28FromDiscord<haxscramper> serialization to what? jsony would probably work
18:20:45FromDiscord<haxscramper> sent a code paste, see https://play.nim-lang.org/#ix=3yRW
18:21:16FromDiscord<haxscramper> seems to be fixed now
18:21:18FromDiscord<haxscramper> sent a code paste, see https://play.nim-lang.org/#ix=3yRZ
18:37:27FromDiscord<tandy> string, jsony had some sort of parsehook error for my enum↵(@haxscramper)
18:38:25FromDiscord<tandy> \`jsony/objvar.nim(53, 16) Error\: the field 'service' is not accessible.\`
18:43:43NimEventerNew Nimble package! nimcrypt - Implementation of Unix crypt with support for Crypt-MD5, Crypt-SHA256 and Crypt-SHA512, see https://github.com/napalu/nimcrypt
18:43:46nrds<R2D299> itHub: 7"Nim implementation of Unix crypt"
18:45:13FromDiscord<ynfle (ynfle)> Is there anyway to skip a certain routine for stack traces?
18:46:10FromDiscord<ynfle (ynfle)> Meaning that if a calls b and b calls c, the if there is an error in be, it will only report a and b
18:47:19FromDiscord<haxscramper> `getStackTraceEntries` and write your own pretty-printer
18:49:03FromDiscord<ynfle (ynfle)> Wrap everything in a try catch block and call it?
18:49:47FromDiscord<exelotl> In reply to @haxscramper "They have been available": wtf
18:49:54FromDiscord<exelotl> I could've sworn I tried this before
18:50:08FromDiscord<exelotl> or maybe I just assumed it wouldn't work since it's not documented anywhere?
18:50:15FromDiscord<haxscramper> yes
18:50:34FromDiscord<haxscramper> there is no built-in hook for exception message printouts
18:50:47FromDiscord<ynfle (ynfle)> That wouldn't work for compile-time crashes though
18:51:05FromDiscord<haxscramper> well, compiler-time crashes are not exceptions
18:51:18FromDiscord<ynfle (ynfle)> Not a hook per se, but even using lineinfo from macros
18:51:27FromDiscord<haxscramper> they are just bugs in compiler
18:52:22FromDiscord<haxscramper> What are you trying to do? Get better stacktraces when compiler crahes?
18:52:33FromDiscord<haxscramper> Or when `.error.` is called
18:52:47FromDiscord<haxscramper> Or when your own exception is raised?
18:54:58FromDiscord<ynfle (ynfle)> Not compiler crashes but when there are compilation issues
18:55:27FromDiscord<ynfle (ynfle)> I want to pretend that a template isn't there
18:55:40FromDiscord<haxscramper> not possible
18:55:59FromDiscord<haxscramper> right now you can just wrap everything in `compiles()`
18:56:23FromDiscord<haxscramper> nkError would supposedly might allow this
18:56:33FromDiscord<haxscramper> But generally speaking invalid code means invalid code
18:57:52FromDiscord<ynfle (ynfle)> Can this not be acheived with manipulating lineinfo for the nodes
18:58:50FromDiscord<ynfle (ynfle)> ?
19:01:13FromDiscord<haxscramper> Can you describe what you want to do?
19:01:32FromDiscord<haxscramper> You jumped from stacktraces to compilation errors and then to node lineinfo
19:01:39FromDiscord<haxscramper> Being a bit more concrete will help
19:01:42FromDiscord<ynfle (ynfle)> Hah lol
19:02:02FromDiscord<dain> i like this stuff
19:02:05FromDiscord<dain> sent a code paste, see https://play.nim-lang.org/#ix=3ySe
19:02:19FromDiscord<Rika> congrats looks nice
19:02:42FromDiscord<ynfle (ynfle)> I want to pretend that calling an intemediate template or macro didn't happen
19:03:28FromDiscord<haxscramper> So you want to reduce number of "template instantiation of" in errors?
19:04:29FromDiscord<ynfle (ynfle)> Yup
19:05:23FromDiscord<haxscramper> not possible, or at least highly unlikely this can be done in a sane manner
19:05:37FromDiscord<haxscramper> Template/macro instantiation context is tracked by compiler
19:05:57FromDiscord<haxscramper> Not exposed to user code in any way
19:10:48*ozzz quit (Quit: Bye)
19:11:04*ozzz joined #nim
19:16:23FromDiscord<ynfle (ynfle)> Hmmm
19:16:54FromDiscord<Goel> How can i use `echo` to print an adress/pointer of a field of an object?
19:17:10FromDiscord<ynfle (ynfle)> I have user code. I'm running it in a subprocess and modifying it. That's why I want to change the stacktraces
19:17:23FromDiscord<ynfle (ynfle)> `echo someVar.addr`
19:17:26FromDiscord<haxscramper> `echo addr object.field`?↵(@Goel)
19:17:35FromDiscord<haxscramper> Or you mean `field: ptr T` being printed as `...`
19:17:39FromDiscord<Goel> That's what i tried but doesn't work
19:17:39FromDiscord<haxscramper> Overload `$` for your pointer
19:19:06FromDiscord<Goel> sent a code paste, see https://play.nim-lang.org/#ix=3ySm
19:19:17FromDiscord<Rika> .data is already a pointer?
19:19:19FromDiscord<haxscramper> `cast[int](addr text.data)`
19:19:37FromDiscord<Goel> yes
19:19:40FromDiscord<haxscramper> Or better do `repr` on the thing
19:19:53FromDiscord<Goel> But only data is a pointer the other fields are not
19:19:56FromDiscord<ynfle (ynfle)> Try type conversion to int
19:21:14FromDiscord<dain> hmm im trying to do a more sophisticated version of the above "assuming" thing, that can handle `assuming expr() as name: ...` . im trying to use the fusion/matching and im getting a weird error just trying to define it
19:21:28FromDiscord<dain> sent a code paste, see https://paste.rs/zzw
19:21:45FromDiscord<Goel> In reply to @haxscramper "Or better do `repr`": Thanks
19:21:56FromDiscord<dain> sent a code paste, see https://play.nim-lang.org/#ix=3ySo
19:22:09FromDiscord<dain> but when I delete the `is Ident()` part at the end, the error goes away. why is that?
19:23:27FromDiscord<dain> it works inside the square brackets
19:23:58FromDiscord<haxscramper> Wrap `@name is Ident()` in pars
19:24:15FromDiscord<haxscramper> I'm not sure but `|` might bind closer
19:24:28FromDiscord<dain> ah thanks, that works
19:24:44FromDiscord<haxscramper> The error message is shit though
19:24:50FromDiscord<dain> that's strange, though, in the tutorial I was following you don't need parentheses
19:24:59FromDiscord<haxscramper> You can report it on fusion issue, I will look into it
19:25:23FromDiscord<dain> sent a code paste, see https://play.nim-lang.org/#ix=3ySp
19:26:59*ozzz quit (Quit: Bye)
19:27:05FromDiscord<haxscramper> Can you show how you use this `assuming_v2` macro?
19:27:45*ozzz joined #nim
19:28:05FromDiscord<haxscramper> sent a code paste, see https://play.nim-lang.org/#ix=
19:28:06FromDiscord<dain> i havent written it yet
19:28:09FromDiscord<haxscramper> sent a code paste, see https://play.nim-lang.org/#ix=3ySq
19:28:15FromDiscord<dain> im just trying to figure out how macros and stuff work
19:30:21FromDiscord<dain> sent a code paste, see https://play.nim-lang.org/#ix=3ySr
19:30:33FromDiscord<dain> where the expression / foo are option types
19:30:58FromDiscord<dain> it just unwraps the option if is_some() and rebinds it if appropriate, and if it's none it's a no-op
19:31:14FromDiscord<dain> i wouldn't actually use this, i just came up with it as an exercise to learn macros
19:31:50FromDiscord<dain> (edit) "https://play.nim-lang.org/#ix=3ySr" => "https://play.nim-lang.org/#ix=3ySs"
19:35:16FromDiscord<dain> sent a code paste, see https://play.nim-lang.org/#ix=3ySu
19:35:59NimEventerNew thread by Kiloneie: Nim for Beginners #26 Reference Objects, see https://forum.nim-lang.org/t/8426
19:36:11*Gustavo6046_ joined #nim
19:36:25*Gustavo6046 quit (Ping timeout: 252 seconds)
19:36:38FromDiscord<Kiloneie> https://youtu.be/kkSAVKKIoVc↵↵Double plug.
19:36:40nrds<R2D299> outube: 7"Nim for Beginners #26 Reference Objects FINISHED VIDEO"
19:36:56FromDiscord<Kiloneie> Wait what
19:37:21FromDiscord<Kiloneie> (fixed that typo in the title ups)
19:38:38*Gustavo6046_ is now known as Gustavo6046
19:43:14NimEventerNew post on r/nim by Kiloneie: Nim for Beginners #26 Reference Objects, see https://reddit.com/r/nim/comments/po9zlz/nim_for_beginners_26_reference_objects/
19:44:52*tdc quit (Ping timeout: 265 seconds)
19:45:15FromDiscord<Kiloneie> Man these bots.
19:50:50*ozzz quit (Read error: Connection reset by peer)
19:55:03*ozzz joined #nim
20:12:00FromDiscord<dain> okay I figured it out
20:12:02NimEventerNew thread by Trisub: Setting object value by providing key as string?, see https://forum.nim-lang.org/t/8427
20:12:19FromDiscord<dain> sent a code paste, see https://play.nim-lang.org/#ix=3ySL
20:44:50FromDiscord<Yardanico> sent a code paste, see https://play.nim-lang.org/#ix=3yTp
20:45:14FromDiscord<Yardanico> it doesn't depend on options and instead implements its own types though
21:08:50*max22- quit (Quit: Leaving)
21:36:49*Gustavo6046 quit (Read error: Connection reset by peer)
21:36:51*Gustavo6046_ joined #nim
21:39:28*Gustavo6046_ is now known as Gustavo6046
21:41:28*leth quit (Quit: no reason)
21:49:02FromDiscord<Recruit_main707> so i turned on my pc today and `nimble.exe` doesnt work, i tried uninstalling nim and installing it again but its broken even from a fresh install
21:55:47*Gustavo6046 quit (Quit: ZNC 1.8.2 - https://znc.in)
21:56:06*Gustavo6046 joined #nim
22:06:47FromDiscord<Recruit_main707> building from source now to see if it works
22:50:07FromDiscord<Recruit_main707> now it runs but if i try to install anything i get:↵`Could not download: No SSL/TLS CA certificates found.`↵after it tries to download `packages.json` if someone could help me id appreciate it
23:08:50FromDiscord<leorize> download the official nim binaries and copy the .pem from the bin folder
23:11:37FromDiscord<leorize> https://curl.se/docs/caextract.html \<- you can download this one and put it next to nimble.exe too
23:39:46FromDiscord<Yardanico> LOL, was setting up my local ircord debugging configuration, and changed the IRC network from irc.freenode.net to irc.libera.net (not .chat but .net)
23:39:59FromDiscord<Yardanico> and apparently freenode OWNS this domain and redirects it to freenode!
23:40:28FromDiscord<Yardanico> and I was confused as to why I was getting "freenode" in the IRC responses while trying to connect to libera chat
23:40:36FromDiscord<Yardanico> https://news.ycombinator.com/item?id=27797806
23:44:08FromDiscord<exelotl> holy crap lol
23:44:40*Gustavo6046 quit (Ping timeout: 240 seconds)
23:45:34*Gustavo6046 joined #nim
23:45:36FromDiscord<Yardanico> @exelotl and about ircord - the current codebase is pretty messy, especially the edit handling and pasting :)
23:48:04FromDiscord<exelotl> haha, I was having a real hard time getting my head around it, then I realised the line causing the problem was completely unused xD
23:48:21FromDiscord<exelotl> so at least it was an easy fix after all
23:49:02FromDiscord<exelotl> I'm using ircord for the GBAdev community and it's working great
23:49:12FromDiscord<Yardanico> oh, nice!
23:50:19FromDiscord<exelotl> it's really good, thanks for all your hard work battle testing it already :)
23:50:29FromDiscord<Yardanico> although I'd say there are a lot of pretty good alternatives like (ofc) mattermost and t2bot
23:50:34FromDiscord<Yardanico> although afaik they don't do code paste handling
23:51:20FromDiscord<exelotl> oh yeah we were using matterbridge before, it sucked
23:51:45FromDiscord<exelotl> it doesn't handle edits either, just reposts the whole message
23:52:12FromDiscord<exelotl> which is _horrible_ for code pastes 😅
23:53:19FromDiscord<exelotl> and it doesn't change the nick to look like a different user is speaking either, just prefixes every message with `nick:`
23:53:35FromDiscord<exelotl> (edit) "and ... it" added "when posting to discord"
23:53:54*jkl quit (Quit: Gone.)
23:55:16*jkl joined #nim