<< 21-08-2020 >>

00:02:14*endragor quit (Ping timeout: 260 seconds)
00:09:03*hnOsmium0001 quit (Ping timeout: 260 seconds)
00:10:14*hnOsmium0001 joined #nim
00:13:31*krux02_ quit (Remote host closed the connection)
00:13:43*hnOsmium0001 quit (Max SendQ exceeded)
00:15:15*hnOsmium0001 joined #nim
00:59:28shashlickThat's going to be my next pr
00:59:36shashlickNim.cfg interop
01:00:13shashlickWas called as usecfg in the discussion
01:00:25shashlickWill need some more thoughts to refine it
01:01:19shashlickhttps://gist.github.com/genotrance/35504ed532f9cb836f11fd02b5bf1145
01:02:36shashlickProbably the previous revision
01:08:20shashlickIn local deps mode, nimble should only keep one version of a package
01:15:49disruptekmakes sense.
01:16:14*bunbunbunbunny joined #nim
01:27:49*JustASlacker quit (Ping timeout: 264 seconds)
01:47:26*endragor joined #nim
01:47:50*Jesin joined #nim
01:48:11*apahl quit (Ping timeout: 244 seconds)
01:50:11*apahl joined #nim
02:22:13*bunbunbunbunny quit (Quit: Lost terminal)
02:26:19FromGitter<jivank> On windows, does anyone know how to use startProcess from osproc but hide the console window it starts?
02:26:29FromGitter<jivank> Python does something like this https://stackoverflow.com/questions/7006238/how-do-i-hide-the-console-when-i-use-os-system-or-subprocess-call
02:29:10disrupteknimph without nimble is already 8x faster.
02:30:23*muffindrake quit (Ping timeout: 272 seconds)
02:31:52*muffindrake joined #nim
02:41:44silvernode[m]listening to a break down of LLVM and remembered seeing somewhere that Nim is going to use that as a compiler at some point. Does anyone have a status on this? LLVM is much cooler than I could have ever imagine.
02:42:00disruptek!repo nlvm
02:42:01disbothttps://github.com/arnetheduck/nlvm -- 9nlvm: 11LLVM-based compiler for the Nim language 15 297⭐ 21🍴 7& 1 more...
02:42:40silvernode[m]disruptek: is this production ready and able to be used today?
02:42:46silvernode[m]Any experience with it?
02:47:12*hello joined #nim
02:47:21disrupteknope.
02:58:13hellodid this thing https://nim.town hope some of ye find it useful for projcets
02:58:16hello*projects
02:58:38FromDiscord<Rika> interesting
02:58:53helloThanks
03:00:01*waleee-cl quit (Quit: Connection closed for inactivity)
03:00:41*hello quit (Remote host closed the connection)
03:11:54*thomasross quit (Ping timeout: 272 seconds)
03:12:54*rockcavera quit (Remote host closed the connection)
03:15:59FromDiscord<Elegant Beef> Super cool for enabling nimble docs to have websites 😄
03:20:47shashlickGithub works
03:21:32FromDiscord<Hearthstone> !repo nim
03:21:33disbothttps://github.com/nim-lang/Nim -- 9Nim: 11Nim is a compiled, garbage-collected systems programming language with a design that focuses on efficiency, expressiveness, and elegance (in that order of priority). 15 9838⭐ 1051🍴 7& 29 more...
03:21:39FromDiscord<Hearthstone> I'm smart ÙvÚ
03:21:55FromDiscord<Hearthstone> I'ma manually build Nim so it's bleeding edge
03:22:10FromDiscord<Hearthstone> Because the Termux binaries aren't exactly up-to-date all the time
03:22:25shashlickI use ghp-import with nimterop
03:26:05*vicfred quit (Quit: Leaving)
03:27:29leorize@jivank add poDaemon to the process option list
03:40:38*iwq quit (Ping timeout: 260 seconds)
03:42:21*iwq joined #nim
04:02:23*Tongir quit (Ping timeout: 265 seconds)
04:06:02*supakeen quit (Quit: WeeChat 2.8)
04:06:44*supakeen joined #nim
04:10:25*Jesin quit (Ping timeout: 264 seconds)
04:15:08*selk quit (Quit: )
04:26:13*dv^_^ quit (Ping timeout: 246 seconds)
04:28:25FromDiscord<iWonderAboutTuatara> Testing something
04:28:40FromDiscord<iWonderAboutTuatara> !repo godot
04:28:41disbothttps://github.com/pragmagic/godot-nim -- 9godot-nim: 11Nim bindings for Godot Engine 15 225⭐ 17🍴 7& 11 more...
04:28:50FromDiscord<iWonderAboutTuatara> Oh it's Nim specific
04:28:59FromDiscord<iWonderAboutTuatara> !repo gdnative
04:29:00disbothttps://github.com/enthus1ast/godotMulticast -- 9godotMulticast: 11(WIP) a gdnative find_game utilizing ip multicast 15 0⭐ 1🍴
04:29:12FromDiscord<iWonderAboutTuatara> Now I'm less sure
04:42:03*leorize quit (Ping timeout: 240 seconds)
05:07:01*arecacea1 quit (Remote host closed the connection)
05:07:23*arecacea1 joined #nim
05:22:11*hyiltiz quit (Ping timeout: 240 seconds)
05:47:17*snowolf quit (Remote host closed the connection)
05:47:34*snowolf joined #nim
05:50:35*solitudesf joined #nim
06:06:43*hyiltiz joined #nim
06:07:16*hyiltiz quit (Client Quit)
06:08:21*Jesin joined #nim
06:08:43*hyiltiz joined #nim
06:22:27*hyiltiz_ joined #nim
06:22:31*hyiltiz quit (Quit: hyiltiz)
06:27:06*hyiltiz_ quit (Ping timeout: 258 seconds)
06:35:26*hyiltiz joined #nim
06:35:26*hyiltiz quit (Changing host)
06:35:26*hyiltiz joined #nim
06:38:52*snowolf quit (*.net *.split)
06:38:53*dddddd quit (*.net *.split)
06:38:53*aenesidemus quit (*.net *.split)
06:38:53*junland quit (*.net *.split)
06:38:53*mal`` quit (*.net *.split)
06:38:54*ForumUpdaterBot quit (*.net *.split)
06:38:54*zama quit (*.net *.split)
06:38:54*hecanjog quit (*.net *.split)
06:38:54*voltist quit (*.net *.split)
06:38:55*nisstyre quit (*.net *.split)
06:39:45*hyiltiz quit (Ping timeout: 258 seconds)
06:40:41FromDiscord<iWonderAboutTuatara> How feasible is building a simple game engine in Nim?
06:40:54FromDiscord<iWonderAboutTuatara> I know you can set the GC to only act at specific times which is super nice
06:43:43*snowolf joined #nim
06:43:43*dddddd joined #nim
06:43:43*aenesidemus joined #nim
06:43:43*junland joined #nim
06:43:43*mal`` joined #nim
06:43:43*ForumUpdaterBot joined #nim
06:43:43*zama joined #nim
06:43:43*hecanjog joined #nim
06:43:43*voltist joined #nim
06:43:43*nisstyre joined #nim
06:45:46*snowolf is now known as Guest41431
06:50:06*hyiltiz joined #nim
06:50:06*hyiltiz quit (Changing host)
06:50:06*hyiltiz joined #nim
06:58:14*hyiltiz quit (Remote host closed the connection)
07:01:03*hyiltiz joined #nim
07:01:03*hyiltiz quit (Changing host)
07:01:03*hyiltiz joined #nim
07:03:17FromDiscord<Rika> a lot of people have done so already i think
07:04:26FromDiscord<Elegant Beef> I mean it's very feasible since you can use opengl/vulkan
07:04:53FromDiscord<Elegant Beef> And there are frameworks already such as nico and nimgame
07:11:22*JustASlacker joined #nim
07:13:24*awe002 joined #nim
07:48:33*Vladar joined #nim
07:50:23*iwq quit (*.net *.split)
07:54:03*PMunch joined #nim
07:57:38FromDiscord<Varriount> @iWonderAboutTuatara 2d or 3d?
08:00:08FromDiscord<iWonderAboutTuatara> 2d
08:00:14FromDiscord<iWonderAboutTuatara> Nothing remotely fancy
08:00:32FromDiscord<iWonderAboutTuatara> Also, how usable are cpp libs like sdl2 with Nim bindings?
08:00:37FromDiscord<iWonderAboutTuatara> Seems to not be a great experience
08:00:56FromDiscord<Elegant Beef> I mean
08:00:59FromDiscord<Elegant Beef> Nico uses them
08:01:15FromDiscord<Elegant Beef> Checkout nico and nimgame2
08:05:23FromDiscord<iWonderAboutTuatara> Oh I see
08:05:26FromDiscord<iWonderAboutTuatara> There's docs
08:05:29FromDiscord<iWonderAboutTuatara> I see
08:05:36FromDiscord<iWonderAboutTuatara> You're not supposed to use the official version it seems
08:10:47*opal joined #nim
08:18:00*Trustable joined #nim
08:18:45*Trustable quit (Remote host closed the connection)
08:18:49*Vladar quit (Remote host closed the connection)
08:22:14*iwq joined #nim
08:23:20FromDiscord<mratsim> sdl is super easy to use though
08:24:45FromDiscord<mratsim> I was super beginner in SDL when I wrote this, I basically copy-pasted the SDL2 intro: https://github.com/mratsim/chirp8/blob/master/src/chirp8.nim
08:26:38*hnOsmium0001 quit (Quit: Connection closed for inactivity)
08:27:53*krux02 joined #nim
08:38:41FromDiscord<iWonderAboutTuatara> That's definitely good to hear
08:38:59FromDiscord<iWonderAboutTuatara> Sfml doesn't seem to have a good binding though
08:45:08*fowl_ quit (Ping timeout: 265 seconds)
08:46:46FromDiscord<mratsim> https://media.discordapp.net/attachments/371759389889003532/746289176747442266/unknown.png
08:47:15FromDiscord<mratsim> seems straightforward to bind
08:47:18*fowl_ joined #nim
09:08:20FromDiscord<iWonderAboutTuatara> Oh, I had no idea it was simple to do that
09:11:09FromDiscord<fracasse> nice browser!
09:11:18FromDiscord<fracasse> i know it's completely offtopic but just wanted to point that out
09:15:46PMunchSeems like a reskinned Chrome
09:15:55PMunchBut yeah, looks good
09:17:41*endragor quit (Remote host closed the connection)
09:18:08*endragor joined #nim
09:22:40*endragor quit (Ping timeout: 258 seconds)
09:28:10FromDiscord<iWonderAboutTuatara> Agreed,
09:35:05zyklonalmost every browser __is__ a reskinned Chrome nowadays :D (or at least looks like one)
09:35:35FromDiscord<vieru> are there any text compression libraries for nim that don't use external dependencies ?
09:38:59*endragor joined #nim
09:42:13FromDiscord<Rika> so pure nim?
09:42:21FromDiscord<Rika> not that i know of, no
09:42:36FromDiscord<Rika> since modern compression algos are somewhat complex to implement
09:43:24FromDiscord<Yardanico> There is snappy implementation
09:43:43FromDiscord<Yardanico> It's general purpose compression, and should work for text too, but not the best probably
09:46:58FromDiscord<vieru> i dont really need a pure nim implementation, i just need a algo that i can use without having to drag around dlls
09:46:59FromDiscord<lqdev> doesn't treeform/snappy use the DLL though?
09:47:13FromDiscord<vieru> yeah that's what i was gonna say
09:47:31FromDiscord<vieru> nimsnappy uses libsnappy.dll
09:49:31*NimBot joined #nim
09:50:25FromDiscord<vieru> (zip/zlib)[https://github.com/nim-lang/zip] works just fine on windows using git bash↵but when i try to run it through cmd i get `could not find zlib1.dll`
09:50:53FromDiscord<vieru> (edit) '(zip/zlib)[https://github.com/nim-lang/zip]' => '[zip/zlib](https://github.com/nim-lang/zip)'
09:51:55ZevvPMunch: you as the avr guy: do you think it makes sense to maintain this nim/arduino golem I created earlier this year?
09:52:10Zevvi got issue reports, so it seems that people are actually trying to use it
09:53:51*arecacea1 quit (Remote host closed the connection)
09:55:45*arecacea1 joined #nim
09:56:30PMunchDepends on the work it requires to maintain it
09:57:11PMunchI'm all for the Nim community creating some easy path into using Nim on Arduino, but if that solution in particular requires more work than it's worth to maintain then I'm sure your time is better spent elsewhere
10:02:40FromDiscord<Rika> @vieru you can try zlibstatic, i think is the namr
10:02:51PMunchZevv ^
10:05:14FromDiscord<vieru> @Rika thanks, ill try it
10:06:55*abm joined #nim
10:18:04FromDiscord<vieru> after some tweaking it worked, thanks again rika
10:21:18*Vladar joined #nim
10:26:31Yardanicothere's a pure-nim snappy
10:26:37Yardanicohttps://github.com/status-im/nim-snappy
10:27:05ZevvPMunch: well, it just such a nasty hack, Im not sure if i really dare promote it as something usable
10:29:36PMunchWell what's the alternative?
10:31:11FromDiscord<kodkuce> can i asign a tuple with 2 ints directrly from array of 2 ints?
10:34:05FromDiscord<kodkuce> sent a code paste, see https://paste.rs/PaP
10:34:27Yardanicono, just assign both fields?
10:34:34FromDiscord<kodkuce> i guess i can do↵mytuple = (p1:myarray[0], p2:myarray[1] )
10:34:37Yardanicoit's just 2 fields, no big deal
10:34:41Yardanicoyou don't even have to specify field names
10:34:56Yardanicoand you're reassigning a tuple fully btw
10:35:01Yardaniconot modifying the individual fields
10:35:02FromDiscord<kodkuce> mytuple = (myarrya[0], myarray[1])
10:35:04Yardanicobut it doesn't matter in most cases
10:35:06Yardanicoyeah that'll work
10:35:56Zevvalternative is that i just make a note in the readme that the thing is a hack, and is not suitable for real use
10:36:18FromDiscord<kodkuce> ok ty
10:38:06PMunchZevv, that should definitely be there :P
10:38:25PMunchkodkuce, you could of course also write a macro for it..
10:41:06FromDiscord<kodkuce> i am long way from macros 🙂 and in realyti its no biggie atm i just needed at 1 place for 2 ints
10:41:39FromGitter<alehander92> macros are simple
10:41:47FromGitter<alehander92> but of course, if you can do without it's also ok
10:47:09PMunchhttps://play.nim-lang.org/#ix=2uNN
10:47:12PMunchSomething like that
10:47:18PMunchCouldn't quite get the converter to work though..
10:52:58Yardanicohttps://play.nim-lang.org/#ix=2uNQ this works
10:53:11Yardanicono variable length of course
10:53:30PMunchWell, where's the fun in that :P
10:55:17PMunchHmm, interesting how you can do only `var tuple` there
10:55:26PMunchErr `var name: tuple`
10:56:02Yardanicoyeah
10:56:12Yardanicobut it works :P
10:57:45PMunchWell, yeah..
10:58:22FromDiscord<lqdev> i feel like nim could do with a little nicer type inference
10:58:44FromDiscord<lqdev> like, inferring generic params based on the expected return type
10:58:50Yardanicooh, hindley milner type systems
10:59:11Yardaniconot sure how easyt it would be to change that :P
10:59:15FromDiscord<lqdev> no, not that.
10:59:17Yardanicobut rust has their own version of HM
10:59:33Yardanicoand they have return type generic type inference
10:59:49Yardanicoe.g. let data: u32 = str.parse() <- calls parse<u32>(str)
10:59:53Yardanicopseudo rust syntax
11:00:13FromDiscord<lqdev> just storing the expected return type of the expression, so if a proc is assigned to it, the proc can adjust its generic params accordingly
11:00:28FromDiscord<lqdev> you don't need a full hindley-milner type inference algo for that.
11:01:43FromDiscord<kodkuce> looks simple
11:04:14FromGitter<jorjun_twitter> Raspberry Pi Zero after apt-get install
11:04:20FromGitter<jorjun_twitter> Nim Compiler Version 0.19.4 [Linux: arm] ⏎ Compiled at 2019-03-05
11:04:32FromDiscord<kodkuce> lol
11:04:44FromGitter<jorjun_twitter> the things is too puny to compile on..
11:05:00*lritter joined #nim
11:05:28FromDiscord<kodkuce> hmm you mean it will need forwer to compile if posible on 512mb, hmm isent there a crosscompile option
11:05:34FromDiscord<kodkuce> like dev on pc run on rpi
11:07:59FromGitter<jorjun_twitter> yeaah, not crosscompiled anything yet… but would like to learn how
11:10:46PMunchIt's surprisingly easy with Nim
11:13:08FromDiscord<kodkuce> https://nim-lang.org/docs/nimc.html#cross-compilation
11:14:03FromDiscord<kodkuce> nim c --cpu:arm --os:linux myproject.nim << guess this
11:14:32FromGitter<jorjun_twitter> thanks @kodkuce will try this… wows
11:15:04FromGitter<jorjun_twitter> hopefully an arm6 binary..
11:17:02PMunch(of course you need the C compiler to cross-compile as well)
11:18:23FromDiscord<kodkuce> try maybe with -arm6 duno where is list of all possibe cpu symbols
11:19:03FromDiscord<kodkuce> Available options are: i386, m68k, alpha, powerpc, powerpc64, powerpc64el, sparc, vm, hppa, ia64, amd64, mips, mipsel, arm, arm64, js, nimvm, avr, msp430, sparc64, mips64, mips64el, riscv64, wasm32
11:19:33FromDiscord<kodkuce> su duno hope arm wokrs cuz pi zero is for sure not arm64
11:19:40FromDiscord<kodkuce> or at least i think
11:22:49FromGitter<jorjun_twitter> will have a bash at it, thanks both. There are instructions to make an gcc compiler with the —arch target I need, will try to match this up with nim compiler..
11:39:05kinkinkijkingetting a sigsegv "attempt to read from nil" trying to make a small vulkan application using nimgl, at vkCreateInstance
11:39:18Zevvwell, it's a bit more involved to cross compile, usually you have one specific compiler you want to target. So you might need to setup a little nim configuration to point to the proper compiler binaries
11:39:29Zevvbut still, it's pretty straightforward
11:41:04*endragor quit (Remote host closed the connection)
11:41:31*endragor joined #nim
11:43:26*awe002 quit (Ping timeout: 264 seconds)
11:46:02*endragor quit (Ping timeout: 258 seconds)
11:47:50*Vladar quit (Quit: Leaving)
11:49:11*awe002 joined #nim
11:51:49*Vladar joined #nim
11:54:11*superbia joined #nim
11:59:16FromDiscord<djazz> How do I send compiler arguments to nimble test? Or do I have to make my own test task?
11:59:35FromDiscord<djazz> Basically I want to use --cc:vcc in windows github action
11:59:49FromDiscord<djazz> it defaults to gcc
12:00:27FromDiscord<Clyybber> kinkingkijkin: Somethings nil then :)
12:02:42*rockcavera joined #nim
12:04:22FromDiscord<haxscramper> How I can catch exception during macro instantiation? something like `staticTry:`. If I just put macro inside `static` block just expands before static execute.
12:06:02*supakeen quit (Quit: WeeChat 2.8)
12:06:24PMunchYou can just use a normal try in a macro I think
12:06:44*supakeen joined #nim
12:07:09PMunchBut if it is an error that happens in the code you make in there you also need to make a try statement
12:08:17FromDiscord<haxscramper> Yes it is possible, but I this way for each macro I want to try/catch I would need to define `regularMacro` `macroThatPrintsException` and move all implementation into `macroImplementation`
12:10:49PMunchWhat?
12:13:15kinkinkijkinclyybber, yes i'm trying to figure out what thing is nil
12:13:54kinkinkijkinthere is o:nly one nil statement in my code and it's not just acceptible to the api but preferred in my application case
12:14:48PMunchMaybe something failed initialisation?
12:14:59PMunchMost C APIs will return nil in that case
12:15:00kinkinkijkinit is vkCreateInstance(addr crinf, nil, addr VKI), but this is part of how you initialize vulkan
12:15:02Zevvbah this is so dirty; I get this string with cflags, some of which have spaces. So i parse them all by splitting on the hyphen, but then "-x c++" is no longer valid because that *is* supposed to be passed as two arguments.
12:15:30kinkinkijkinvkCreateInstance is the first initialisation and the only read from nil in the code
12:15:59*haxscramper joined #nim
12:16:13haxscramperPMunch: https://play.nim-lang.org/#ix=2uOl
12:16:19PMunchWait, so you're not sure if it's that line which causes the error?
12:17:02kinkinkijkinno, that line is where the error occurs but the line is just rephrased from the spec guide im reading for vulkan
12:17:31kinkinkijkinso either there's an issue in the bindings or I've screwed up horribly somewhere else
12:17:40kinkinkijkinand I'm trying to figure which it is
12:18:23PMunchhaxscramper, and why can't you just put the try/except around the body in the `userDSL` macro?
12:19:14PMunchkinkinkijkin, what are your other two pointers pointing to?
12:19:24PMunchaadr crinf and addr VKI
12:19:39kinkinkijkinthe VkInstanceCreateInfo and VkInstance
12:19:57PMunchAnd how do you instantiate those?
12:20:30kinkinkijkinformer is var crinf: VkInstanceCreateInfo
12:20:44kinkinkijkinfollowed by the exact code from the guide translated to the bindings
12:21:23PMunchCan you share the snippet you're trying to convert and what you have now?
12:21:25kinkinkijkinVKI is var VKI: VkInstance at the top of the file, couldn't figure any other way to do it
12:21:51PMunchHmm, that sounds reasonable
12:22:04haxscramperPMunch: because I want to put this DSL in unit tests to see if compilation error is generated as expected. I bascally want to `staticTry: <macro-call> except: Error: <print-error>` in unit tests - but it should not actually fail test compilation. I do not want to actually 'try-except in macro'.
12:22:22kinkinkijkinhttps://vulkan-tutorial.com/en/Drawing_a_triangle/Setup/Instance this is the guide with the code i am recreating, ill get the init code for vulkan up in a second
12:22:42haxscramperThere is a `expect` in unittest for runtime errors, I'm looking for something similar but at compile-time
12:22:51PMunchAaaah, I see haxscramper
12:23:18kinkinkijkinhttps://dpaste.com/9LMPB8DR8 pmunch
12:23:30haxscramperIf for example I could just get compilation error from `compiles` it would be more than enough for my purposes.
12:23:42PMunchWhat you need is a macro that takes the macro call, does a staticTry and outputs a runtime assert false or something similar.
12:28:51haxscramperIs it possible to pass `macro1` to `macro2` and run `macro1` as callback?
12:29:06PMunchkinkinkijkin, hmm, this is indeed strange
12:29:44PMunchThat looks correct, but it depends on the wrapper having the correct types defined, I'm particularly curious about those strings
12:30:04kinkinkijkinthe strings are cstrings on the wrapper's side
12:30:12PMunchOh by the way, if you use ix.io you can get syntax highlighting in Nim
12:30:13kinkinkijkinsupposed to be an implicit conversion, correct?
12:30:19PMunchYeah, that's good
12:30:59kinkinkijkinI'll keep that site in mind
12:31:56FromDiscord<djazz> in a nimscript, how do i check for the backend used? when defined(...what to put here?...)
12:32:44FromDiscord<djazz> e.g. I don't want to enable threads for a js target
12:32:57PMunchwhen defined(js)?
12:33:16PMunchNo wait, I don't think that' it
12:33:57kinkinkijkini should note, nimgl's vulkan bindings seem to be potentially out-of-date
12:34:13PMunchkinkinkijkin, I guess you could try to output all the fields in the crinf and the ainf and see if they make sense
12:34:20kinkinkijkinalright
12:36:16kinkinkijkinno iterator for the fields... crap, gonna have to type each manually aren't i
12:38:00FromDiscord<Rika> eh? there are field iterators, what's the error if any?
12:40:27FromDiscord<djazz> hmm, i sent in -d:js, then I can check for it
12:42:32kinkinkijkinhttps://dpaste.org/4mL4 pmunch this is what i got from crinf
12:42:36kinkinkijkinnext onto ainf
12:45:15PMunchWait, what's the code you're using to print?
12:46:12kinkinkijkinhttps://dpaste.org/nvVv
12:46:22kinkinkijkingoing to paste what's from ainf now too
12:46:45kinkinkijkinhttps://dpaste.org/1p1x
12:51:07*endragor joined #nim
12:51:11PMunchHmm, well all those fields look fine
12:51:20PMunchMust be something you haven't initialised I guess..
12:51:52PMunchTry to put VKI inside that procedure just for a sec
12:51:57PMunchIf you can
12:58:07FromDiscord<--HA--> Can someone recommend a library to me to work with tga images? I want to take a number of input images, rotate some of them and output a new composite image with the input images put side by side.
12:58:50*bung joined #nim
12:59:26*endragor quit (Ping timeout: 240 seconds)
12:59:44FromDiscord<Rika> ~~imagemagick~~
13:00:20*waleee-cl joined #nim
13:01:01PMunchhttps://xkcd.com/2347/ (the hovertext)
13:02:07FromDiscord<Rika> yeah lol
13:03:39Zevvi'm good with imagemagick, but its not on my resume on purpose. I always impress people.
13:03:47*endragor joined #nim
13:03:48Zevvbut dont tell how I did it
13:04:51FromDiscord<djazz> How do I override cppXsupport of the gcc/clang compiler?
13:05:24FromDiscord<djazz> I get this error on macOS github actions: `error: invalid argument '-std=gnu++14' not allowed with 'Objective-C'`
13:05:45FromDiscord<djazz> I want to set it to -std=c++14 or something
13:05:59FromDiscord<--HA--> Zevv have you used it with nim?
13:06:22FromDiscord<Rika> i think they made nimagemagick
13:06:25FromDiscord<Rika> lol
13:09:13*endragor quit (Ping timeout: 258 seconds)
13:10:12PMunchZevv, you're now on my list of people to pester whenever I struggle with ImageMagick :P
13:11:40FromDiscord<djazz> Hmm, someone on github says passing -std=c++17 with passC should override it
13:15:18shashlickI was recently trying to detect blurred images with nimagemagick in autodup
13:15:39FromDiscord<djazz> ..nope, didnt work
13:16:51shashlickWhat does c++ have to do with obj-c
13:18:36Zevv--HA--: not at the API level i just use the cmdline
13:19:32FromDiscord<--HA--> Thanks everyone. I'll look into imagemagick and the nimagemagick wrapper both.
13:20:25FromDiscord<djazz> Hmm, maybe this isn't in stable yet... https://github.com/nim-lang/Nim/pull/13798
13:20:26disbotfix some codegen bugs: NIM_BOOL, NIM_STATIC_ASSERT, --passc:-std=... (etc) ; snippet at 12https://play.nim-lang.org/#ix=2sly
13:22:15*endragor joined #nim
13:24:31FromDiscord<djazz> commit spam in my repo while trying to get it to build with github actions xD
13:25:04FromDiscord<djazz> removed the -x objective-c flag from passC, seems like the upstream library don't use it in their build
13:29:25*endragor quit (Ping timeout: 240 seconds)
13:29:27bunghi, how to manage bits with 1,5, or 6 bits? then concate them to string
13:35:02*moerm joined #nim
13:35:10moermHello everyone ;)
13:36:01FromGitter<alehander92> what do you mean bing
13:36:03FromGitter<alehander92> bung *
13:36:12FromGitter<alehander92> 5bit byte?
13:38:45bungam writing a protocol package
13:38:57bungyou can see here https://dev.mysql.com/doc/internals/en/date-and-time-data-type-representation.html
13:39:04bungdata package
13:39:57bungit concate 1,17,5,5,6,6 bits to a string buffer
13:41:02*awe002 quit (Ping timeout: 258 seconds)
13:41:57*awe003 joined #nim
13:42:58*vikfret joined #nim
13:43:27FromDiscord<djazz> How do I make a proc that I can pass to a C function, matching the signature `'void (*)(const char *, const char *, void *)'` ?
13:44:05FromDiscord<djazz> I tried `proc (id: cstring, req: cstring, arg: pointer)` but clang gives errors
13:44:22bungalehander92 got any idea?
13:45:28moermdjazz try 'pointer' as return type
13:45:54Zevvdjazz: be more specific than just "gives errors"
13:46:33moermor does your 'void (*)' indicate a function returning void?
13:47:13FromDiscord<djazz> It shouldn't have a return value
13:47:48moermthen provide more details about what clang complains
13:47:58kinkinkijkinpmunch yeah that did nothing
13:49:04PMunchWhat did nothing?
13:49:22FromDiscord<djazz> Looking at the generated C++ code: `typedef struct { N_NIMCALL_PTR(void, ClP_0) (NCSTRING seq, NCSTRING req, void* arg, void* ClE_0); void* ClE_0; } tyProc__Enx9aPRv6DbvALm1ZsdBuuA;`
13:49:59FromDiscord<djazz> `error: cannot convert ‘tyProc__Enx9aPRv6DbvALm1ZsdBuuA’ to ‘void (*)(const char*, const char*, void*)’`
13:50:42moermdjazz -> ', void* ClE_0' the last parameter
13:51:23FromDiscord<djazz> `T2_.ClP_0 = ((TM__IgnPD3avxm9aG9cogcDavIYw_9) (generalBindProc)); T2_.ClE_0 = NIM_NIL;`
13:51:38FromDiscord<djazz> and then it calls it `webview_bind((*w).w, name, T2_, ((void*) (bindArg)));`
13:51:59FromDiscord<djazz> T2_ is a struct, which is wrong...
13:52:15FromDiscord<djazz> It should pass T2_.ClP_0 I think?
13:52:45FromGitter<alehander92> sorry bung i look at it now
13:52:51moermtell us the full and real Nim definition of your function
13:53:24FromGitter<alehander92> please try to use the right word: byte, not bit: using the wrong term can break everything
13:53:25FromDiscord<djazz> `proc generalBindProc(id: cstring, req: cstring, arg: pointer) {.exportc.}`
13:53:42FromGitter<alehander92> bung ^ byte
13:53:46kinkinkijkinpmunch putting vki in initVulkan
13:54:00FromGitter<alehander92> ah it seems that the bit part is down
13:54:10FromGitter<alehander92> sorry, my fault, your terminology was perfect
13:54:15PMunchAaah
13:54:17PMunchHmm
13:54:26PMunchThen I actually have no idea what's going on..
13:54:32FromGitter<alehander92> well, you need to use bit operations bung
13:54:32bungalehander92 hmm, yeah 5bytes also right
13:54:34PMunchI guess you could try to use GDB to debug it
13:54:40FromGitter<alehander92> which give you access to certain bits
13:55:02FromGitter<alehander92> i am really not an expert: i think i failed at that at one job homework task
13:55:20FromGitter<alehander92> so it's best to just google best ways to get 1 or several bits
13:55:24FromDiscord<djazz> Hmmm I added cdecl to the callbacks and wrapper defs, now it works
13:55:33FromGitter<alehander92> usually you apply a mask , but for >1 there might be a more efficient way than
13:55:40FromGitter<alehander92> repeating the same thing for each bi
13:55:42FromGitter<alehander92> bit *
13:55:57FromDiscord<djazz> `proc webview_bind*(w: webview_t; name: cstring; fn: proc (id: cstring, req: cstring, arg: pointer) {.cdecl.}; arg: pointer) {.implwebview.}`
13:56:11FromGitter<alehander92> but in the worst case you can just write a getBit n which applies the mask and returns 1 or 0
13:56:14moermdjazz interesting. looks like a c++/c mixup
13:56:20bungthe problem is I dont know how to construct the correct type
13:56:21FromGitter<alehander92> and just apply it for all of those
13:56:41FromGitter<alehander92> yeah, actually you can use packed structs
13:57:11FromGitter<alehander92> wow maybe that was the solution of that task
13:57:49FromGitter<alehander92> sorry bit fields *
13:58:01FromGitter<alehander92> https://stackoverflow.com/questions/24933242/when-to-use-bit-fields-in-c
13:58:35FromDiscord<djazz> Now it works with gcc, but not clang: `note: candidate function not viable: no known conversion from 'void (NCSTRING, NCSTRING, void *)' (aka 'void (char *, char *, void *)') to 'void (*)(const char *, const char *, void *)' for 3rd argument`
13:59:00FromDiscord<djazz> seems like it want const char *
13:59:01FromGitter<alehander92> they seem a bit compiler implementation dependend maybe
14:00:25moermdjazz The diff is in the '(*)'
14:02:02FromDiscord<djazz> oh, hmm
14:02:10bungalehander92 oh, thanks! new thing to me.
14:02:11FromDiscord<djazz> what does that do?
14:03:11FromDiscord<djazz> pointer to a function?
14:03:24FromDiscord<djazz> can I somehow cast it to a pointer proc?
14:04:11moermdjazz the question is what makes the compiler think it should be converted to 'void (*) (...)'
14:05:18FromDiscord<djazz> because the C code in the .h file has that
14:05:37moermgenerated by Nim?
14:07:32FromDiscord<djazz> No, the header I'm wrapping
14:07:53FromDiscord<djazz> `void webview_bind(webview_t w, const char *name, void (*fn)(const char *seq, const char *req, void *arg), void *arg);`
14:10:18moermdjazz ' void (*fn)' - there's your problem. your function is one thing. passing it to another function is a different thing
14:10:49bungoh there is https://nim-lang.org/docs/manual.html#implementation-specific-pragmas-bitsize-pragma
14:10:57shashlickUse c2nim or nimterop for the wrappers, even if a single proc, better to understand the result than the process
14:11:01moermyou have to normally define your function and then pass it into the other function
14:12:41FromDiscord<djazz> I used nimterop's toast to generate the wrapper initially
14:13:49FromDiscord<djazz> `proc webview_bind*(w: webview_t; name: cstring; fn: proc (seq: cstring; req: cstring; arg: pointer) {.cdecl.}; arg: pointer) {.importc, cdecl, impwebviewHdr.}` is what it generates
14:15:15*Kaivo quit (Ping timeout: 265 seconds)
14:15:32moermCan't help there. I do it by hand
14:15:57*awe004 joined #nim
14:16:37FromDiscord<djazz> I guess one way to solve it is to use the compile pragma, and skip the header completely
14:17:29*Kaivo joined #nim
14:17:50*awe003 quit (Ping timeout: 258 seconds)
14:18:16FromGitter<genotrance> What's the issue
14:19:09FromDiscord<djazz> Can't make a proc match the header's definition void (*)(...)
14:19:22FromDiscord<djazz> aka a proc pointer
14:20:26FromDiscord<djazz> and clang is throwing an error (gcc/g++ doesnt)
14:21:51shashlickCan you share a snippet and output
14:24:18moermHe has two functions, one of which is a param to the other
14:25:14FromDiscord<djazz> my wrapper https://github.com/daniel-j/nim-webview/blob/1f29b4dde4faca8b63f80c10f579f4bf0095954a/src/webview.nim#L120
14:25:41FromDiscord<djazz> a proc that I use as callback https://github.com/daniel-j/nim-webview/blob/1f29b4dde4faca8b63f80c10f579f4bf0095954a/src/webview.nim#L195-L200
14:26:05moermI'm out. Have a nice day everyone
14:26:09FromDiscord<djazz> calling the wrapped c function, passing the callback as argument https://github.com/daniel-j/nim-webview/blob/1f29b4dde4faca8b63f80c10f579f4bf0095954a/src/webview.nim#L209
14:26:20*moerm quit (Quit: Leaving)
14:27:45FromGitter<alehander92> bung no problem
14:28:49*bung_ joined #nim
14:28:57*bung quit (Ping timeout: 258 seconds)
14:29:10FromDiscord<Kiloneie> Whats the difference between lists and sequences? I see very little documentation there.
14:29:53Zevvits (doubly) linked lists vs vectors
14:30:24Zevvthe api might look the same, but they have pretty different constraints
14:31:33FromDiscord<Kiloneie> Whats the use case of lists?
14:31:49Zevvtypically random inserts/deletes
14:32:08Zevvif you insert into a seq, everything afterthe insert has to be moved one spot
14:32:09FromDiscord<maiagallo> Hi everyone! I discovered Nim yesterday and I'm very intrigued by it 🙂
14:33:00Zevvkiloneie: when you're not doing anything performance critical or your number of elemenst is small (tens of things), seqs are almost always the right thing to use
14:33:37Zevvbut if you have a large number of things and you want random insertion/deletion, lists might be better
14:33:38FromDiscord<Kiloneie> Okay, will try to remember when making a big game in Nim one day
14:33:54FromDiscord<Kiloneie> Yeh, thousands of objects
14:34:04Zevvthe downside is that lists are slower in general because each element is separately allocated on the heap. overhead and bad cache locality
14:34:18Zevvmaiagallo: you should be :)
14:35:49Zevvso how did you discover nim
14:36:01FromDiscord<Kiloneie> @maiagallo Welcome! If you don't know much about programming or prefer video tutorials, check out my channel on YT(same name there)
14:37:08FromDiscord<maiagallo> I was looking for a good balance between something like php/js and haskell (languages I'm using right now), and in my searches I ended up on nim's website. I'm looking for something to learn for fun, but my plan is also to have a bit of an escape plan (sadly it doesn't look like nim can help me with that yet) since covid is hitting my company pretty hard
14:39:51FromDiscord<maiagallo> Thanks @Kiloneie ! I have a bit of experience programming, just not with python or system languages 🙂
14:40:02*vicfred joined #nim
14:40:23FromDiscord<Kiloneie> probably not my videos then.
14:42:20*awe004 quit (Read error: Connection reset by peer)
14:42:47FromDiscord<djazz> using compile pragma instead of header made it compile with clang
14:42:52Zevvyeah nim is not something you put on your cv to get blind headhunter calls yet
14:44:18bung_send a code paste https://play.nim-lang.org/#ix=2uOR it gives me `SIGSEGV: Illegal storage access. (Attempt to read from nil?)` when access str
14:45:03FromDiscord<Kiloneie> nim is on my cv xD, for no reason...
14:45:41Zevvbung: well you're kind of asking for it, arent you
14:45:52FromDiscord<maiagallo> Are there companies using it in production?
14:45:54bung_yeah , about 3 times
14:46:13bung_Zevv I still can't figure it out , am stupid
14:46:14Zevvmaiagallo: only a handful using nim as the primary language, I think
14:46:35FromDiscord<djazz> hooray, now tests run successfully on macos
14:46:39FromDiscord<Kiloneie> if a company doesn't enforce a specific language, you can use Nim.
14:47:00Zevvbung_: str.addr points to the address of the string, but not the address of the string *payload*
14:47:44Zevva string is a little opaque struct that has a pointer to the payload and the capacity of the string. you're overwriting that
14:47:52Zevvuse s[0].addr instead
14:49:18Zevvalso, are you sure a string is the right kind of thing to put binary data in
14:50:18FromDiscord<Recruit_main707> just tell them you are using c
14:50:23FromDiscord<Recruit_main707> https://tenor.com/view/feel-me-think-about-it-meme-gif-7715402
14:50:42*awe004 joined #nim
14:51:16FromDiscord<Kiloneie> Lol... if only the outputed C code made any sense
14:51:59*bung_ quit (Ping timeout: 265 seconds)
14:52:14*bung joined #nim
14:52:54shashlick@djazz - where did you change header to compile
14:54:37FromDiscord<djazz> shashlick: https://github.com/daniel-j/nim-webview/commit/d2b8b85df76657c6a054bf0ca714069453723dd2
14:56:01shashlickwhat was the actual clang error
14:59:28Zevvhe won't say
15:01:34FromDiscord<Kiloneie> sequences are allocated on the heap right ?
15:01:57disrupteka heap o' seqs sounds like a good saturday night.
15:02:58*haxscramper quit (Remote host closed the connection)
15:03:22disruptekshashlick: Git2Static -- IT 👏 DOES 👏 NOT 👏 FUCKING 👏 WORK 👏
15:05:13shashlicksnip it
15:05:33Yardanicohttp://al6x.com/blog/2020/nim-language
15:05:43Yardanicohttps://www.reddit.com/r/nim/comments/idycyx/feedback_v2_after_using_nim_for_couple_of_days/
15:06:45Yardanico"The standard library Nim documentation suggest us to generate JSON by hand with JsonNode. And we absolutelly not going to do that, nobody generates JSON by hand these days. Not good, when official docs promoting inconvenient way to do things." I'll tell him about that
15:09:21shashlickoutput is a worrying sign
15:09:34Yardanico"Nim has weaker compile time inspection than both Kotlin and TypeScript. And the code is lower-level. That means there could be lots of runtime errors." ehm
15:10:07FromDiscord<maiagallo> umm it seems like emacs' nim-mode is a bit shaky
15:10:55FromDiscord<Rika> Yardanico: his first post suggested that most likely most of his opinions are due to his inexperience with nim
15:11:30FromDiscord<mratsim> The "Variant object type is not safe to use" is strange, if that's true it's definitely a bug
15:12:22Yardanicoit's about that some errors are runtime errors
15:12:25Yardanicowhen they can be compile-time errors
15:12:59Yardanico"Nim should stop inventing advanced stuff and focus on improving the basics. While it has huge potential in its current state it's unusable." but I would totally disagree with that
15:13:21shashlickyou can always find problems or bugs and then label something wholesale
15:13:22Yardanicomaybe TS/Kotlin people have different language tastes :)
15:13:26FromDiscord<Kiloneie> "new" proc is used when ? It makes a new traced reference object, which can be used on plain/non reference objects to make them allocated on the heap...
15:13:26FromDiscord<Rika> these arent really basic issues to fix are they not
15:13:39disruptekwe're just not at the point where the ecosystem is ready to receive the uncommitted.
15:13:57YardanicoI don't understand how object vs ref object is a low-level detail
15:14:04YardanicoIt's a normal thing to have in real native compiled languages
15:14:13FromGitter<alehander92> i mean the guy posted it in the subreddit
15:14:22FromGitter<alehander92> so he does look for the actual truth
15:15:06FromGitter<alehander92> it seems that those details just show a newcomer problem : maybe
15:15:19FromGitter<alehander92> there can be better examples of how compile time introspection works
15:15:35FromGitter<alehander92> i think most of them are basically "read this existing macro"
15:15:45FromGitter<alehander92> and macros .. are not the most readable codebases
15:15:52FromGitter<alehander92> (at least mine, but also some others)
15:16:06*bung quit (Ping timeout: 258 seconds)
15:16:19Yardanicohttps://forum.nim-lang.org/t/6707
15:16:21Yardanicoso we can discuss better
15:16:52FromDiscord<maiagallo> What would you sai is the editor with the best nim support at the moment?
15:16:57FromDiscord<maiagallo> (edit) 'sai' => 'say'
15:17:22Yardanicowell, honestly
15:17:35YardanicoVSCode / NeoVim both have good support
15:17:37FromDiscord<Kiloneie> maybe Vs Code ?
15:17:38Yardanicoalso Sublime Text
15:17:42FromDiscord<Kiloneie> i use Vs Code
15:17:47FromDiscord<Rika> i understand the object variant point though, they must be set on construction and cannot be changed after creation so why cant the error be a compile time error?
15:18:19FromDiscord<maiagallo> thanks 🙂
15:20:21shashlickdisruptek: what's the error with git2static
15:20:41*bung joined #nim
15:27:49FromDiscord<maiagallo> Do I have to use `ref` with generics?
15:28:08FromDiscord<Recruit_main707> no
15:28:16FromDiscord<Recruit_main707> generic objects?
15:28:45FromDiscord<Rika> its pretty rare to see that
15:28:55FromDiscord<Rika> usually you only use refs or you only use generics
15:29:14FromDiscord<maiagallo> It's what they do in the generics section of the tutorial, though
15:29:37FromDiscord<lqdev> `ref` and generics are completely unrelated
15:30:11FromDiscord<lqdev> one is related to value and reference passing semantics and allocations, the other is about adding parameters to types
15:30:25FromDiscord<Rika> which tutorial?
15:30:41FromDiscord<Kiloneie> Is the "new" proc's only use case of making non-ref objects into reference objects ?
15:30:59disruptekshashlick: my bad, it's passing ci now. maybe it was a ci cache issue.
15:31:22FromDiscord<lqdev> @Kiloneie `new`'s use case is allocating ref objects.
15:31:30FromDiscord<lqdev> or, rather, ref types.
15:32:02FromDiscord<lqdev> bear in mind that `ref` does not apply to objects _only_.
15:33:08FromDiscord<maiagallo> yeah, I was just assuming that it was a requirement to work with generics
15:33:44FromDiscord<maiagallo> but I think I'm doing something else wrong, then: https://gist.github.com/dariooddenino/2a0897785ca3c690add5f707febe7252
15:33:55*hnOsmium0001 joined #nim
15:34:20*tane joined #nim
15:34:41FromDiscord<Kiloneie> but isnnt this identical: https://play.nim-lang.org/#ix=2uP0 note the comment
15:35:06FromDiscord<maiagallo> oh nice! much better than pasting gists 😄
15:35:13FromDiscord<Kiloneie> yes use that
15:35:17disruptekrika: object variants can be changed after creation.
15:35:39FromDiscord<lqdev> @Kiloneie yes, it *is* identical.
15:35:59FromDiscord<lqdev> `MyRef()` is sugar for `new(MyRef)`.
15:36:08*def- quit (Quit: -)
15:36:25FromDiscord<Kiloneie> okay but i can convert a normal object into ref one using new
15:36:38FromDiscord<Recruit_main707> yes iirc
15:37:06FromDiscord<Kiloneie> idk why one would do that... but you can
15:37:15FromDiscord<Recruit_main707> ref is just a garbage collected pointer
15:37:26*bung quit (Ping timeout: 240 seconds)
15:37:27FromDiscord<lqdev> @Kiloneie how so?
15:37:39FromDiscord<maiagallo> https://nim-lang.org/docs/tut2.html#generics btw I was trying to convert this example to work without mutations
15:37:52*bung joined #nim
15:38:09FromDiscord<lqdev> as i said, `ref` isn't tied to objects _specifically_
15:38:16FromDiscord<Kiloneie> https://play.nim-lang.org/#ix=2uP2
15:38:17FromDiscord<lqdev> you can create _any_ ref type
15:38:38FromDiscord<lqdev> so… what's the problem with that?
15:38:46FromDiscord<Kiloneie> nothing
15:39:01FromDiscord<Kiloneie> im just looking for use case of new
15:39:17FromDiscord<Kiloneie> for video...
15:39:17FromDiscord<lqdev> allocating things on the heap?
15:39:32FromDiscord<Kiloneie> i meant praactical
15:39:43FromDiscord<Kiloneie> as in example why
15:39:43FromDiscord<Recruit_main707> 🥴
15:39:48FromDiscord<lqdev> well, there aren't _that_ many.
15:40:00FromDiscord<Kiloneie> i guess il leave it at that
15:40:18FromDiscord<lqdev> just say that `new()` is the default and using object constructors with ref objects is sugar.
15:40:30disruptekthis, basically.
15:40:41disruptek`new result` is something of an idiom.
15:40:47disruptekparticularly with generics.
15:41:08disruptekotherwise, you're better off not using it.
15:41:38FromDiscord<Kiloneie> you mean when making ref objects, use new instead of refObject(), because it's more clear on what it is ?
15:41:59disrupteki recommend /not/ using new.
15:42:17disruptekit's just an annoyance if you find you can switch to a value type later.
15:42:39FromDiscord<Kiloneie> okay, many mixed signals everywhere xD
15:42:51disrupteknot really.
15:43:19FromDiscord<Kiloneie> gotta make sure to tell the viewers to use ref in the naming of their ref objects
15:43:30FromDiscord<lqdev> don't.
15:43:37disruptekplease no.
15:43:39FromDiscord<Kiloneie> no ? not a good practice ?
15:43:54FromDiscord<lqdev> > When naming types that come in value, pointer, and reference varieties, use a regular name for the variety that is to be used the most, and add a "Obj", "Ref", or "Ptr" suffix for the other varieties. If there is no single variety that will be used the most, add the suffixes to the pointer variants only. The same applies to C/C++ wrappers.
15:43:58FromDiscord<lqdev> https://nim-lang.org/docs/nep1.html#introduction-naming-conventions
15:44:35FromDiscord<Kiloneie> oh yes
15:44:58FromDiscord<Kiloneie> well making videos on objects is a pain
15:45:11FromDiscord<Kiloneie> probably gonna explode on macros
15:45:26shashlickdisruptek: bintray was having some issues yesterday
15:45:51disrupteki don't know why i try so hard with ci.
15:46:48*vikfret quit (Quit: Leaving)
15:49:10FromDiscord<maiagallo> https://play.nim-lang.org/#ix=2uP5 Ok I've made a simple case of what I was trying to do 🙂
15:52:50FromDiscord<Rika> @maiagallo https://play.nim-lang.org/#ix=2uP7
15:54:35FromDiscord<maiagallo> ahn, I needed the [T] in the constructor too! Thanks @Rika
15:57:30FromDiscord<maiagallo> Does this mean that I always have to use a constructor `proc`/`func`? For example directly doing a `var p3 : Person[string] = Person[string]("foo")` doesn't work
15:58:15Yardanicothat's not the object construction syntax
15:58:21Yardanicovar p3 = Person[string](name: "foo")
15:59:05FromDiscord<Rika> `var p3 : Person[string] = Person[string](name: "foo")` will work
15:59:26FromDiscord<Rika> you can do away with the type on the lhs too if thats your thing
15:59:57*noonien quit (Quit: Connection closed for inactivity)
16:00:01FromDiscord<Rika> object construction syntax is not a function, you need to specify field alongside the value
16:02:11FromDiscord<maiagallo> I see! Thanks a lot 🙂
16:03:55*JustASlacker quit (Ping timeout: 240 seconds)
16:10:20FromDiscord<Hearthstone> Is Nim faster then C#?
16:10:24FromDiscord<Hearthstone> Using the C backend
16:10:40FromDiscord<Hearthstone> And how good is Nim's async?
16:10:54FromDiscord<Hearthstone> ~dimscord
16:10:54disbotno footnotes for `dimscord`. 🙁
16:10:58FromDiscord<Hearthstone> Oof
16:11:10FromDiscord<Hearthstone> !repo dimscord
16:11:10disbothttps://github.com/krisppurg/dimscord -- 9dimscord: 11A Discord Bot & REST Library for Nim. 15 31⭐ 5🍴 7& 2 more...
16:11:35Yardanico@Hearthstone "faster than" is a bad question usually
16:11:37Yardanicobut "yes"
16:11:45FromDiscord<Rika> depends on the code you compare
16:11:51FromDiscord<Recruit_main707> generally, nim is faster than c#, but .net does all kind of optimizations, and it sometimes is faster
16:11:55FromDiscord<Hearthstone> Thanks :P
16:12:02Yardanicodepends on the code you write of course
16:12:10FromDiscord<Rika> wdym by how good nims async is
16:12:53AraqYardanico: I could use some help on #15122
16:12:55disruptekit's not as good as c#'s async.
16:12:55disbothttps://github.com/nim-lang/Nim/issues/15122 -- 3[ARC] Sequence "disappears" with a table inside of a table with an object variant ; snippet at 12https://play.nim-lang.org/#ix=2uPd
16:13:48YardanicoAraq: with what exactly?
16:13:55YardanicoI know it's a rather strange issue
16:14:16Araqreduce it further
16:14:29AraqtoTable seems to produce weird code
16:14:36Yardanicooh okay
16:20:57*qwertfisch_ joined #nim
16:20:59*beatmox- joined #nim
16:21:19*beatmox quit (Ping timeout: 272 seconds)
16:21:23*qwertfisch quit (Read error: Connection reset by peer)
16:22:23disruptek!last clyybber
16:22:25disbotclyybber spoke in 12#nim 4 hours ago 12https://irclogs.nim-lang.org/21-08-2020.html#12:00:27
16:25:48FromDiscord<Kiloneie> string is allocated on the heap right ?
16:26:01FromDiscord<Kiloneie> wait... probably not
16:26:05FromDiscord<Rika> yes
16:26:15FromDiscord<Kiloneie> okay thanks
16:26:21Yardanicothey are except the string literals
16:26:23Yardanicowhich are not modified
16:26:34Yardanicothese are optimized so they don't need allocations with arc on devel
16:27:36FromDiscord<Recruit_main707> why not universally instead of only in arc?
16:28:23disruptekthey are constants regardless of gc.
16:28:57Yardanicodisruptek: I mean in the backend
16:29:03Yardanicothey're static strings with arc on devel
16:29:12Yardanicono heap allocs
16:29:21disruptekthey are constants regardless of gc.
16:29:31disruptekthey are static strings regardless of gc.
16:34:18YardanicoAraq: this one doesn't need toTable https://play.nim-lang.org/#ix=2uPl
16:40:26Yardanicoit crashes with SIGSEGV with -d:useMalloc btw
16:40:33Yardanicoah no it doesn't
16:40:38Yardanicoit's just that I used -d:danger together with it
16:42:46*vikfret joined #nim
16:43:23Zevv-d:yolo
16:54:47*arecacea1 quit (Remote host closed the connection)
16:55:16*arecacea1 joined #nim
16:58:16*superbia1 joined #nim
17:00:49*superbia quit (Ping timeout: 246 seconds)
17:03:46Zevvping @InventorMatt
17:04:31FromDiscord<InventorMatt> Yes?
17:04:35Zevvoy
17:04:46Zevvdid you happen to figure out why the arduino compile hangs?
17:05:01ZevvI have another victim. The whitespace has been fixed, but now compilation stalls
17:06:07ZevvI dont have a windows setup to test this on myself. I know nims subprocesses sometimes get hung up if theres too much output generated because pipes fill up - stupid stdlib bug, so that might be the case here as well
17:06:49Zevvhttps://github.com/zevv/nim-arduino/issues/2
17:06:51disbotI cannot get this to work properly ; snippet at 12https://play.nim-lang.org/#ix=2uPC
17:07:15FromDiscord<InventorMatt> I have not been able to figure it out. I'm willing to test anything on a windows computer if you have some ideas
17:07:46Zevvhmm problemy is that i dont kno
17:08:07Zevvknow how to debug these things on windows. for linux its trivial for me, but i dont know the tools available on ms
17:08:56Zevvwe know the compiler is executed, and that it is basically standing still. so what is it waiting for then :/
17:10:02Zevvok, i'll see if i can figure this out, thanks
17:10:22FromDiscord<InventorMatt> Would there be a way to add log statements or something during that process so we can see where it gets to at least?
17:14:53*PMunch quit (Quit: leaving)
17:15:29*Jesin quit (Quit: Leaving)
17:15:49Zevvproblem is that my code is not "running" at that time
17:16:09Zevvit spawns a subprocess (compiler) and is not in control until that finishes
17:16:47ZevvI expect the compiler filled the stdout/stderr pipe, ive seen that before inside the nim compiler itself. its pretty silly actually
17:17:49FromDiscord<InventorMatt> So it may be a nim compiler issue then?
17:18:42Zevvnim stdlib issue i think. i'm about to take a stroll through the woods, will look if i can see whats happening later today
17:20:44*audiofile joined #nim
17:21:12FromDiscord<dom96> > it's not as good as c#'s async.↵@disruptek[IRC]#0000 it's not? how so?
17:25:10disruptekc# has cancellation, leak-free operation, progress monitoring, and better exception handling.
17:25:18disruptek...just to name a few differences.
17:25:45*bung quit (Ping timeout: 240 seconds)
17:26:38FromDiscord<dom96> Cancellation and progress monitoring sure, but the rest of your claims I would challenge 🙂
17:27:13FromDiscord<dom96> And to be fair, Nim's async has a form of cancellation too: you can close the fd and operations get cancelled. Most of the time that is all you ever need.
17:27:30disruptekbtdt, this is not what you want.
17:27:31*Jesin joined #nim
17:27:53disruptekhow about docs?
17:27:56disruptekhttps://docs.microsoft.com/en-us/dotnet/standard/asynchronous-programming-patterns/task-based-asynchronous-pattern-tap
17:30:04FromDiscord<dom96> Nice, we could quite trivially implement that form of progress reporting and cancellation
17:30:13disruptekgo for it.
17:30:41disrupteklook, i love nim and i believe it can provide the best async.
17:30:48disruptekbut async/await is not that animal.
17:31:45FromDiscord<dom96> Don't let perfect be the enemy of the good.
17:31:53disrupteknot yet anyway. i await your trivial pr.
17:32:05disruptekso to speak.
17:33:15*Trustable joined #nim
17:33:51FromDiscord<Avatarfighter> What is new disruptek and dom96, nice to see both of you 🙂
17:33:52FromDiscord<dom96> here is the thing, I have spent many month-work-hours on various things in Nim, I have reached a point where I am simply not willing to spend any more time on things unless A) they are fun B) they are a dependency on another project I am working on
17:34:20disrupteki get it. you don't want to bikeshed software that doesn't exist. neither do i.
17:34:38disruptekasync/await is not as good as c#'s async.
17:34:54FromDiscord<Rika> and that's fine for now, right?
17:35:13disruptekit doesn't bother me anymore because i don't use it anymore.
17:37:17FromDiscord<dom96> > async/await is not as good as c#'s async.↵Does C#'s async/await support as many platforms as Nim's? I guess with .net core it may nowadays, but what's the support there?
17:37:45FromDiscord<Rika> net core has pretty good support nowadays afaik
17:37:46FromDiscord<dom96> There are many ways to evaluate how good something is, lack of features is one way. But there are many things about Nim that makes Nim's async better than C#'s
17:37:56disruptekit's not supported in jvm, which is the biggest oversight. but, unlikely to improve.
17:38:16disruptekalmost no one uses nim, so it really doesn't matter how broad the support is.
17:39:11disrupteki mean, it's great if you use it, obviously. but it's senseless to compare when even on a single platform, c# is mopping the floor with us.
17:39:23disruptekwho are you trying to convince?
17:39:48*kinkinkijkin quit (Quit: Leaving)
17:41:05FromDiscord<dom96> Why don't you just use C# then?
17:41:15disruptekme personally?
17:45:22FromDiscord<dom96> I mean, sure, and anyone else as well, but I know what you or anyone will say: because Nim has this feature that C# doesn't have.
17:45:37FromDiscord<dom96> Honestly, it really annoys me when you say things like "C# is mopping the floor with us"
17:45:59FromDiscord<dom96> How do you expect Nim to gain adoption when you're saying things like that?
17:46:23disruptekyou want me to lie to prospective users?
17:46:32disruptekwhat does it have to do with anything?
17:46:50disrupteki came to nim because it felt like the tool i wanted to use for my domain.
17:47:08disruptekif a new user feels the same, they really aren't going to care if c# is more popular, are they?
17:47:30disruptekor would you rather trick the person that cares about such things?
17:47:55*superbia1 is now known as superbia
17:50:05FromDiscord<dom96> No, I don't expect you to lie. But I expect some positivity. You think if you go to Microsoft and ask the same about C# that they'll focus on all the negative aspects?
17:50:45FromDiscord<dom96> Most of them will lie. But some will say "Well, it works well for a lot of people, but tell me what exactly you want to do so I can give you a better answer"
17:51:03disrupteki'm not trying to annoy anyone. i can always wax poetic on nim. but let's face it, so can you. i'd rather hear positivity from you than untruths.
17:51:27disruptekspin has no place here, afaic.
17:52:30FromDiscord<dom96> I wouldn't call it spin. I would call it not being negative about things unnecessarily.
17:53:17disruptekthe question was, "is nim faster than c#? and how good is its async?"
17:53:38disruptekthere's nothing wrong with my answer. it's truthful, if incomplete, and i think we've fixed that last problem.
17:54:07disruptekthere isn't anything anything "negative" about it. it's merely factual.
17:54:33disruptekyou could argue that it's positive, since i'm stating that c#'s async is better.
17:55:18disrupteki'd say you criticism is hardly positive and mostly negative.
17:56:46disrupteki chose nim because it's fast and efficient. it's fast to write, it's fast to read.
17:56:58disruptekit runs fast in my domain, on the cloud, where async isn't a thing i care about.
17:57:24Araqyou don't have to "lie", you can say "Nim's async works well enough for some, others wrote their own"
17:57:25disrupteki can write code once and (hopefully) use it inside node or c work.
17:57:40FromDiscord<dom96> Fine, maybe it's not about negativity or positivity, but rather indeed about omitting information at the expense of people adopting Nim
17:58:13disrupteklook, hearthstone isn't leaving nim. and other people in this channel aren't leaving for c#, either.
17:58:26disruptekhearthstone is coding on a fucking phone, ffs.
17:58:30FromDiscord<dom96> You presumably wish people to use Nim, so answer questions in a way that are complete and thus positive for Nim.
17:59:09disrupteki'll do better. i hope you find improving async fun enough to justify the trivial pr you suggested.
18:00:11disruptekthe thing is, i think nim sells itself pretty well. i just think the market has to be grown organically.
18:00:27disruptekpeople that want what nim offers will write software in nim. other people who want to use that software will use nim.
18:00:42disruptekwe really don't have much competition, technically.
18:01:15disruptekso we'll attract technical users. eventually, even untechnical folks will have an ecosystem they can leverage.
18:01:26disruptekwe just aren't there yet. too little polish, too little code.
18:01:54disruptekit's just my complete opinion. i'm working on it, too.
18:02:04disrupteki'm rewriting nimph right now. it's going great.
18:02:24disrupteki mean, i've spent the last 14 months writing nim more-or-less full time.
18:02:48disruptekregardless of how fun it was.
18:02:55disruptekand mangling is anything but fun.
18:03:06Araqspeaking of which
18:03:11Araqwhy is it hard?
18:03:29FromDiscord<dom96> > we really don't have much competition, technically.
18:03:32FromDiscord<dom96> That is a big "technically"
18:03:51disrupteki guess i'm a bad programmer.
18:04:29disruptekwhen you look at the venn diagram of nim versus, say, rust or d or crystal, there isn't all that much overlap.
18:04:36Araqdisruptek: well mangling looks easy though
18:04:50disruptekAraq: maybe you can tell me why it fails.
18:05:08Araqyeah, will try
18:05:19disruptekit fails just one test in stdlib cat.
18:05:27disruptekbut, apparently, lots in the other cats.
18:05:57disruptekone perennial problem is that proc prototypes get written before the proc itself. which is annoying.
18:06:41Araqbootstrapping works?
18:06:50disrupteki think so, yes.
18:07:24disruptekon the plus side, the mangling itself is even sweeter than it was.
18:10:03*bung joined #nim
18:10:15disruptekthe minor problem with proc and tuple types is that they are sorta like "anonymous types", so it's harder to associate them with an identifier.
18:10:20Zevvdid you utf8-fake-8colonize in the end?
18:10:28disrupteknah.
18:10:43Zevvgood
18:10:47Araqdisruptek: well if bootstrapping works the rest is rather unimportant :-)
18:10:59Araqwhich test does fail?
18:11:04disruptekjsonutils
18:11:17Zevvi have a dedicated nim build of your branch around which i run whenver i need to read c code
18:11:20Zevvdelight
18:12:36disruptekthanks, i agree it's nice. and i believe it might fix some pretty subtle bugs in the compiler. or at least, it refactors and cleans up some of the temp code.
18:13:06disruptekbut it's a bad sign that it fails tests.
18:13:22Araqno, we have so many tests that usually something somewhere fails
18:14:00disrupteki consider mangling to be around 2/3rds of the IC changes.
18:14:42*bung quit (Ping timeout: 260 seconds)
18:14:51disruptekor at least, this PR should be around 2/3rds of the effort to merge IC.
18:16:08Araqdisruptek: ok, what is the error message?
18:17:44*arecacea1 quit (Remote host closed the connection)
18:18:46*arecacea1 joined #nim
18:19:08disruptekhttp://ix.io/2uPV
18:19:47*a_b_m joined #nim
18:20:41*andinus is now known as t`
18:20:50*t` is now known as andinus
18:23:26*abm quit (Ping timeout: 240 seconds)
18:23:52Araqok, does testRoundtrip_proc_tjsonutils_3 really not exist?
18:24:56disruptekit's _5 that _3 is referencing. but i don't know what that test is doing. i haven't looked at it.
18:25:10Araqread renderer.disamb please
18:26:37*qwertfisch_ is now known as qwertfisch
18:27:25disruptekwell, this seems like it will need a patch.
18:29:37disruptekhmm, but why should it? this is front-end mangling. by the time the backend gets this stuff, it should be able to operate on it normally.
18:29:59Araqdisamb is a very simple algorithm and in theory all it really takes
18:30:30Araqhowever, the "mangler" seq needs to be global (Part of ModuleGraph?)
18:30:34disruptekwell, windows users are good at copy+paste.
18:31:00disruptekyou can argue with me, but first you must understand the problem.
18:31:13Araqand of course for your case you want to add Types and Module info
18:31:40Araqbut all else being equal, the disambiguation is based on the PSym's identity
18:31:43disruptekmangling is partly a function of scope, exports, and other details of the symbol.
18:32:42Araqexports? why?
18:32:49disruptekbecause exports cannot be mangled.
18:32:57Araqah yeah
18:33:03Araqso you're talking of 'exportc'
18:33:10disruptekas an example, sure.
18:33:21disruptekbut we also want foreign symbols to have their module name in them.
18:33:33disruptekwhatfer legibility reasons.
18:34:24disrupteki think the logic in mangler.nim is pretty easy to read.
18:34:42disruptekbut if you think you can replace it with a 5-line proc, go for it.
18:34:48disrupteki am ready to learn a thing.
18:36:15disrupteki've never seen so much interest in a pr, so i'd really like to see this get finished and merged one way or another.
18:36:31Araqno. not my point. ok well, give me please a link to your PR
18:36:47disruptek!pull author:disruptek mangling
18:36:48disbothttps://github.com/nim-lang/Nim/pull/14632 -- 3porting name mangling from ic effort
18:37:58disrupteki just pushed a cpp tweak.
18:38:44disruptekit should let us use nice mangles on c when we need the workaround on cpp.
18:41:01disruptekwrt disamb() if your point is that we simple cache an integer, yes, that's what our sigConflicts table does. it appears in BProcs and BModules.
18:41:50disruptekit's a bit overloaded in that it holds integers-as-strings which represent unique symbol ids, or names, which represent an unused _### counter.
18:42:23disruptekthese obviously will never collide.
18:43:07Araqmy point is that ConflictsTable* = Table[string, int]
18:43:21Araqshould be ConflictsTable* = Table[PSym, int]
18:43:29Araqmaybe.
18:43:43disruptekit's more or less the same thing, but this way we can store more.
18:43:55disruptekalso types, if we want to go that route.
18:43:58Araqyou can also add a mangledName: string field to ast.PSym if it helps
18:44:21disruptekit could make the compiler faster, but other than that, it doesn't really help.
18:44:25disruptekwe use loc.r for this.
18:45:01disruptekyou're probably looking at my comment. see? comments work.
18:50:40*andinus quit (Quit: ERC (IRC client for Emacs 26.3))
18:50:44FromDiscord<haxscramper> Is there any difference between `A = object {.inheritable.}` and `B {.inheritable.} = object` (pragma after object construction or before)? Both variants work and in most cases I see `B {..}` begin used, but `macros` documentation uses second one.
18:52:01disruptekone is on the type and one is on the symbol.
18:52:28disrupteki guess i don't understand the question.
18:53:07FromDiscord<haxscramper> Does using first variant vs second make any practical difference or it is just two ways to write the same thing?
18:53:19disrupteki don't know what `inheritable` does.
18:53:54disruptekoh, i see.
18:53:57Zevvits the same as 'of RootObj'
18:54:03FromDiscord<haxscramper> I'm asking about pragmas on objects in general, not `.inhertable.` in particular.
18:54:10disruptekit creates a new RootObj analogue.
18:54:28disruptekwell, there's a difference in the ast.
18:54:29FromDiscord<lqdev> @haxscramper i think the former is deprecated
18:54:48disrupteki use the first form in cps.
18:55:18disrupteki added {.deprecated.} to the compiler for the second form.
18:55:32disruptekthe idea is that an object field can be deprecated without deprecating the type.
18:55:45disruptekthey mean different things.
18:56:06disruptekwrt inheritable, they may be handled the same way. i dunno.
18:56:49disruptekin cps, we add .cpsLift. to tell ourselves to lift the type in later rewrites.
18:57:37FromDiscord<haxscramper> Ok, so no difference in behaviour, only variations in AST and second one used less often (judging from documentation).
18:57:58disrupteki'm not saying that, but i won't argue with you because i don't know.
18:58:22*andinus joined #nim
18:58:27disruptekit's certainly not the same wrt {.deprecation.} or, for example, .cpsLift.
18:58:48disruptekAraq: isn't there pragma syntax for callsites? how do i use it in the ast?
18:58:59FromGitter<alehander92> ooooo
18:59:01disrupteki swear i've seen it before.
18:59:27disruptekmaybe it's simply not supported by macros.
18:59:28*a__b__m joined #nim
19:00:30disrupteki think i saw zah use it.
19:00:41disruptekhe was cackling at the time.
19:01:34FromGitter<alehander92> @dom96 this is an internal chat which is super active
19:01:43FromGitter<alehander92> you shouldn't censor people like that come on
19:01:54FromGitter<alehander92> obviously many things can be improved, nothing bad with saying that
19:02:37FromGitter<alehander92> but this can happen when people are just fair
19:02:39*a_b_m quit (Ping timeout: 258 seconds)
19:02:58FromGitter<alehander92> disruptek zah sounds as a person who would use that
19:03:14FromGitter<alehander92> otherwisee
19:03:16FromGitter<alehander92> i had cancelation
19:03:28FromGitter<alehander92> working in a patch to our async/await (but .. maybe it still had some bugs)
19:03:44FromGitter<alehander92> the chronos guys had their own older more mature implementation
19:03:52FromGitter<alehander92> so it's indeed not super hard probably to add that
19:03:57disruptekzah is a funny guy; i think he has a good sense of humor.
19:04:16disruptekcancel was added to chronos a few months ago.
19:04:28FromGitter<alehander92> i agree
19:04:36FromGitter<alehander92> yeah i followed their cancel
19:04:45FromGitter<alehander92> but he motivated me to try a little different approach
19:04:49FromGitter<alehander92> based on tokens
19:05:04FromGitter<alehander92> so it was cool, because one could cancel subgroups of stuff based on shared token
19:05:11FromGitter<alehander92> i kinda not remember all the details
19:05:15disruptekmakes sense.
19:05:39FromGitter<alehander92> but i planned on RFC-ing it
19:05:47FromGitter<alehander92> but now with the possible different async
19:05:49FromGitter<alehander92> not sure
19:05:57disruptekyou should get involved in cps. i think you'd get a kick out of it.
19:06:19FromGitter<alehander92> maaybee
19:06:35disrupteki dunno why you've stayed away. it's right up your alley.
19:06:37FromGitter<alehander92> but it seems as such a tunnel from the outside
19:06:47disruptekit's really not.
19:06:47FromGitter<alehander92> i felt like you reinvent half of nim
19:06:53disruptekno way, dude.
19:07:10FromGitter<alehander92> i can take a look tomorrow
19:07:22disruptekit's only macros, no compiler.
19:07:27Araqdisruptek: ah right, loc.r, forgot about it :P
19:07:35Araqanyway my point stands
19:07:44disruptekAraq: well, caching the mangle would accelerate things.
19:07:45FromGitter<alehander92> i wanted to work on the parallel compiler idea
19:07:56FromGitter<alehander92> but then i started other stuff in other langs and yeah
19:07:56disruptekAraq: what is your point?
19:08:24disruptekalehander92: have you looked at dust? it started out as a compiler pass. early commits are a good example of how to do that.
19:08:30*natrys joined #nim
19:08:34Araqthat the bug has to be something like
19:08:52Araquse_mangledname(s); # later on.
19:09:07Araqs.loc.r = mangledName(s) # but boom, inconsistency
19:09:25disruptekthis is why we always re-mangle.
19:09:56Araqhuh? re-mangling is the bug. you need to mangle and store it in s.loc.r immediately
19:10:29disrupteki'm not sure we can do that.
19:10:31Araqre-mangling can introduce different _N suffixes
19:10:44disruptekwe always store in loc.r.
19:10:51FromGitter<alehander92> disruptek how to do what
19:10:56disruptekbut we don't know what the mangling will produce until we mangle it.
19:10:57FromGitter<alehander92> i haven't really looked deep into it
19:11:07disruptekso we cannot check for a collision until we mangle.
19:11:34disruptekalehander92: dust fucks with your ast and attempts to recompile it after each change.
19:11:58Araqwell that's how the old codegen works. it mangles, stores in s.loc.r and remembers the name
19:12:10Araqso the only source of bugs was "duplicate name X".
19:12:15disruptekalehander92: eary commits are an example of how to embed the compiler. you can use this to easily multithread the front-end.
19:12:19Araqwhereas your bug is "undeclared thing X"
19:12:47disruptekyou point is well taken.
19:13:32FromGitter<alehander92> disruptek yeah
19:13:38FromGitter<alehander92> i managed to use the parser
19:13:41FromGitter<alehander92> in parallel
19:13:52FromGitter<alehander92> but i wanted to manually write proof of concept for the other passes
19:13:58FromGitter<alehander92> for a small subset
19:14:02disruptekthe problem with passes is that they suck.
19:14:12disruptekyou don't get the full statement list that you parsed.
19:14:18FromGitter<alehander92> but now i mostly do stuff for job interviews and haskell and stuff
19:14:25disruptekwell, of course.
19:14:29disruptekyou're a badass now.
19:14:33disruptektoo big for nim.
19:14:43FromGitter<alehander92> and wanted to write a subset-of-c compiler in haskell, to learn more my asm + optimizations
19:14:48FromGitter<alehander92> pffffff
19:15:01FromGitter<alehander92> i am not good enough to do only nim
19:15:20disrupteknim is a great language if you're unemployed.
19:15:21FromGitter<alehander92> i don't get the problem with passes
19:15:31disruptekpasses only get toplevel statements as input.
19:15:35FromGitter<alehander92> i wondered about the 1m lines in second tho
19:15:56disruptekin v? or jai?
19:15:57FromGitter<alehander92> one can design a language which can actually be compied that fast
19:16:03FromGitter<alehander92> but i wondered how useful would that be
19:16:17FromGitter<alehander92> it seems caching / parallelxiation is more useful in general
19:16:26FromGitter<alehander92> why compiling 1m lines a second
19:16:34FromGitter<alehander92> if you can compile 1k lines
19:16:37FromGitter<alehander92> 90% of the time
19:16:54disrupteki don't see people here complaining of compilation speed. not ever.
19:17:02FromGitter<alehander92> disruptek well thy get trees
19:17:07FromGitter<alehander92> not sure what top level means
19:17:13*vicfred quit (Quit: Leaving)
19:17:15FromGitter<alehander92> well i did have complaints
19:17:20disrupteksomething unindented in your source file.
19:17:31FromGitter<alehander92> imagine if the compiler could be recompiled in 0.5 seconds
19:17:41FromGitter<alehander92> fun
19:17:58disruptekdoesn't matter to me. i would sooner just have hcr on toplevel statements.
19:18:26FromGitter<alehander92> they seem related
19:18:56FromGitter<alehander92> but i still prefer getting a normal binary out
19:19:27FromGitter<alehander92> i don't see the appeal of hcr so much for not long-running apps
19:19:30Zevvi find hcr overrated and not worth the complexity
19:19:35FromGitter<alehander92> but it is quite nice for those
19:19:46FromGitter<alehander92> no, it's sometimes underrated: it would be cool to have
19:19:55Zevvi can do hcr in lua, python or whatevercode. but i hardly ever do it
19:20:06YardanicoI think HCR mostly makes sense in complex apps
19:20:13Zevvand if you realy need it, you can get a long way using shared libs
19:20:17Yardanicowhich are *by pure luck of course* usually written in compiled languages
19:20:23Yardanicoso proper HCR is harder to do
19:20:37disruptekif you want cl-like repl, you want hcr.
19:20:40FromGitter<alehander92> but i just wanted to design somet
19:20:44Zevvif you want hcr, use it ina language that has it by design
19:20:49Zevvnot glued on
19:20:49FromGitter<alehander92> that takes all those into account in the beginning
19:20:55Zevvgo erlang
19:21:02Zevvoooh thats not compiled is it
19:21:03disruptekyes, well you did list lua and python.
19:21:05FromGitter<alehander92> zevv i don't really agree i use repl-s / live servrs a lot
19:21:14FromGitter<alehander92> e.g. django reloading live is quite ok
19:21:42Zevvbut is it worth all the trouble. doing hcr in nim is a pain, lots of stuff are buggy, it clutters the code
19:21:42FromGitter<alehander92> it would be cool for nim backends as well
19:22:02FromGitter<alehander92> well, the user code seemed relatively clean
19:22:16Zevvand these days where everything is dockerize and microsreviced, why would you want to hot reload?
19:22:18FromGitter<alehander92> and many problems are with rtl afaik
19:22:26Zevvyou just spin your new code in your new instance
19:22:29FromGitter<alehander92> i am talking about development
19:22:37FromGitter<alehander92> not about hot code pushing (?)
19:22:43disruptekSimple Reboot Everything
19:22:47FromGitter<alehander92> hot swapping
19:23:00FromGitter<alehander92> all of this is usually useful for fast cycle
19:23:03FromGitter<alehander92> while working
19:23:09disruptekZevv: you need to watch more clojure tv.
19:23:11Zevvhm for development, maybe for apps with lots of reproducable state, like games
19:23:26Zevvdisruptek: no that shit makes me want to /leave #nim
19:23:29FromGitter<alehander92> web backends, games
19:23:45FromGitter<alehander92> long running services
19:24:09ZevvYeah, well, I who am i to question these things
19:24:20Zevvi just rant but dont produce a lot lately
19:24:24FromGitter<alehander92> me too
19:24:33*dpdp joined #nim
19:24:40FromGitter<alehander92> zevv i should work on asm backend soon
19:24:50FromGitter<alehander92> is there a good intro book on x86_64 stuff
19:24:58disruptekno.
19:25:00Zevvdont go that way man
19:25:01dpdpi built and installed nim from source, but /opt/nim/bin only shows nim, not nimble. did I do something wrong?
19:25:11Zevvyou'll never ever reach c performance
19:25:28Zevvif you want to make a backend, go java or dex
19:25:33FromGitter<alehander92> zevv why
19:25:42FromGitter<alehander92> ah zevv but i am talking about a (subset of c) compiler
19:25:56FromGitter<alehander92> so it would be its own performance anyway
19:25:58*a__b__m quit (Quit: Leaving)
19:26:07Zevvbecause we emit straight c that gets heftily amazingly optimized by compilers grown with 40 years of smarts
19:26:17FromGitter<alehander92> ah yeah no no this is about a different thing
19:26:27Zevvif you start outputting your own flat asm, youll get flat performance
19:26:30FromGitter<alehander92> where i just learn to optimize more and stuff
19:26:33Zevvyou gonna peephole that yourself?
19:26:35disruptekdpdp: it's surprising that nim would show up there.
19:26:37FromGitter<alehander92> yeah the point is to add optimization passes
19:26:39disruptek~gitnim
19:26:40disbotgitnim: 11https://gitnim.com/ -- choosenim for choosey nimions -- disruptek
19:26:43FromGitter<alehander92> zevv yeah exactly
19:26:45disruptekdpdp: try gitnim.
19:26:52FromGitter<alehander92> this and other optimizztions
19:27:12Zevvalehander92: i dont know man. if you do that for fun, you should give it a go for sure, but if you want to bring it to the masses i think its a lost cause
19:27:17dpdpdisruptek: should i even expect nimble to be built from running make inside nim-1.2.6? or is nimble another package
19:27:23Zevvtheres a reason for thngs like llvm
19:27:33disruptekdpdp: make? no. you shouldn't.
19:27:43disruptekdpdp: ./koch tools # build nimble et al.
19:28:22FromGitter<alehander92> zevv noooo man
19:28:30FromGitter<alehander92> it's for learning purposes and for my cv
19:28:32dpdpwell this is confusing. the tarball came with koch: ELF 32-bit LSB executable, Intel 80386
19:28:39Zevvthen you should go for it :)
19:28:39dpdpwhich doesnt run on my arch
19:28:40FromGitter<alehander92> do you think i am going to rival gcc and clang
19:28:45dpdpso how do i build koch?
19:29:00Yardaniconim c koch
19:29:01disrupteki strongly recommend gitnim.
19:29:06Zevvorrr you make a dex backend, so we can run on android with the fruit of your labour :)
19:29:12dpdpgoogling gitnim didnt find anything. got a url?
19:29:20disruptek~gitnim
19:29:20FromGitter<alehander92> most compiler jobs want good asm / hardware background / maybe llvm knowledge
19:29:20disbotgitnim: 11https://gitnim.com/ -- choosenim for choosey nimions -- disruptek
19:29:23Zevvalso, if you happen to become an android expert, I will *soo* hire you
19:29:27FromGitter<alehander92> so that's why i have to improve there
19:29:29*krux02 quit (Remote host closed the connection)
19:29:37*krux02_ joined #nim
19:29:39FromGitter<alehander92> zevv but i am compiling c
19:29:47dpdpYardanico: that did it thx.
19:29:51FromGitter<alehander92> the nim parallel thing is a different project
19:30:04Zevvsure
19:30:04FromGitter<alehander92> i just realized what dex is
19:30:15FromGitter<alehander92> didn't some other guy wrote a dex backend
19:30:35Zevvno i dont think so, he did ndk integration stuff
19:30:39FromGitter<alehander92> (if you hire for writing dex and this kind of low level android i am game)
19:30:48Zevvhehe
19:30:51FromGitter<alehander92> haha, but otherwise i am so no idea of mobile
19:31:05FromGitter<alehander92> literally a big hole in my vision
19:31:19FromGitter<alehander92> they use stuff and have touches
19:31:19Zevvme neither. ive been doing pretty hefty androdi work over the last years, but its still a mess in my head
19:31:31*vikfret_ joined #nim
19:31:45*dpdp quit (Quit: leaving)
19:31:50Zevvwe run android in containres without android knowing its containeried
19:32:04*fowl__ joined #nim
19:32:05*fowl_ quit (Ping timeout: 240 seconds)
19:32:05*fowl__ is now known as fowl_
19:32:32FromDiscord<dom96> alehander92: censoring? Definitely not doing that. That would involve me silencing disruptek
19:32:44*vikfret quit (Read error: Connection reset by peer)
19:33:33Zevvi must say you guys do have pretty polite discussions lately
19:33:40FromGitter<alehander92> zevv fun
19:33:47Zevvnah
19:33:54FromGitter<alehander92> so android has namespaces ?
19:33:55FromGitter<alehander92> and chroot
19:33:58FromGitter<alehander92> interesting
19:34:16Zevvwe threw out the namespaces as it clashes with the namespaces in the containers
19:34:23Zevvbut we didnt tell android
19:34:59FromGitter<alehander92> @dom96 sorry: i meant trying to change the way people speak
19:35:14FromGitter<alehander92> you're right it's not censorhip, but i still think it's very important to be able to say
19:35:19Zevvproblem is, ive been asking for an android expert for over two years. never came. and now people think im the android expert. but i have sooo no clue
19:35:23FromGitter<alehander92> guys X in Y is much better, let's improve !
19:35:35FromGitter<alehander92> zevv ok so i am not the guy :D
19:35:51Zevvneither am i :)
19:35:52FromGitter<alehander92> would android switch to kotlin
19:35:58disruptekit's me, i'm your huckleberry.
19:35:58FromDiscord<dom96> Yes. If it was framed that way I’d be very happy.
19:35:58FromGitter<alehander92> i thought that's the direction they are going in
19:36:02FromGitter<alehander92> i mean dropping the jvm
19:36:22Zevvno, kotlin basically runs on java
19:36:27FromGitter<alehander92> dom96 well people are different, i think so much spam is written every day
19:36:29Zevvyou can make android apps in kotlin
19:36:38FromGitter<alehander92> nobody would be like "i am not using nim" because one message was critical
19:36:45FromDiscord<dom96> Of course, the crux of the issue really is that me and disruptek disagree on the way forward for async.
19:37:06FromDiscord<dom96> I’m frustrated with people still waiting for the new thing when Nim 1.0 is out
19:37:09FromGitter<alehander92> dom96 yeah this would be huge bikeshedding moment
19:37:26FromGitter<alehander92> but i think experimentation (especially userland) is good
19:38:02disrupteknim-1.0 doesn't solve the problem. but the latest 1.0 release is not necessarily the last.
19:38:02FromGitter<alehander92> so it's good to encourage that
19:38:16disruptekdom96: there's still time for you to pr your async features into the 1.0 branch.
19:39:29disruptekit's always frustrating to present the community with software you feel is complete and then discover that you are in the minority on that view.
19:41:03nisstyredisruptek: also when you wrote it to solve your use-case and then people feel as if it should do something else
19:41:30disrupteksame same but different. 😁
19:41:31FromGitter<alehander92> that's why it should be exteensible
19:41:41FromGitter<alehander92> so people can add their usecase without hardcoding
19:41:46FromGitter<alehander92> it into the main concept
19:41:59FromGitter<alehander92> but not always possible to address everythin
19:42:49disruptekprobably better to narrow the scope instead.
19:43:25FromDiscord<dom96> What’s frustrating is working on a project for a decade and it still being “immature”
19:43:53FromGitter<alehander92> but people shouldn't base their assesment on how many years other work
19:44:07FromDiscord<Recruit_main707> `when defined()` is checked only once at compile time right?
19:44:48FromGitter<alehander92> nim is a relatively succesful language: how many hobby languages got here, what it achieved is pretty good even now
19:44:51disruptekit's checked multiple times, in theory, if it's in a macro.
19:45:10disruptekin practice, we found that it may only be checked once.
19:45:18FromDiscord<Recruit_main707> ok
19:45:23FromDiscord<Recruit_main707> thx
19:45:37disruptekjust another example of immaturity.
19:46:06FromGitter<alehander92> i think even go and rust have immature parts
19:46:10FromGitter<alehander92> it's normal
19:46:19FromGitter<alehander92> it's just "not as advanced / robust as the best"
19:46:36shashlickFact is that we need to focus on bug fixes and issues raised by the community
19:46:45FromDiscord<dom96> Indeed
19:46:45disruptekgo and rust don't reach as far as nim does, so we can hardly fault nim for not being more mature given the amount of money poured into go and rust.
19:46:55shashlickIt's long boring tedious work but has to be done
19:47:33FromGitter<alehander92> shashlick you're right
19:47:41FromDiscord<Recruit_main707> > given the amount of money poured into go and rust.
19:47:43FromGitter<alehander92> but on the other hand : people working in their free time
19:47:54FromDiscord<Recruit_main707> and nim still is probably better than both
19:48:00FromGitter<alehander92> it's kinda expected that would want to work on more interesting stuff big % of it
19:48:22FromGitter<alehander92> still some balance
19:48:34FromGitter<alehander92> would be cool!
19:49:10FromDiscord<dom96> It’s understandable. Bug fixes burn people out quickly.
19:49:35disruptekcompiler work burns me out quickly. i'm good for 4-5 days, maybe.
19:50:47shashlickFrankly, if you are using Nim in any capacity, at least 5% of your time is warranted in fixing issues of some sort
19:51:04shashlickCause Nim's future depends on it
19:51:13disruptekdoes it?
19:51:38FromDiscord<Recruit_main707> at least in reporting them
19:51:40shashlickI will admit myself that it's annoying when issues block my progress
19:52:21FromGitter<alehander92> people are free to do whatever we can't really force %
19:52:27FromGitter<alehander92> incentives are better
19:52:53FromGitter<alehander92> i think the component owner thing was somtething like that
19:53:03FromGitter<alehander92> but i hardly look at jsgen bugs currently
19:53:16FromGitter<alehander92> so i am not sure how clear is all that
19:54:35shashlickContribute something, bug reports are all great but that only increases the work
19:55:14disruptekit doesn't increase the work; it narrows it.
19:55:27disruptekyou won't work on new features if core features don't work.
19:56:16shashlick5000 issues aren't better than 2000 if you can't get to fixing them
19:56:33disruptekare you in favor of stalebot, then?
19:56:52federico35k issues are much better than 2k issues
19:57:46shashlickFactually that's true
19:58:04federico3even if you have time to fix only 10
19:58:18shashlickBut I'm talking about people feeling that they are doing some service by submitting issues
19:58:25federico3they do
19:58:39disruptekeven if they are dupes, i'd like to see them.
19:58:42shashlickThere's no shortage of that, not that testing isn't crucial
19:58:56disrupteki have a huge shortage of issues.
19:59:12federico3they help other users understand if they are seeing the same bug and save their time chasing the bug, which benefits the project
19:59:32disruptekthey even help people that don't encounter the bug.
19:59:50shashlickI have just 20 in nimterop and they are too many
20:00:28disruptekno one said you aren't ambitious.
20:00:53shashlickI'm not saying issues are bad, I'm saying don't feel that's sufficient to make Nim better
20:01:18disruptekno, it's not.
20:03:03*JustASlacker joined #nim
20:04:03disruptek/home/adavidoff/nims/lib/pure/collections/critbits.nim(25, 14) Error: internal error: ReplaceTypeVarsN: when condition not a bool
20:04:08disruptekshashlick: what should i do?
20:06:49shashlickCheck the issue tracker, if there's an issue already with a workaround, celebrate
20:07:07shashlickIf no workaround, find one and update the issue
20:07:20shashlickIf no issue open one and sit
20:11:41*JustASlacker quit (Ping timeout: 256 seconds)
20:33:12*natrys quit (Quit: natrys)
20:33:42*Trustable quit (Ping timeout: 265 seconds)
20:34:05*Trustable joined #nim
20:35:15Zevvbecause 50 issues is better than 20
20:36:07disruptekit's a cligen bug, apparently.
20:37:05FromDiscord<Elegant Beef> oooh we're talking about stalebot!
20:39:33Yardanicooooooooooh
20:39:52FromDiscord<Elegant Beef> Indeed yard, i still dont quite grasp the closing of issues ;D
20:41:11*JustASlacker joined #nim
20:41:18*vicfred joined #nim
20:41:21FromDiscord<dom96> stalebotstalebotstalebot
20:41:35Yardanicojust disable issues in the repo looooooooooool
20:42:20FromDiscord<Elegant Beef> Yard i think your `o` key is broken 😛
20:42:31Yardanicoit's nooooooot
20:53:26*opal quit (Remote host closed the connection)
20:54:35*opal joined #nim
20:56:56FromDiscord<dom96> brb hacking into github to remove all Nim issues
20:57:37*FromDiscord quit (Remote host closed the connection)
20:57:53*FromDiscord joined #nim
21:01:54*Yardanico is now known as Yardanico_
21:01:56*Yardanico_ is now known as Yardanico
21:08:05FromDiscord<lqdev> damn no stalebot
21:08:16FromDiscord<lqdev> it only pisses people off
21:08:31FromDiscord<lqdev> i mean what are you supposed to do when stalebot sends you a message that the issue will be closed
21:08:35FromDiscord<lqdev> bumping is kind of rude
21:08:58FromDiscord<lqdev> so it may close issues that are perfectly valid and still a problem
21:12:02*JustASlacker quit (Ping timeout: 260 seconds)
21:12:53shashlickMy point wasn't about stalebot - issues are great - it means the product is useful but for OSS, also contribute some time to help out beyond reporting issues
21:13:05disrupteki won't do it.
21:13:40shashlickthere's no compulsion or rule, just the reality
21:14:23disrupteki'm hoping to be adopted by another sugarmomma.
21:15:00FromDiscord<dom96> > bumping is kind of rude↵In this context bumping would not be rude... since the bot already bumped the issue.
21:15:43disruptekthat's the rude part.
21:22:51FromDiscord<dom96> works pretty well for all these successful programming languages 😛
21:23:44disruptekso about that patch... if i wanted to write c# i still can.
21:23:55disruptekTHIS
21:23:56disruptekIS
21:23:57disruptekNIM
21:24:48FromDiscord<dom96> Nah, it's about time I reverted to my past self and started using VB.NET again.
21:28:59disruptekhmm, a vb.net backend for nim, you say?
21:29:07Yardanicoyou mean an IL backend for nim
21:30:13*solitudesf quit (Ping timeout: 264 seconds)
21:34:18FromGitter<Knaque> Is there a thing for getting the longest string in an array?
21:34:38FromGitter<Knaque> /sequence
21:34:55YardanicoI think there wouldn't be anything better than a loop + max len check
21:35:04Yardanicomaybe you can use some special data structure to do it more efficiently though
21:38:03*vikfret_ quit (Quit: Leaving)
21:46:33FromGitter<deech> If I'm writing a library how do I see the generated C/C++ for all the functions without creating an executable?
21:47:19disrupteknim c --app:lib
21:47:44FromGitter<deech> Thanks!
21:47:51FromDiscord<Recruit_main707> that will create a dll
21:48:14FromDiscord<Recruit_main707> `--compileOnly` exists? or its a product of my mind?
21:48:17disrupteknim c --compileOnly:on
21:48:31Yardanico@deech nim c --noLinking:on I think
21:48:37Yardanicoah right disruptek is right
21:48:39FromDiscord<dom96> lol
21:48:39disruptekeither one.
21:48:48FromDiscord<dom96> anyone else with a different answer?
21:48:56FromDiscord<Recruit_main707> help 100
21:49:00FromGitter<deech> Is there `nimble ...` equivalent?
21:49:07Yardanico... ?
21:49:11Yardanicoph
21:49:12Yardanicooh
21:49:19FromDiscord<dom96> nimble c --compileOnly
21:49:22FromDiscord<Recruit_main707> i think you can also pass it the same flags
21:49:23FromDiscord<Recruit_main707> ye
21:49:39disruptekif you're making a lib --app:lib is probably the most useful.
21:49:53FromDiscord<dom96> is you're making a `dll`
21:50:04FromDiscord<dom96> someone could be making a lib that isn't meant to be distributed as a dll
21:50:16disruptek--app:staticlib
21:50:36FromDiscord<Recruit_main707> :smart:
21:51:26FromGitter<deech> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5f4041de5580fa092b1590ff]
21:52:03FromDiscord<Recruit_main707> that error is in your code very likely
21:52:18disruptekhe's using nimble like it's still 2012.
21:52:26disruptekcan't say i blame him; 2020 sucks the big donkey dick.
21:52:34FromGitter<deech> Haha, I'll get around to nimph.
21:52:39FromDiscord<dom96> > that error is in your code very likely↵don't think so
21:52:52FromDiscord<dom96> does `nimble c --compileOnly` work?
21:53:08FromGitter<deech> Same
21:53:14disruptekyou should wait on nimph. it's diverging in a big way the moment. maybe you won't like what it becomes.
21:53:17FromDiscord<dom96> `nimble -v`?
21:53:54FromGitter<deech> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5f404271ddc2d041c0bb4d6a]
21:54:43FromGitter<deech> disruptek, what are you planning?
21:54:56silvernode[m]Does anyone know of a comprehensive page I can go to and learn how to write a website with nim?
21:55:15FromDiscord<dom96> deech: works for me on 0.11.0
21:55:23FromGitter<deech> hrm ...
21:55:28silvernode[m]trying to figure out how to use the javascript feature in nim and use it to make a webpage.
21:55:36FromDiscord<dom96> shashlick: possible regression? ^
21:56:31disruptekdeech: it's losing the nimble requirement and becoming even more agnostic.
21:57:27FromDiscord<dom96> Can't wait for nimph 3.0, I hear it won't even require Nim anymore.
21:57:38disrupteksounds amazing.
21:57:55disrupteki mean, nimph already doesn't require nim.
21:57:56FromGitter<deech> disruptek, that does sound pretty divergent to put it mildly.
21:59:37disruptekit just uses submodules now, so it's super fast. no nimscript, no subprocesses.
22:01:14disruptekshallow repositories should be arriving this year.
22:09:09*FromDiscord quit (Remote host closed the connection)
22:09:24disruptekah nimph requires nim for choosenim support. welp, one more thing to rip out.
22:09:25*FromDiscord joined #nim
22:09:52*Trustable quit (Remote host closed the connection)
22:15:42FromDiscord<dom96> argh, it sucks that we have no streams for sockets https://github.com/nim-lang/irc/pull/20
22:15:43disbotAdded TOR support
22:16:09*Vladar quit (Quit: Leaving)
22:16:33*lritter quit (Quit: Leaving)
22:19:17FromDiscord<dom96> or rather that Nim's standard library avoids interfaces like the plague
22:20:35shashlickdeech - i don't see the issue with latest nimble cc dom96
22:20:58shashlickare you using nim devel
22:22:28*JustASlacker joined #nim
22:23:11*thomasross joined #nim
22:24:57shashlickI fixed this recently - https://github.com/nim-lang/nimble/issues/818
22:24:59disbot`nimble doc` failed with UnpackError ; snippet at 12https://play.nim-lang.org/#ix=2uR2
22:28:01*Zectbumo joined #nim
22:33:14FromDiscord<Varriount> @dom96 The stdlib definitely needs more interfaces
22:35:09FromDiscord<Varriount> Though, ideally it would be possible to have interface be a compile time concept as much as a runtime one (that is, devirtualization would be predictable and excellent)
22:36:33FromGitter<deech> Why does nimble ignore env vars? eg. in `INCLUDE_PATH=a/b/c nimble cpp ...`, `a/b/c` is not searched for headers.
22:37:23FromDiscord<dom96> I don't think that's Nimble
22:37:48FromGitter<deech> Is it that it kicks off a process that doesn't have the current env?
22:38:13shashlickwhat do you expect to use INCLUDE_PATH
22:38:39FromDiscord<Varriount> @dom96 For example, a `proc addAll(s: seq[IAddable]): IAddable` would work on both `seq[IAddable]` and `seq[int]`, without requiring that `seq[int]` be converted.
22:38:59FromGitter<deech> Writing C bindings, I expect `{.headers: ... .}` to look there.
22:40:19disrupteki think we should copy the env.
22:40:21shashlicknimble => nim => gcc
22:40:26FromDiscord<dom96> deech: don't think so, the env should be copied.
22:40:28FromDiscord<Varriount> deech: Not if you're using a dynlib
22:40:49shashlickunless gcc looks at INCLUDE_DIR, i don't know if it idoes
22:41:44FromGitter<deech> Also tried with C_INCLUDE_PATH
22:42:07FromDiscord<Varriount> What about CFLAGS?
22:42:12disruptekCFLAGS="-I/some/path" could be expected to work.
22:42:15shashlickuse --passC if you want to pass something to gcc
22:42:20disrupteki wonder if the env is even being copied, though.
22:42:41shashlickbut CFLAGS might not be used by gcc by default, usually make forwards it right
22:43:15FromDiscord<Varriount> No, I've used it without make
22:43:28shashlickenv is copied
22:43:29disruptekyeah, it's not a make thing.
22:43:33shashlickokay cool
22:43:43disruptekdeech: CFLAGS should work, then.
22:43:48shashlicknimble uses execCmd and execCmdEx
22:44:28disruptekwhen you stuff the NIMBLEDIR, that doesn't replace the env, right? it's additive?
22:44:52shashlicki just use putEnv
22:44:55shashlickshouldn't affect other things
22:45:11disruptekokay.
22:45:13FromDiscord<dom96> It astounds me how dumb CI systems are. Failure because you can't connect to GitHub? wtf
22:54:45*JustASlacker quit (Ping timeout: 240 seconds)
22:55:21*tane quit (Quit: Leaving)
22:59:19FromDiscord<Elegant Beef> I mean my unity build system relies on git repos, so if github went down it wouldnt work 😄
23:03:13shashlickIt's not just github, you could have issues with the host network itself
23:04:24FromDiscord<Momiyama> sent a code paste, see https://play.nim-lang.org/#ix=2uRb
23:08:27*JustASlacker joined #nim
23:13:58federico3dom96: is this still valid against master? https://github.com/nim-lang/nimble/pull/459
23:13:58disbotAdd SSL certificate check handling
23:16:37shashlickDoesn't show any merge conflicts
23:18:12disruptekshashlick: quick question; if you cannot answer quickly, i'll look it up:
23:18:25disruptekwhat constitutes a valid package name in a requires "..." statement?
23:19:39disrupteki would want to be able to determine if package names are equal or invalid, for example.
23:21:23shashlickhttps://github.com/nim-lang/nimble#dependencies
23:22:15disruptekright, so there are no limits on the names.
23:22:25disrupteknames can have spaces, hyphens, any characters.
23:22:26shashlicki think you can also just do `requires "abc"` , not sure though
23:22:37shashlickurls work too
23:22:43shashlickbut i don't think spaces will work
23:22:44FromDiscord<dom96> there are limits
23:23:11FromDiscord<dom96> it needs to be a valid Nim identifier
23:23:18FromDiscord<dom96> so no hyphens
23:23:42disruptekare package names compared style-free, etc?
23:23:49shashlickhttps://github.com/nim-lang/nimble/blob/master/src/nimblepkg/version.nim#L216
23:23:51FromDiscord<dom96> yeah, they should be
23:24:00disruptekhttps://github.com/nim-lang/nimble/blob/master/src/nimblepkg/packageparser.nim#L55
23:24:27disruptekit would be ideal if we could make them valid-nim-identifier-only but i have my doubts that this is the current ruleset.
23:25:24disruptekbut that's what the comments say, so that's what i'll go with. that's great. thanks, guys.
23:25:40FromDiscord<dom96> You've got the code, you can see the rules precisely
23:26:26disruptek"" is a valid name according to the code, but... w/e.
23:27:45FromDiscord<dom96> of course, that's my favourite package
23:27:47FromGitter<gogolxdong> https://jobs.lever.co/protocol
23:27:52disrupteklol
23:28:06disruptek!repo ""
23:28:07disbothttps://github.com/nim-lang/Nim -- 9Nim: 11Nim is a compiled, garbage-collected systems programming language with a design that focuses on efficiency, expressiveness, and elegance (in that order of priority). 15 9843⭐ 1051🍴 7& 29 more...
23:28:14disruptekit's a good one.
23:28:20disrupteki use it all the time.
23:30:27FromGitter<gogolxdong> Job list of protocol libs , any insterest to join?
23:32:04FromGitter<gogolxdong> labs, sorry.
23:34:58FromGitter<gogolxdong> It would be great someone using Nim to join.
23:35:43disrupteki've submitted my resume in the past for, like, tech writing roles, and didn't even get a reply. so i'm unlikely to pursue a technical role.
23:37:39FromGitter<gogolxdong> that's sad.
23:38:26disruptekprobably for the best.
23:40:40FromGitter<gogolxdong> You are one of the best.
23:40:55disrupteki'm dangerous.
23:41:45disrupteki /just now/ tracked down cmpIgnoreStyle.
23:41:52disruptekthat's how little i give a fuck.
23:42:07*krux02__ joined #nim
23:42:47*krux02__ is now known as krux02
23:44:48*krux02_ quit (Ping timeout: 260 seconds)
23:44:53FromGitter<gogolxdong> :)
23:48:09shashlickIt's Friday, time to chill
23:48:26shashlickLocal deps is merged into nimble
23:48:33disruptekyou earned it this week.
23:54:17*awe004 quit (Ping timeout: 265 seconds)