<< 31-08-2018 >>

00:07:08krux02shashlick, I use established editors to write simple tests
00:07:20krux02I bound f8 to open /tmp/scratch.nim
00:07:27*maskedlua8 joined #nim
00:07:32krux02I put my simple tests in there
00:07:38*maskedlua8 quit (Remote host closed the connection)
00:12:15*craigger quit (Ping timeout: 244 seconds)
00:12:54*craigger joined #nim
00:14:54*craigger_ joined #nim
00:17:39*craigger quit (Ping timeout: 252 seconds)
00:21:06Tangernoonien, o7
00:21:25TangerOops, wrong channel. Hi though XD
00:24:41*PrimHelios joined #nim
00:25:25PrimHeliosI get the warning "Warning: 'matchIter' is not GC-safe as it calls 'mytest' [GcUnsafe2]" when compiling this code https://pastebin.com/NE2hfhmx anyone know what the issue is?
00:26:12*shenglong9 joined #nim
00:31:56TangerPrimHelios, I think it could be that it's returning a literal string
00:32:15TangerPrimHelios, https://stackoverflow.com/questions/49196841/warning-matchiter-is-not-gc-safe-as-it-accesses-x-which-is-a-global-using-g - Could be the same issue
00:32:26TangerWith a better explanation for sure :P
00:34:09*shenglong9 quit (Ping timeout: 252 seconds)
00:36:37PrimHeliosI've read that one, and I'm not quite sure how I would apply that solution to this issue though
00:36:50PrimHeliosI thought marking the proc as gcsafe would fix it, but I gues snot
00:39:37PrimHeliosAh, fixed it. The function declaration wasn't marked gcsafe and that was the issue
00:45:27AlexMaxIf I put a ref object into a sequence, I'm guaranteed that the addr of the object won't change out from under me, correct?
00:45:32TangerHaha, that'll do it
00:45:37AlexMaxunless I delete it from the sequence?
00:46:08AlexMaxI can do `addr myseq[4]` and as long as the ref object isn't deleted from the sequence, I'm cool?
00:59:06FromGitter<kayabaNerve> Nim doesn't have an event based programming lib, right?
00:59:08FromGitter<kayabaNerve> More even
00:59:21FromGitter<kayabaNerve> *not even in the nimble-verse?
01:08:49AlexMaxYeah, I don't think that works ... just to test I ran setLen(seqs, 100) and got a sigsev
01:09:25AlexMaxso I must be getting the location of the seq address, not the address of the object itself
01:10:40AlexMaxand when it reallocates, poof
01:11:36leorizeAlexMax: if you `addr` a `ref object`, you're getting the address of the address of the object
01:14:11AlexMaxleorize: But if I remove the 'addr' and try and cram the object into a type property meant for a 'ptr Foo', the compiler complains that I supplied it a Foo and not a ptr Foo
01:14:44leorizeptr and ref are not compatible
01:15:15FromGitter<ephja> foo[x][].addr?
01:15:42AlexMaxdoesn't matter, if I change the type property to a ref Foo, it complains I didn't give it a ref foo
01:16:05FromGitter<ephja> [] to dereference
01:16:09leorizewhat're you trying to do?
01:16:46AlexMaxBasically, I want four sequences that contain ref objects
01:17:00AlexMaxAnd I want those sequences to "own" the objects
01:17:03FromGitter<ephja> and then you get an untraced pointer to the object pointer to by the ref, unless I got that wrong in case that's not what happens :-P
01:17:12*SenasOzys quit (Ping timeout: 250 seconds)
01:17:16AlexMaxephja [] is the wrong way, that's a derference, not a reference
01:17:18FromGitter<ephja> *pointed to
01:17:56AlexMaxand I want objects in those sequences to be able to refer to other objects from one of the other sequences
01:18:07leorizeAlexMax: this is not Rust, we don't "own" a ref :)
01:18:25*krux02 quit (Remote host closed the connection)
01:18:30leorizejust assign the ref to a seq and the GC will know not to free it
01:19:22AlexMaxOwnership is still a useful mechanism, though, even if it's not expressed through the type system (yet)
01:19:57leorizeownership only matters for non-GC environment
01:19:59AlexMaxand I'm thinking of c++
01:20:39AlexMaxleorize: It does matter, because if I delete an object from one of the sequences, I don't want an errant reference from an object in one of the other sequences to keep it alive
01:20:52AlexMaxIt _should_ go away
01:21:05leorizethen you're looking at ptr
01:21:06leorizenot ref
01:21:18AlexMaxwhich is what I already have ;)
01:21:38leorizeref will only be collected when no one use it anymore
01:21:45AlexMaxthese are my four objects
01:22:00AlexMaxhttps://paste.ee/p/us2ed
01:22:19AlexMaxThe objects themselves are 'ref' which means they should always be allocated on the heap, which is what I want
01:22:28AlexMaxbut the references to other objects are all 'ptr'
01:22:47AlexMaxand I have four sequences, one for every type of object
01:23:13AlexMaxhttps://paste.ee/p/pgsrD
01:23:48FromGitter<rayman22201> why don't you want ref all the way down? you want to allow dangling pointers?
01:24:43leorizeAlexMax: if you want to make sure it's deleted everywhere, the best way is to use `ref` and make sure a `ref` is not kept somewhere
01:25:13leorizeusing `ptr` won't be wise. If any part of your code touch the freed `ptr`, you're toast
01:25:23AlexMaxwait a minute, my four sequences
01:25:30AlexMaxthey're var vertexes*: seq[Vertex] = @[]
01:25:39FromGitter<ephja> mmmm toast
01:25:47AlexMaxdo they need to be seq[ref Vertex] or something?
01:26:17leorizeif you want to keep a `ref`, yes
01:26:36AlexMaxOh. I thought that 'ref object' magically made all uses of that object ref
01:26:42AlexMaxor something
01:26:48leorizebut shouldn't the object definition for Vertex and friends be `ref object` instead?
01:27:03leorizethen you won't have to change the seq definition
01:27:04AlexMaxThey are
01:27:10FromGitter<ephja> but where does "ref object" appear?
01:27:17leorizeAlexMax: from the paste, they aren't
01:27:17FromGitter<ephja> I don't see it
01:27:22AlexMaxoh, sorry
01:27:24AlexMaxmy paste is out of date
01:27:27AlexMaxsilly me
01:27:28AlexMaxsorry
01:27:44AlexMaxhttps://paste.ee/p/UBINZ
01:28:08leorizeyou will want to remove `ptr` from Line
01:28:29leorize`ptr` in that case means "a pointer to a reference of an object"
01:29:11AlexMaxYou mean from Sector, Vertex and Side definitions in Side and Line?
01:29:28leorizeyes
01:29:34FromGitter<rayman22201> I don't think you want ptr anywhere in those defs
01:31:00*SenasOzys joined #nim
01:33:55AlexMaxOkay, my program compiles and runs as long as I don't force my sequences to allocate
01:34:08AlexMaxBut if I allocate all of the sequence lengths to 100, the program still dies
01:35:07FromGitter<rayman22201> Are the objects always going to exist inside seqs? what if you keep indexes instead of refs?
01:35:11*dddddd quit (Remote host closed the connection)
01:35:48AlexMaxI mean I _guess_ I could use indexes, but it makes accessing layers cumbersome
01:36:12FromGitter<rayman22201> it's actually a common pattern used in situations like this.
01:36:34AlexMaxYeah, if your language doesn't have pointers of any sort :P
01:36:42AlexMaxBut Nim isn't QBasic
01:36:44AlexMax:P
01:36:56leorizeAlexMax: a program shouldn't die if you alloc 4 seq to len 100
01:37:01FromGitter<rayman22201> no. Jonathan Blow talks about using it in Jai, and it's used in game programming often
01:37:23FromGitter<rayman22201> and Araq has a stream where he does it with Macros here: https://www.youtube.com/watch?v=EC9zCXlvY2k
01:37:25TangerAlexMax: Can you post a stack trace from when you alloc the seq to 100?
01:37:28AlexMaxleorize: It's not the alloc that kills it, it's that the alloc seems to break all the references
01:37:40AlexMaxand when i try to use one of those references, the program goes boom
01:37:48leorizethat's not possible
01:38:05leorizecan you give us a toy example?
01:38:35AlexMaxOkay, one sec
01:43:25vivuscan I access a global variable inside a proc?
01:43:33AlexMaxhrm, my toy example doesn't boom
01:43:36leorizevivus: you can
01:43:46leorizeAlexMax: chances are you're accessing it wrong :P
01:45:13AlexMaxHow can I be accessing it wrong?
01:45:39leorizehow're you using the `ref`s actually?
01:45:55vivusdoes nim use indentation as syntax?
01:45:59AlexMaxwait a minute, I have a sneaky suspicon about something
01:46:07leorizevivus: yes, it does
01:46:15FromGitter<ephja> are the references null?
01:46:23vivusleorize: it's 2 spaces right?
01:46:35AlexMaxyes, but I check for is nil
01:46:45leorizevivus: any amount, but have to be spaces
01:47:01leorize2 spaces is widely used in Nim however
01:47:29leorizeAlexMax: maybe try to run a debugger
01:47:43AlexMaxah
01:47:45leorizeshouldn't the stacktrace give away where the bug occurs?
01:47:54AlexMax if isNil(line.back):
01:47:59AlexMaxthat's what is bugging out
01:48:29leorizetoo bad `not nil` is now experimental
01:48:42AlexMax...but it only bugs out if I setLen the four sequences to 100
01:49:00AlexMaxIf I leave the sequences alone, I get no crash
01:49:26leorizeaccessing nil is always undefined behavior
01:49:42AlexMaxWell, the backside of a line is optional
01:49:46leorizealthough I'm suprised that `nilcheck` didn't catch it
01:50:10AlexMaxif I were building this with pointers, I'd just use a nil pointer and be done with it
01:50:15FromGitter<ephja> is 'line' null?
01:50:28AlexMaxshouldn't be
01:50:33AlexMaxthe line above it is for index, line in level.lines:
01:50:41AlexMaxOH BUGGER
01:50:52AlexMaxno wonder!
01:50:59AlexMaxwhen i setLen to 100
01:51:07AlexMaxI'm iterating over those non-existant lines too
01:52:03leorizeand that's why we need `not nil`
01:52:11AlexMaxand that's where my null pointer dereference comes from I bet
01:52:22AlexMaxman I'm a doofus
01:52:29leorizedo you actually need Line to be a `ref object`?
01:52:53AlexMaxleorize: I was hoping I could use the location of the object in memory as its 'hash'
01:53:05leorizeyou can
01:53:18leorizeimplement hash() for it
01:53:22AlexMaxbut for that to work, it needs to be heap-allocated
01:53:39AlexMaxI don't ever want to accidentally allocate one of thsoe objects on the stack
01:54:13AlexMaxor for it to move around in memory somehow
01:54:31leorizethey sure won't move :)
01:55:45AlexMaxMan, I have this uneasy feeling that wheN I changed all of my data structures, I'm now actually making copies of the objects everywhere, invisibly
01:56:04vivushow do I loop through each line in a file?
01:56:15AlexMaxone way to find out
01:56:35AlexMaxleorize: thanks for your time
01:56:45AlexMaxeven though it ended up being a pebkac
01:57:05leorizewe all have those time, don't we? :)
01:57:37leorizevivus: use the lines() iterator https://nim-lang.org/docs/system.html#lines.i,string
01:58:26vivusman, I tried getting nim.vim to work, but it does nothing. no autocomplete or gotodefinition either
01:58:41AlexMaxvivus: vim compiled with python support
01:58:42AlexMax?
01:59:08vivusAlexMax: system vim. ubuntu 18.04
02:00:23leorizenim.vim autocomplete requires nim idetools, which is deprecated long ago
02:00:27*SenasOzys quit (Ping timeout: 240 seconds)
02:00:43vivusleorize: yeah I saw that issue and was wondering if it was fixed
02:01:31leorizeyou can try to merge this to your tree https://github.com/zah/nim.vim/pull/73
02:02:08FromGitter<ephja> consider trying nvim-nim with this patch https://github.com/baabelfish/nvim-nim/pull/51
02:02:23FromGitter<ephja> the original author is nowhere to be seen though. time for a fork maybe
02:03:59vivus@ephja does nvim-nim support a vundle install?
02:05:06leorizeit does
02:05:49vivusboth of them don't seem to work though without using a patched (and untested) version
02:06:00vivus@ephja do you use nvim?
02:06:45FromGitter<ephja> hm ok. I just load plugins with packadd
02:06:57vivusyou using neovim?
02:07:01leorizevivus: you need nimsuggest for autocomplete to work
02:07:10vivusleorize: I have that on my PATH
02:07:35leorizethen probably you need neovim
02:10:19FromDiscord<treeform> Araq, looking into nimedit, git clone, compiled it... now I need to find all the DLLs. There needs to be a way to include binary dlls in nimble packages.
02:12:48FromGitter<kaushalmodi> Anyone knows of there's a Nim library that does line filtering from multi line text, interactively like this: https://github.com/peco/peco
02:13:03FromGitter<kaushalmodi> .. or something close?
02:14:17FromGitter<kaushalmodi> I'm working on a CLI app. In some use cases, the app spits out hundreds of lines prefix with an index and the user then needs to type the index manually to pick a line.
02:14:31FromDiscord<treeform> kaushalmodi, I have not seen anything like this. But I don't think its hard to make.
02:14:57FromGitter<kaushalmodi> It's not hard to make?!
02:15:38FromGitter<kaushalmodi> I glanced through the peco source code. I don't know Go, but the code base looks too complicated and too many lines.
02:16:47FromGitter<kaushalmodi> treeform: Can you give me pointers to what to need to learn to make something like peco.
02:17:53FromGitter<ephja> vivus: trying it again. now to see if I can get the symbol list to appear again
02:18:14leorizekausalmodi:
02:18:23vivusill try 1 of the nim.vim PRs tomorrow
02:18:27leorizekaushalmodi: you need to learn ncurses
02:19:42FromGitter<kaushalmodi> Hmm, I know it only by name, using it in the ncdu app. But the peco app doesn't use ncurses.
02:20:07FromGitter<ephja> neomake integration works, except for neomake#configure#...
02:20:22FromGitter<kaushalmodi> leorize: You think it bakes in parts of that library?
02:20:52leorizeInteractive TUI is usually made with ncurses
02:20:58FromGitter<ephja> nope, works now. lol
02:21:17leorizekaushalmodi: for scanning through lines, you can use pegs or regex
02:23:49*vivus quit (Remote host closed the connection)
02:24:29FromDiscord<treeform> kaushalmodi, I think I had a script that did almost this, let me find it.
02:26:03FromGitter<kaushalmodi> treeform: thanks
02:26:45FromGitter<kaushalmodi> leorize: I don't think ncurses would be needed. It's seems too heavyweight for only line filtering that I want.
02:27:32leorizeoh you were only looking at line filtering, I thought you were looking at how to implement the app
02:27:35FromGitter<kaushalmodi> I had come across this awesome C CLI app (another of the many languages I don't know :)): https://github.com/p-gen/smenu/blob/master/smenu.c
02:27:40FromDiscord<treeform> Hmm I can't find it. It must be on my other computer.
02:27:48FromGitter<kaushalmodi> It doesnt seem to use ncurses
02:27:51leorizekaushalmodi: then PEGs and regexes are your friend on line filtering
02:28:01FromDiscord<treeform> kaushalmodi, I don't think its that hard, you can just do it with VT100 escape codes
02:28:05FromDiscord<treeform> https://www.csie.ntu.edu.tw/~r92094/c++/VT100.html
02:28:11FromDiscord<treeform> write a code to move down the line
02:28:16FromDiscord<treeform> print out what you need.
02:28:20FromDiscord<treeform> then move the cursor back
02:28:28FromGitter<kaushalmodi> treeform: oh man, you should have used git and pushed it somewhere, or blogged about it. :)
02:28:41FromDiscord<treeform> kaushalmodi, it was too simple to push
02:32:16FromGitter<kaushalmodi> I have played with cursor moving and line deletion. But what I want could be more involved.
02:32:53FromGitter<kaushalmodi> As I type, I want the list to reduce, and as I backspace, reduce the filtering chars, the list should expand again.
02:33:10FromGitter<kaushalmodi> See the peco demo.
02:33:23leorizeagain, ncurses is infamous for TUI if you don't want to implement your own library
02:33:52leorizeit supports callbacks on events, which you could use to implement what you want
02:35:07FromDiscord<treeform> kaushalmodi, ill help you out, Ill write some thing give me a minute or 10
02:35:51FromGitter<kaushalmodi> leorize: Based on the ncurses apps I have used, I know that ncurses can do it. It's just that I have 0 experience in C, and that would be a huge learning curve. I might just start understanding the peco and smenu projects and start converting one of them to Nim as I learn and find time.
02:37:29FromGitter<kaushalmodi> treeline: Thank you. I am not at my computer at the moment. So I'll get back to your example tomorrow. There is no hurry.
02:38:10FromGitter<kaushalmodi> This is a rough spec of what I am thinking..
02:38:53FromGitter<kaushalmodi> echo "a\nb\nc" | nim_app
02:39:43FromGitter<kaushalmodi> In the Nim app, a readLine is continually monitoring the key inputs and updating the filtered display, till I hit Enter.
02:39:55FromGitter<kaushalmodi> If I type a, I see just "a"
02:40:13FromGitter<kaushalmodi> Then if I backspace and type "c", I see just see
02:40:56FromGitter<kaushalmodi> Here's the back story for anyone interested: https://github.com/kaushalmodi/ntodo
02:41:17FromGitter<kaushalmodi> Using Todoist API, I can now get a list of all my tasks.
02:41:24FromGitter<kaushalmodi> But there are hundreds of those.
02:41:42FromGitter<kaushalmodi> I can even delete a task, but there's no way to interactively select one.
02:42:26FromGitter<kaushalmodi> Right now, I list all, prefix with number line, scroll and find the task index I want to delete and then type that out.
02:42:36FromGitter<kaushalmodi> .. not very practical, and also error prone
02:43:05FromGitter<kaushalmodi> With this filtering applied, I can pass the multiline string to this filter
02:43:32FromGitter<kaushalmodi> And if I want to delete task "foo", I just type "foo" and hit Enter. Done.
02:55:13FromDiscord<treeform> This is what I have for you: kaushalmodi https://gist.github.com/treeform/516726cae2b7ffbd7a0aaa757595ac65
02:56:06FromDiscord<treeform> I don't know about the whole UI part, but I got the auto complete part
02:56:29FromDiscord<treeform> if you are not on windows, you would need to replace the wgetche with linux version
02:58:10FromGitter<kaushalmodi> Yup, will hack with it.
02:59:34FromGitter<kaushalmodi> Hmm, Gitter app is acting up? I cannot see the last message thanking you and saying that I'll be trying this tomorrow.
03:00:06FromDiscord<treeform> I don't know???
03:00:15FromDiscord<treeform>
03:00:16FromDiscord<treeform> https://cdn.discordapp.com/attachments/371759389889003532/484920326514540564/2018-08-30_19-58-47.mp4
03:00:21FromDiscord<treeform> Here is a vid of it in action
03:00:33FromDiscord<treeform> sorry about the left side
03:02:24*genera joined #nim
03:07:16*genera quit (Remote host closed the connection)
03:07:45FromGitter<kaushalmodi> That looks very cool, and looks like it would work for my use case. I'll try that out with combination of taking in a multiline string and filtering it using nim-regex or something. Many thanks!
03:10:40FromGitter<kaushalmodi> treeform: On Windows, I use Licecap to record GIFs only from regions I manually select: https://www.cockos.com/licecap/
03:29:15*cspar joined #nim
03:36:39*kapil___ joined #nim
03:41:43*noonien quit (Quit: Connection closed for inactivity)
03:42:27FromGitter<dlutton> anyone know any good free hosting solutions for a nim project?
04:05:59FromDiscord<treeform> dlutton, like github?
04:06:38FromDiscord<treeform> what are you hosting?
04:06:49FromGitter<dlutton> just a small app I made
04:07:31FromGitter<dlutton> which takes a post request and sends a response
04:09:26*thomasross quit (Remote host closed the connection)
05:01:59*miran joined #nim
05:19:01*nsf joined #nim
05:59:47FromGitter<mratsim> @rayman22201 I thought Jai was still in stealth mode
06:19:05*miran quit (Ping timeout: 244 seconds)
06:38:06FromGitter<kayabaNerve> I moved some code into a Nimble package. ⏎ Windows throws: ``` ⏎ Error: execution of an external compiler program 'gcc.exe -c -w -mno-ms-bitfields -DWIN32_LEAN_AND_MEAN -I.nimble\pkgs\secp256k1-0.1.0/secp256k1_wrapper -I.nimble\pkgs\secp256k1-0.1.0/secp256k1_wrapper/secp256k1 -I.nimble\pkgs\secp256k1-0.1.0/secp256k1_wrapper/secp256k1/src -DHAVE_CONFIG_H -IEmber/src/lib/Argon/include -g3 -O0 -gdwarf-3 -Os
06:38:06FromGitter... -INim\lib -o Ember\build\nimcache\core.c.o Ember\src\lib\Argon/src/core.c' failed with exit code: 1 ⏎ ⏎ Nim\lib\system\excpt.nim:78:46: error: unknown type name 'TNimType' ... [https://gitter.im/nim-lang/Nim?at=5b88e24d9c71d363c153fdfb]
06:38:37FromGitter<kayabaNerve> Anyone here able to help? 0_o
06:39:12*couven92 quit (Read error: Connection reset by peer)
06:39:40*couven92 joined #nim
06:40:06leorizeit would be better if you can give us a reproducible example
06:40:50leorizealso, check your windows gcc version
06:41:09FromGitter<kayabaNerve> That's why I said what Linux did.
06:41:37FromGitter<kayabaNerve> https://github.com/EmberCrypto/BN
06:42:09FromGitter<kayabaNerve> There's the Nimble package. ⏎ Here's getNil: https://github.com/EmberCrypto/BN/blob/master/src/BN.nim#L136
06:43:29leorizecan you give me an example code that use this module and cause the error?
06:45:14leorizeI tried a simple piece like this `import BN; echo getNil BN()`
06:45:19leorizeno problem here
06:48:37FromGitter<kayabaNerve> It's a GCC error on Windows, and a upgraded Nim compiler on Linux
06:48:38FromGitter<kayabaNerve> Sorry
07:03:02*xet7 joined #nim
07:03:53FromGitter<mratsim> maybe a side effect due to the not nil changes?
07:04:33FromGitter<mratsim> try renaming the function, it might be that there is a catch-all on ìsNil` identifier (which would be a bug, it should only catch seq and strings)
07:05:29*norok2 joined #nim
07:06:14FromGitter<ephja> GCC 6.3 or a newer version? there was some code that wouldn't compile with the newest version
07:08:50*norok2 quit (Remote host closed the connection)
07:10:08FromGitter<Araq> @mratsim seems unlikely.
07:10:24FromGitter<Araq> yay websocket's interface changed, nothing compiles anymore
07:10:24*druonysus quit (Quit: No Ping reply in 180 seconds.)
07:11:25*ChickeNES21 joined #nim
07:11:38*norok2 joined #nim
07:11:49*druonysus joined #nim
07:11:49*druonysus quit (Changing host)
07:11:49*druonysus joined #nim
07:12:21*ChickeNES21 quit (Remote host closed the connection)
07:13:24*norok2 quit (Client Quit)
07:14:09FromGitter<ephja> what are you doing with ws?
07:16:12FromGitter<Araq> nothing, I am only updating Ormin to compile with Nim devel
07:17:19*norok2 joined #nim
07:17:50FromGitter<Araq> `Warning: escape is deprecated [Deprecated]` oh bah, that's it
07:18:00FromGitter<Araq> I'm gonna de-deprecate `escape`
07:18:43FromGitter<mratsim> btw, what’s left for 0.19?
07:19:27FromGitter<mratsim> I think the new runtime should be enabled for at least 1 version before v1.0
07:19:52FromGitter<Araq> the new runtime is now spelt `--gc:destructors`
07:20:10FromGitter<Araq> and is off the critical path
07:20:25FromGitter<kayabaNerve> The Windows Nim compiler is before not nil; the Linux is a side effect.
07:20:56FromGitter<kayabaNerve> *Linux is after and a side effect.
07:22:07FromGitter<Araq> left for 0.19. well I'm checking code still compiles.
07:24:29FromGitter<Araq> Error: type mismatch: got <int literal(0)> but expected 'bool'
07:24:47FromGitter<Araq> gah, so this "VM turns bool into int" problem actually got worse, not better
07:25:26*norok2 quit (Remote host closed the connection)
07:28:56*Vladar joined #nim
07:31:21*PMunch joined #nim
07:31:54*norok2 joined #nim
07:32:18*norok2 quit (Client Quit)
07:32:31FromGitter<Araq> https://github.com/nim-lang/Nim/issues/7375 just got even higher priority...
07:36:19FromGitter<alehander42> yeah I hit that in one lib (and I think somebody hit it in zero-functional)
07:36:51FromGitter<alehander42> (the got int but expected bool)
07:39:48*eth25 joined #nim
07:44:34*eth25 quit (Remote host closed the connection)
07:48:04FromGitter<mratsim> enums are turned into int too
07:49:46*jjido joined #nim
07:52:40PMunchWhat a strange bug?
07:57:31FromGitter<mratsim> Artifact of the VM I guess, everything is an int
07:57:37*Guest74243 joined #nim
07:58:10PMunchAah, that makes sense
07:58:27*Guest74243 quit (Remote host closed the connection)
08:03:46*gmpreussner_ joined #nim
08:04:37*gmpreussner quit (Ping timeout: 246 seconds)
08:07:20FromGitter<Araq> not really, but the VM's data structure is effectively untyped
08:07:55FromGitter<Araq> and when you run Nim code on a CPU it's the same, so there will always be restrictions like that
08:08:11FromGitter<Araq> but I'm hunting a real regression here because Ormin used to compile
08:09:33*jjido quit (Ping timeout: 252 seconds)
08:24:53leorizeis there anyone with good windows knowledge around?
08:26:23FromGitter<Araq> hi
08:26:44leorizeI was going to ask for help with this PR https://github.com/nim-lang/Nim/pull/8624
08:27:17leorizethe Windows code looks OK to me but the test doesn't pass :/
08:27:29leorizebut then again, I'm not a windows user :P
08:32:21FromGitter<Araq> thanks for reminding me
08:47:30FromGitter<mratsim> @Araq, isn’t it related to https://github.com/nim-lang/Nim/commit/361a2d830aca1959d3dbc15d13bea31f89fcd0e2?
08:48:12FromGitter<mratsim> i.e. when requires bool but we get “int” from the VM
09:02:58FromGitter<Araq> exactly, but the `when` condition must be `bool`
09:05:52*arecaceae quit (Remote host closed the connection)
09:06:10*arecaceae joined #nim
09:09:54*stefanos82 joined #nim
09:10:33FromGitter<mratsim> So it’s code relying on a bug, not exactly a regression ;)
09:10:53FromGitter<mratsim> bug is fixed, code is broken :P
09:12:36FromGitter<alehander42> is there a way to forbid creating nimfr_ for a single function
09:14:03FromGitter<alehander42> calling nimfr_ *
09:16:06FromGitter<mratsim> use a template?
09:16:44FromGitter<Araq> .push: stackTrace:off ?
09:17:21FromGitter<alehander42> @mratsim i really need it to be a separate function
09:17:35FromGitter<alehander42> @Araq ah this should be it, thanks
09:23:11FromGitter<Vindaar> @Araq @mratsim I've been wondering, is this https://github.com/nim-lang/Nim/issues/8029 also related to the "bool converted to int" problem? As in uint8 converted to int but not back.
09:24:39FromGitter<mratsim> yes
09:25:16FromGitter<mratsim> when you pass from compiletime to runtime you need to use `newLit` otherwise the type is not saved and becomes int
09:26:31FromGitter<mratsim> integers might be a bit more tricky, I remember at one point having to use `NimNode(kind: nnkInt8Lit, intVal: foo)`
09:29:57FromGitter<Vindaar> I see. Will try that with this example :)
09:38:02*nhandler5 joined #nim
09:40:44*nhandler5 quit (Remote host closed the connection)
09:43:15FromGitter<Araq> yeah it's basically unfixable in the near future. We don't have the type information, it needs to become `macro m(): RealTypeHere`
09:43:32FromGitter<Araq> so that the compiler can annotate the ASTs back properly
09:57:56FromGitter<Vindaar> A little unfortunate, but it's not that big of a deal I guess. Maybe it should be mentioned in the macros documentation though?
09:58:27FromGitter<Vindaar> And indeed, replacing the ```result = quote do: `r` ``` with `result = newLit(r)` makes it work in the example above
09:59:19FromGitter<Araq> @Vindaar yeah, but first you need to confirm my workaround works :-)
10:00:09FromGitter<Vindaar> oh no, it doesn't work :O
10:00:35FromGitter<Vindaar> ahh, wait
10:00:37FromGitter<Vindaar> I'm confused
10:00:38FromGitter<Vindaar> maybe
10:01:35FromGitter<Vindaar> Yes, it does work. In the issue I mentioned above there's a bug (?) in the sense that it converts the characters to integers (which might well be what the OP of that issue wanted)
10:01:58FromGitter<Vindaar> I was confused that I suddenly got the `ord` values of my numbers I put in my dummy `resources.bin`
10:20:49*dddddd joined #nim
10:25:40*kapil___ quit (Quit: Connection closed for inactivity)
10:51:55*spymasterd[m] quit (Remote host closed the connection)
10:51:58*endes[m] quit (Read error: Connection reset by peer)
10:51:58*SolitudeSF[m] quit (Read error: Connection reset by peer)
10:51:58*xomachine[m] quit (Read error: Connection reset by peer)
10:51:59*TheManiac[m] quit (Read error: Connection reset by peer)
10:52:01*toofly[m] quit (Remote host closed the connection)
10:52:01*jaens[m] quit (Remote host closed the connection)
10:52:02*unclechu[m] quit (Write error: Connection reset by peer)
10:52:04*syntonym[m] quit (Remote host closed the connection)
10:52:04*GitterIntegratio quit (Write error: Broken pipe)
10:52:04*Demos[m] quit (Write error: Connection reset by peer)
10:52:04*yglukhov[m] quit (Remote host closed the connection)
10:52:04*petersjt014[m] quit (Remote host closed the connection)
10:52:05*stisa[m] quit (Write error: Connection reset by peer)
10:52:09*narimiran[m] quit (Write error: Broken pipe)
10:52:11*zacharycarter[m] quit (Remote host closed the connection)
10:52:11*Miguelngel[m] quit (Remote host closed the connection)
10:52:11*gh0st[m] quit (Remote host closed the connection)
10:52:12*TheKing[m] quit (Remote host closed the connection)
10:52:13*zielmicha[m] quit (Remote host closed the connection)
10:52:16*sendell[m] quit (Read error: Connection reset by peer)
10:52:16*pqflx3[m] quit (Remote host closed the connection)
10:52:17*hitchhooker[m] quit (Write error: Connection reset by peer)
10:52:17*codevance[m] quit (Write error: Connection reset by peer)
10:52:18*Connor[m]1 quit (Write error: Connection reset by peer)
10:52:18*dyce[m] quit (Write error: Connection reset by peer)
10:52:18*macsek1911[m] quit (Remote host closed the connection)
10:52:18*bitstoppa[m] quit (Remote host closed the connection)
10:52:20*sg-james[m] quit (Read error: Connection reset by peer)
11:00:02*pqflx3[m] joined #nim
11:12:28*hitchhooker[m] joined #nim
11:12:28*gh0st[m] joined #nim
11:12:29*dyce[m] joined #nim
11:12:29*codevance[m] joined #nim
11:12:29*GitterIntegratio joined #nim
11:12:29*yglukhov[m] joined #nim
11:12:29*TheKing[m] joined #nim
11:12:30*Miguelngel[m] joined #nim
11:12:30*unclechu[m] joined #nim
11:12:30*bitstoppa[m] joined #nim
11:12:35*SolitudeSF[m] joined #nim
11:12:35*narimiran[m] joined #nim
11:12:35*stisa[m] joined #nim
11:12:35*TheManiac[m] joined #nim
11:12:35*xomachine[m] joined #nim
11:12:35*zacharycarter[m] joined #nim
11:12:36*sendell[m] joined #nim
11:12:36*toofly[m] joined #nim
11:12:36*endes[m] joined #nim
11:12:36*jaens[m] joined #nim
11:12:37*zielmicha[m] joined #nim
11:12:37*petersjt014[m] joined #nim
11:12:37*macsek1911[m] joined #nim
11:12:37*spymasterd[m] joined #nim
11:12:38*sg-james[m] joined #nim
11:12:38*syntonym[m] joined #nim
11:12:40*Connor[m]1 joined #nim
11:16:04*SenasOzys joined #nim
11:33:12FromGitter<kaushalmodi> A JSON module question.. Let's say I have created a `JsonNode` using `%*`. What's a good way to push a new key/value pair to it?
11:35:00FromGitter<mratsim> foo\[key\] = value
11:36:29FromGitter<kaushalmodi> Ah, that's it? :) Thank you. I search for things like push, merge, etc but couldn't find.
11:38:24FromGitter<Vindaar> It does depend a little bit on what kind of `JsonNode` you created with `%*` if I'm not mistaken
11:39:28FromGitter<Vindaar> e.g. if you created a `JArray`, you can't just do `jArray["Hallo"] = "kaushal"` I think
11:39:41FromGitter<kaushalmodi> Oh, is it?
11:40:18FromGitter<Araq> no because that would be a JObject...
11:40:43FromGitter<Vindaar> indeed
11:42:14FromGitter<kaushalmodi> Hmm, I am trying to optimize this: https://github.com/kaushalmodi/ntodo/blob/master/src/ntodopkg/tasks.nim#L58-L76
11:43:39FromGitter<kaushalmodi> Wait, that's not a JArray
11:43:45FromGitter<Vindaar> in that case you create a `JObject`with `%*`
11:43:47FromGitter<Vindaar> yes
11:44:00FromGitter<Vindaar> so in that case what @mratsim proposed works just fine
11:44:27FromGitter<kaushalmodi> Yup, thanks.
11:44:32*SenasOzys quit (Remote host closed the connection)
11:45:05*SenasOzys joined #nim
11:45:13*abm joined #nim
11:48:58*krux02 joined #nim
11:50:36*jjido joined #nim
11:55:03*jjido quit (Ping timeout: 252 seconds)
11:57:28*nsf quit (Quit: WeeChat 2.2)
11:57:30*rockcavera quit (Remote host closed the connection)
12:05:20*borsin5 joined #nim
12:10:05*borsin5 quit (Remote host closed the connection)
12:12:52*rockcavera joined #nim
12:14:51*nikivi27 joined #nim
12:16:48*nikivi27 quit (Killed (Unit193 (Spam is not permitted on freenode.)))
12:27:34*zachcarter quit (Ping timeout: 240 seconds)
12:34:13*SenasOzys quit (Ping timeout: 245 seconds)
12:46:21*SenasOzys joined #nim
12:49:40*pqflx3[m] quit (Remote host closed the connection)
12:49:40*stisa[m] quit (Remote host closed the connection)
12:49:40*narimiran[m] quit (Remote host closed the connection)
12:49:41*codevance[m] quit (Remote host closed the connection)
12:49:41*SolitudeSF[m] quit (Read error: Connection reset by peer)
12:49:41*jaens[m] quit (Read error: Connection reset by peer)
12:49:42*hitchhooker[m] quit (Read error: Connection reset by peer)
12:49:43*dyce[m] quit (Write error: Connection reset by peer)
12:49:44*zielmicha[m] quit (Remote host closed the connection)
12:49:44*xomachine[m] quit (Remote host closed the connection)
12:49:44*Miguelngel[m] quit (Remote host closed the connection)
12:49:45*petersjt014[m] quit (Remote host closed the connection)
12:49:45*TheManiac[m] quit (Read error: Connection reset by peer)
12:49:45*Connor[m]1 quit (Write error: Connection reset by peer)
12:49:47*toofly[m] quit (Remote host closed the connection)
12:49:48*syntonym[m] quit (Remote host closed the connection)
12:49:50*spymasterd[m] quit (Remote host closed the connection)
12:49:52*macsek1911[m] quit (Read error: Connection reset by peer)
12:49:52*unclechu[m] quit (Remote host closed the connection)
12:49:53*GitterIntegratio quit (Remote host closed the connection)
12:49:53*yglukhov[m] quit (Remote host closed the connection)
12:49:53*sendell[m] quit (Write error: Connection reset by peer)
12:49:54*gh0st[m] quit (Remote host closed the connection)
12:49:54*zacharycarter[m] quit (Remote host closed the connection)
12:49:54*bitstoppa[m] quit (Read error: Connection reset by peer)
12:49:54*TheKing[m] quit (Remote host closed the connection)
12:49:55*endes[m] quit (Read error: Connection reset by peer)
12:49:56*sg-james[m] quit (Remote host closed the connection)
12:51:17*noonien joined #nim
12:55:04FromGitter<kaushalmodi> A new code running bot on Mastodon that uses too.run,
12:55:26FromGitter<kaushalmodi> *tio.run
12:56:08FromGitter<kaushalmodi> ://mastodon.technology/users/kaushalmodi/statuses/100644932781178601
12:58:30*pqflx3[m] joined #nim
12:58:36FromGitter<kaushalmodi> One more try to paste a sane link: https://mastodon.technology/users/kaushalmodi/statuses/100644932781178601
13:03:30*Elronnd quit (Ping timeout: 264 seconds)
13:04:05*fsamareanu14 joined #nim
13:08:50*fsamareanu14 quit (Remote host closed the connection)
13:10:26*gh0st[m] joined #nim
13:10:26*hitchhooker[m] joined #nim
13:10:27*bitstoppa[m] joined #nim
13:10:27*yglukhov[m] joined #nim
13:10:27*codevance[m] joined #nim
13:10:27*GitterIntegratio joined #nim
13:10:27*TheKing[m] joined #nim
13:10:27*dyce[m] joined #nim
13:10:28*Demos[m] joined #nim
13:10:28*unclechu[m] joined #nim
13:10:33*sendell[m] joined #nim
13:10:33*zacharycarter[m] joined #nim
13:10:33*narimiran[m] joined #nim
13:10:33*TheManiac[m] joined #nim
13:10:34*SolitudeSF[m] joined #nim
13:10:34*endes[m] joined #nim
13:10:34*Connor[m]1 joined #nim
13:10:35*syntonym[m] joined #nim
13:10:35*Miguelngel[m] joined #nim
13:10:35*jaens[m] joined #nim
13:10:35*petersjt014[m] joined #nim
13:10:35*toofly[m] joined #nim
13:10:35*macsek1911[m] joined #nim
13:10:35*sg-james[m] joined #nim
13:10:36*xomachine[m] joined #nim
13:10:36*spymasterd[m] joined #nim
13:10:36*stisa[m] joined #nim
13:10:37*zielmicha[m] joined #nim
13:12:46*Elronnd joined #nim
13:13:09PMunchIs Matrix having some trouble today?
13:20:24FromGitter<Araq> constantly, I'm on gitter because of this
13:21:25federico3kaushalmodi is it written in Nim?
13:27:28*SenasOzys quit (Ping timeout: 272 seconds)
13:27:59PMunch@Araq, to avoid the join/leave messages?
13:28:08PMunchI was wondering why you had switched to using Gitter
13:36:16*PrimHelios quit (Ping timeout: 260 seconds)
13:36:50FromGitter<kaushalmodi> federico3: If you mean the bot, then no. But that bot uses https://tio.run which supports Nim
13:37:17copygirlMhh.. if I want to set up a safe way to push/pop opengl modelview matrices, in such a way that you ensure they're being popped before returning control to the caller, how could I structure that in Nim?
13:37:52copygirlI suppose.. maybe a template, in which I push, execute the block, then pop..?
13:38:10*cspar quit (Ping timeout: 246 seconds)
13:42:07PMunchcopygirl, yeah a template is probably what you want
13:42:59PMunchBasically what is going on in the template here: https://nim-lang.org/docs/manual.html#guards-and-the-locks-section-protecting-global-variables
13:43:09FromGitter<alehander42> yeah, basically that's similar to python's context managers
13:43:12PMunchJust sub the thread stuff for what you are doing
13:43:22FromGitter<alehander42> I used macros/templates to simulate them in nim
13:43:38copygirlThanks for confirming my suspicions :)
13:44:43*floppydh joined #nim
13:45:57FromGitter<alehander42> btw do we have something similar for `{.push.}`
13:47:39*PrimHelios joined #nim
13:49:30*cspar joined #nim
13:54:00*SenasOzys joined #nim
13:54:11*jjido joined #nim
14:02:12*subsetpark left #nim (#nim)
14:04:08*floppydh quit (Quit: WeeChat 2.2)
14:06:30FromGitter<Araq> what do you mean?
14:11:40PMunch@Araq, what does who mean?
14:12:19FromGitter<Araq> @alehander42 what do you mean?
14:13:50*kapil___ joined #nim
14:15:45*endragor joined #nim
14:31:18*Venusaur9 joined #nim
14:31:54FromGitter<alehander42> i mean like ⏎ ⏎ ```push(pragma): ⏎ proc .. ⏎ ``` [https://gitter.im/nim-lang/Nim?at=5b89515a9c71d363c156b460]
14:36:24*Venusaur9 quit (Remote host closed the connection)
14:37:10*endragor quit (Remote host closed the connection)
14:40:33*miran joined #nim
14:40:36FromGitter<Araq> you can use a template for it, but yeah, that would be nice
14:54:00*PrimHelios quit (Quit: Leaving)
14:58:20FromGitter<Clyybber> @Araq Is it possible to call a proc defined in `config.nims` from the main code?
15:03:12*d0nn1e joined #nim
15:04:24*Perkol joined #nim
15:04:25*d0nn1e quit (Remote host closed the connection)
15:06:01leorizeClyybber: it is not possible to do so
15:07:06FromGitter<Araq> well you can do: const fromMain = true; include "config.nims" and then in the nims check for 'when declared(fromMain)'
15:07:55*opi_ quit (Ping timeout: 250 seconds)
15:08:51*opi_ joined #nim
15:13:04FromGitter<Araq> or put the code in a helper module that your config.nims imports and also your main.nim
15:13:15FromGitter<Araq> the fact that everything is in Nim is so nice :-)
15:25:03*cspar quit (Ping timeout: 245 seconds)
15:29:57*smt` joined #nim
15:33:19*smt quit (Ping timeout: 246 seconds)
15:36:16FromGitter<Clyybber> @Araq Thank you.
15:38:36FromGitter<Clyybber> Could one also do `from config.nims import someproc`?
15:39:40FromGitter<Araq> yeah if you get the quotes right, `from "config.nims" import someproc`
15:40:55FromGitter<Clyybber> Nice
15:53:35*cspar joined #nim
16:03:39FromDiscord<treeform> Araq, hey I got the nimedit working on windows.
16:04:35FromGitter<Araq> wow, really?
16:04:39FromGitter<Araq> Screenshot please
16:04:54FromDiscord<treeform> I did not change the font rendering or anything
16:05:37FromDiscord<treeform>
16:05:37FromDiscord<treeform> https://cdn.discordapp.com/attachments/371759389889003532/485117965176537128/unknown.png
16:05:47FromDiscord<treeform> I don't even know how to open files though
16:05:55FromDiscord<treeform> And it seems to crash if I try to do anything
16:06:06FromGitter<Araq> gah, I thought you ported the font renderer
16:06:20FromDiscord<treeform> no it was hard enough getting it t compile
16:06:24FromDiscord<treeform> no it was hard enough getting it to compile
16:06:28FromGitter<Araq> I can run it on Windows without crashes
16:06:41FromGitter<Araq> well ok, I would need to port it to Nim devel
16:06:58FromDiscord<treeform> i used nim devel?
16:07:02*jjido quit (Read error: Connection reset by peer)
16:07:06FromDiscord<treeform> It took a tone of time to find all the DLLs
16:07:20FromGitter<Araq> could have send you them...
16:07:21FromDiscord<treeform> and it also outputs nothing because its a GUI mode app
16:07:33FromGitter<Araq> bbs
16:07:44FromDiscord<treeform> Araq, I still strongly suggest making a way to put DDLs into nimble packages for windows
16:08:03FromDiscord<treeform> Mac and Linux have .so figured out, but not windows
16:09:16FromDiscord<treeform> ```
16:09:16FromDiscord<treeform> Hint: C:\Users\me\Dropbox\p\nimedit\nimedit.exe [Exec]
16:09:16FromDiscord<treeform> here
16:09:16FromDiscord<treeform> mainProc
16:09:17FromDiscord<treeform> created window
16:09:17FromDiscord<treeform> nimedit.nim(1203) nimedit
16:09:17FromDiscord<treeform> nimedit.nim(1155) mainProc
16:09:19FromDiscord<treeform> nimedit.nim(1011) processEvents
16:09:20FromDiscord<treeform> nimedit.nim(780) runAction
16:09:22FromGitter<mratsim> put dlls in a ./deps folder? `nimble install`? profit?
16:09:22FromDiscord<treeform> prompt.nim(113) runCmd
16:09:23FromDiscord<treeform> console.nim(198) parseWord
16:09:25FromDiscord<treeform> system.nim(2807) sysFatal
16:09:27FromDiscord<treeform> Error: unhandled exception: index out of bounds [IndexError]
16:09:29FromDiscord<treeform> Error: execution of an external program failed: 'C:\Users\me\Dropbox\p\nimedit\nimedit.exe '```
16:09:31FromDiscord<treeform> it crashes here a ton
16:09:34FromDiscord<treeform> yes some thing like this
16:10:34FromGitter<data-man> ```code paste, see link``` ⏎ ⏎ Compiler crashes. What's wrong? ⏎ Maybe there's already a issue about this? [https://gitter.im/nim-lang/Nim?at=5b89687ac2bd5d117afd2580]
16:11:17FromGitter<mratsim> can you use tuble like that?
16:11:20FromGitter<mratsim> tuple*
16:12:11FromGitter<mratsim> `Interval[T: SomeIntervalType] = tuple[left, right: T]`?
16:13:12FromGitter<data-man> Why not? ⏎ I replaced this to concepts, but compiler should't crashes.
16:14:23FromGitter<data-man> I think so. :)
16:14:59FromGitter<mratsim> yeah compiler shouldn’t crash but the tuple declaration is foreign to me.
16:20:40*Trustable joined #nim
16:20:57*zachcarter joined #nim
16:22:55*kapil___ quit (Quit: Connection closed for inactivity)
16:27:04*JustTheDoctor joined #nim
16:28:29FromGitter<rayman22201> @mratsim good morning from the Western US. Jai has the worst "stealth mode" ever. Jonathan Blow has approximately 8 million twitch videos of him showing off the language. He just refuses to release the compiler... Araq was able to use macros to make Nim do some of Jai's coolest tricks in like 30 minutes though lol
16:30:11FromGitter<mratsim> :P
16:30:31FromGitter<mratsim> Any videos to recommend before the weekend =)
16:31:51*JustTheDoctor quit (Remote host closed the connection)
16:33:01FromGitter<rayman22201> hrmm. It depends if you like watching people talk too long about programming language design :-P
16:33:53FromGitter<rayman22201> This is the video where Jon Blow talks about the array tricks that I am referring to: https://www.youtube.com/watch?v=ZHqFrNyLlpA&index=6&list=PLmV5I2fxaiCKfxMBrNsU1kgKJXD3PkyxO
16:33:54PMunch@mratsim, videos of what?
16:34:18FromGitter<rayman22201> But there are a lot of good movie trailers out this weekend as well :-P
16:35:17*Jesin quit (Quit: Leaving)
16:38:24*SunTsu0 joined #nim
16:39:13*SunTsu0 quit (Remote host closed the connection)
16:40:32FromGitter<admin0day> how can i upload a csv file to the website backend which is write by the nim-lang behind the nginx ?
16:40:52FromGitter<admin0day> i always get this fault in my error.log
16:40:55FromGitter<admin0day> upstream prematurely closed connection while reading upstream
16:42:36*Jesin joined #nim
16:42:45FromGitter<admin0day> upstream prematurely closed connection while reading upstream
16:42:49*miran quit (Quit: Konversation terminated!)
16:44:10PMunch@admin0day, I'm not sure I understand your question
16:44:26*ftsf joined #nim
16:44:45PMunchSo you have a back-end written in Nim behind an nginx reverse proxy
16:44:46FromGitter<rayman22201> upstream == the client == the browser closed the connection before the upload finished. Could be your nginx config or your client code. We need more info to help you.
16:45:24PMunchI'd say it's probably a timeout issue with you nginx config
16:45:51PMunchIs that error from you Nim back-end or from nginx?
16:46:07FromGitter<admin0day> from the nginx
16:46:49PMunchAnd you have an end-point in the Nim back-end that you can use to upload a .csv file to?
16:47:42FromGitter<admin0day> i found so many file just remind me the max_file and the fail_timeout should be set
16:48:44FromGitter<admin0day> yes ,the fouction is ok without the nginx
16:49:25ftsfhmm getting a segfault in setLengthSeq when calling keepItIf on a sequence
16:51:18FromGitter<admin0day> (https://files.gitter.im/nim-lang/Nim/AXa9/image.png)
16:51:40FromGitter<admin0day> here is my nginx.conf in 443 port
16:52:00FromGitter<admin0day> @rayman22201
16:53:25*jjido joined #nim
16:53:49FromGitter<rayman22201> I think it's like @PMunch said. You need to set a higher timeout value in your nginx config. I don't remember the exact one you need.
16:54:45*Trustable quit (Remote host closed the connection)
16:55:31FromGitter<rayman22201> Google tells me that these are common nginx timeout settings: ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5b897303e5b40332ab25fdb6]
16:57:35FromGitter<admin0day> maybe i can try
16:58:39FromGitter<admin0day> this setting is the global setting?
16:59:21PMunchftsf, on devel or stable?
16:59:48ftsfdevel
17:00:42ftsfwill try upgrading to latest
17:01:46FromGitter<rayman22201> @admin0day I don't know. I have not used nginx in a long time. Try it?
17:02:59FromGitter<mratsim> @rayman22201 thanks!
17:03:08FromGitter<mratsim> @Pmunch video about Jai programming language
17:04:50FromGitter<alehander42> @Araq what does `cc` do ?
17:04:53FromGitter<alehander42> nim cc
17:05:23PMunchftsf, that might be a bug with the move away from nilable seqs
17:07:18FromGitter<Vindaar> @alehander42 according to `compiler/main` it's just the same as c ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5b8975c6ac25fd11b5c01aed]
17:10:15FromGitter<admin0day> @rayman22201 it doesn't work
17:11:02FromGitter<mratsim> @rayman22201 First 10min, class/heap alloc are slow: I thought that was basic for C++ devs
17:11:02*jjido quit (Ping timeout: 272 seconds)
17:12:20FromGitter<alehander42> @Vindaar thanks
17:12:54FromGitter<admin0day> the csv.file just 8.07k,it is possible make the response overflow the buffer?
17:17:14ftsfhmm dang, seems a lot of code relies on nillable seqs
17:17:27FromGitter<rayman22201> @admin0day you said that it works when you bypass nginx?
17:17:49FromGitter<Araq> there is --nilseqs:on for backwards compat but fix all the code out there :-)
17:18:14FromGitter<rayman22201> @mratsim lol. I thought that was basic knowledge as well, but I guess people really don't know how allocation works these days...
17:18:21FromGitter<Araq> and yeah, I expect this to be a change that breaks more then --gc:destructors
17:19:44ftsfsounds good if i don't have to check for nil all the time =)
17:22:50ftsfaww no more {.this.} =(
17:23:14FromGitter<mratsim> it was broken for generics anyway ...
17:24:00FromGitter<rayman22201> speaking of videos, @Araq. You asked me a while ago for suggestions for livestreams / videos. I am finally getting some time to watch the old videos. My favorite so far is actually the "random bugfixes". It is very educational to just watch you dig into the compiler and fix random bugs.
17:26:35ftsfI take it {.this:self.} is not becoming default behaviour then?
17:28:19FromGitter<bung87> @admin0day just 8.07k timeout shouldn't be a problem,or you program open too many files?
17:29:52ftsfcool, updated to latest and fixed all the nil checks no more crash on keepItIf
17:31:27FromGitter<mratsim> @ftsf no it’s being phased out
17:31:54ftsf=( that's gonna really suck if there's nothing similar
17:33:04*kapil___ joined #nim
17:33:34*leorize quit (Ping timeout: 240 seconds)
17:33:44*PMunch quit (Quit: Leaving)
17:34:30FromGitter<mratsim> I think self being explicit is OK.
17:36:39FromGitter<admin0day> @rayman22201 the fault still exist.
17:37:19*leorize joined #nim
17:38:46FromGitter<admin0day> @bung87 i don't understand why open too many files will cause this fault.
17:38:48FromGitter<bung87> how you handle the uploading show the code
17:38:53ftsfself makes code a lot bigger and less readable, being explicit when it's needed is fine, but 99% of the time when i'm writing code it's not
17:39:27*yawkat27 joined #nim
17:39:31FromGitter<bung87> seach *linux maxfile* you will find something
17:40:54FromGitter<bung87> file size as KBs generally will be handled in second.
17:44:17*yawkat27 quit (Remote host closed the connection)
17:50:03FromGitter<admin0day> proc upload(unused, body: string; s: SocketHandle) {.gcsafe.} = ⏎ const schema = [strCol("billing_id"),strCol("zhifubao"),strCol("zhifubaoAccount"), ⏎ ⏎ ```code paste, see link``` ⏎ ... [https://gitter.im/nim-lang/Nim?at=5b897fcb1d3a5711b6c64e58]
17:50:42FromGitter<admin0day> how can i use markdown in this windows
17:52:12FromGitter<admin0day> proc upload(unused, body: string; s: SocketHandle) {.gcsafe.} = ⏎ const schema = [strCol("billing_id"),strCol("zhifubao"),strCol("zhifubaoAccount"), ⏎ ⏎ ```code paste, see link``` ⏎ ... [https://gitter.im/nim-lang/Nim?at=5b89804c1d3a5711b6c65047]
17:53:27*natrys joined #nim
17:53:53FromGitter<admin0day> proc upload(unused, body: string; s: SocketHandle) {.gcsafe.} = ⏎ const schema = [strCol("billing_id"),strCol("zhifubao"),strCol("zhifubaoAccount"), ⏎ ⏎ ```code paste, see link``` ⏎ ... [https://gitter.im/nim-lang/Nim?at=5b8980b1d8d36815e5b8de4f]
17:54:18FromGitter<admin0day> @bung87
17:55:15FromGitter<mratsim> you should reformat that with triple quote Nim, code, triple quote. it’s unreadable and indentation is lost here.
17:56:56FromGitter<bung87> paste screenshot clip
17:58:28FromGitter<admin0day> (https://files.gitter.im/nim-lang/Nim/Dzj8/image.png)
17:58:57FromGitter<admin0day> (https://files.gitter.im/nim-lang/Nim/xFZx/image.png)
17:59:18FromGitter<mratsim> You can just use triple-quote Nim, your code, triple quote to paste code on Gitter, no need for screen shots
18:00:39FromGitter<admin0day> i want to use some shortcut key if exist…
18:00:47FromGitter<admin0day> here is the call
18:00:54FromGitter<admin0day> (https://files.gitter.im/nim-lang/Nim/RLMu/image.png)
18:01:18FromGitter<mratsim> https://gitter.zendesk.com/hc/en-us/articles/200176682-Markdown-basics
18:01:43FromGitter<mratsim> at the bottom you have the syntax, you can add Nim next to the opening triple-quote for proper highlighting
18:02:49FromGitter<bung87> think may programatic problems, 1 , not alwasy return a http response.2, io perform inside loop
18:03:12FromGitter<Araq> ftsf: I think .self is pushing Nim too far in terms of implicit code. Also, unfortunately, it never worked well.
18:04:45FromGitter<mratsim> I think when collaborating on a shared codebase and debugging code written by other, being explicit is better here.
18:05:27*natrys quit (Ping timeout: 240 seconds)
18:06:14FromGitter<bung87> and you may change the `defer` to `try catch` to see what kind of error will raise. the timeout most cause by you code not always return a http response.
18:07:36ftsfdoing game work, it's so handy since you're mostly in the mind of that object that you're working on, and makes the code a lot simpler and easier to read. i agree, it's annoying when self doesn't work as expected, but it's rare and easy to specify when needed. seems a shame to drop a feature that's so useful 95% of the time.
18:08:02leorizeAraq: has --gc:destructors been working yet?
18:09:05ftsfone of my favourite things in nim is how brief i can be, for both writing and reading.
18:09:27FromGitter<admin0day> ummmm,i will try it later.
18:14:38FromGitter<mratsim> Yeah, I find it useful when I used it for my Go playing bot. Until it was broken for static/generics :P
18:15:08FromGitter<Araq> ftsf: in the longer run we'll be able to replicate the feature with a macro :-)
18:15:40FromGitter<Araq> but for now, we need to cut some corners
18:15:53*flyx|znc left #nim (#nim)
18:15:57ftsfok, guess i'll wait before I update again =)
18:16:03FromGitter<rayman22201> I was about to say, `{.this:self.}` seems like it is better as a macro anyway...
18:16:38ftsfseems like it'd be difficult to do as a macro? but I'm not good with macros
18:16:43FromGitter<Araq> well you can update, it's not removed, it only triggers a deprecation warning
18:17:44FromGitter<Araq> @leorize: sadly, no. it's tough to get the phase orderings right
18:19:19FromGitter<tim-st> today I had a really bad crash with object variant, took me 10 minutes to find error, when discriminator was defined after a kind only variable, but cant reproduce :(
18:32:35FromGitter<tim-st> @ephja I created a working version for `lzma` with test cases in one file: https://gist.github.com/tim-st/2871ebb0dfda7f1966e83b1c37a19363
18:41:23FromGitter<data-man> Another nice compression library: https://github.com/nmoinvaz/minizip
18:44:10FromGitter<tim-st> I would use `snappy` I think, but currently I'm finishing my `zim` implmentation which requires `lzma`
18:44:12*SenasOzys quit (Quit: Leaving)
18:46:14FromGitter<data-man> Snappy is very bad for short inputs.
18:46:59FromGitter<data-man> @tim-st Oh! Great!I like the zim format! I'm using GoldenDict for zim dicts. :)
18:48:12FromGitter<tim-st> I use it for nlp data, I also have a 80% finished xml wiki parser :)
18:48:56FromGitter<data-man> Nice! With bzip2 support? ;)
18:49:23FromGitter<ephja> xml wiki?
18:49:30FromGitter<tim-st> no, this can be implemented, but I think most (all?) zim files are lzma
18:50:24FromGitter<ephja> nvm. just searched for "zim"
18:50:31FromGitter<tim-st> @ephja yes, it reads the xml article in a nim object containing all information; https://dumps.wikimedia.org/mirrors.html
18:50:40FromGitter<data-man> I meant wiki's xml data is compressed by bzip2.
18:51:35FromGitter<ephja> @tim-st nice interface
18:52:11FromGitter<tim-st> ok, makes sense to support a bzip stream, but this is quite easy at the end, most difficult is the format especially when it comes to supporting automated template loading and builtin wiki parser functions
18:52:26FromGitter<tim-st> @ephja thanks, you can use it for your lib
18:52:46FromGitter<ephja> hmm https://github.com/freevryheid/nim-lzma/blob/master/lzma.nim
18:53:18FromGitter<tim-st> lol
18:53:18FromGitter<data-man> @tim-st What's about Xapian? libzim uses it.
18:54:31FromGitter<ephja> first commit 5 days later though :p
18:55:25FromGitter<tim-st> @data-man I dont use libzim, but this looks interesting
18:55:52FromGitter<tim-st> @ephja yeah, quite bad, bad I learnt a few tricks when implementing it, so it's not too bad
18:55:54FromGitter<data-man> There is https://github.com/samdmarshall/xapian.nim :)
18:56:27FromGitter<tim-st> cool, will have a look
18:56:47*zachcarter quit (Ping timeout: 240 seconds)
18:56:52FromGitter<ephja> @tim-st I've sent an invitation to the repo. I'll merge it though if you want
18:57:58*ftsf quit (Ping timeout: 245 seconds)
18:58:01FromGitter<ephja> "if unlikely(compressionLevel notin 0..9): ..." drop in the ocean imo :D
18:58:55FromGitter<ephja> do you think it should all be in one file?
18:59:08FromGitter<tim-st> thanks, I'm not very expercienced with github though, yeah I tried to use `static[range[0..9]` but didnt work
18:59:53FromGitter<tim-st> I think it depends what is the aim, when only these two procs should be available then yes, if the aim it to implement all procs of the lib then not
19:00:48FromGitter<ephja> a lot of it is rarely used I think
19:02:09FromGitter<tim-st> yes, I think maybe two additionally procs that take a nim stream could be done but these are the procs people want I think
19:02:16FromGitter<ephja> what I meant was, the branch hints will have make it like 0.01% faster for small inputs. it doesn't add much noise though. in any case, output buffer arguments will have the biggest impact
19:03:02FromGitter<tim-st> well, I tested it with likely template and it was much faster like 4 seconds if I remember correct
19:03:22FromGitter<tim-st> but I used a bigger test with bigger numbers
19:03:49FromGitter<tim-st> but surprisingly manual allocating and deallocating didnt had an impact
19:05:06FromGitter<data-man> @tim-st: Benchmark's source to the studio, please! :-D
19:05:38FromGitter<tim-st> haha, you could try the gist linked above with bigger values
19:06:05FromGitter<tim-st> @ephja I'm not sure if this will work https://github.com/freevryheid/nim-lzma/blob/master/lzma.nim for bigger tests, since there is no allocator in decompression
19:06:08FromGitter<ephja> I just can't imagine why the branch hints would have any signifcant impact. the hints are used a few times per call, but the compression and decompression often involves millions of operations
19:06:43FromGitter<tim-st> there are likely templates in the while loop
19:07:36FromGitter<tim-st> but maybe I'm wrong and the difference was when I change doAssert to the if check
19:10:19FromGitter<ephja> I see it now. looks good
19:11:42FromGitter<tim-st> thanks, I think you could also let the bindings in the folder so people could import them explicitly if they want and `import lzma` would give the high level procs only
19:12:18FromGitter<tim-st> at best the c files would be linked statically but I didnt got that working, it wasnt that easy like with lmdb
19:15:31*Trustable joined #nim
19:15:53*Trustable quit (Remote host closed the connection)
19:16:37*Trustable joined #nim
19:19:42FromGitter<ephja> I might try to link statically, but if only there was a more standardized interface like with dynamic linking
19:20:44FromGitter<tim-st> yes, it was really difficult...
19:21:23FromGitter<ephja> also, I wonder if compiling complex libs statically is actually possible if you know enough about the autotools ecosystem lol
19:22:30FromGitter<tim-st> for lmdb I only needed to compile 2 c files and everything worked
19:31:41FromGitter<data-man> UnQLite contains 2 c files too. And supports :mem: like SQLite's :memory:
19:37:27FromGitter<bung87> https://github.com/bung87/tinyterm/blob/master/src/ui/crossmenu.nim#L84 anyone can help me debugging this line on windows?
19:39:46FromGitter<tim-st> @data-man looks interesting too, I wonder how it compares to lmdb
19:44:02*kungtotte joined #nim
19:44:20*kungtotte quit (Client Quit)
19:44:38*cspar quit (Ping timeout: 245 seconds)
19:46:32*stefanos82 quit (Quit: Quitting for now...)
19:46:45FromGitter<data-man> @tim-st There are https://github.com/pmwkaa/ioarena and https://github.com/pmwkaa/engine.so
19:47:35*kungtotte joined #nim
19:48:23FromGitter<tim-st> @data-man thanks
19:53:59FromGitter<Araq> @bung87 there is nothing to debug, it's wrong
19:54:59FromGitter<bung87> hmm yes , many wrong.. it works on my mac so I want it works on windows.
19:59:09FromGitter<bung87> I saw nodejs implements it redirect stdio streaming, the current I just porting from a python module. It save and restore current stdio settings.
19:59:22*Perkol quit (Quit: Leaving)
20:05:06FromGitter<tim-st> can't you test your windows version?
20:05:36FromGitter<bung87> hmm I get nim works on windows now.
20:05:54FromGitter<tim-st> nim binaries for windows also work without problems using wine on linux
20:06:36FromGitter<bung87> I just forgot run finish.exe thought there's a install.exe :(
20:07:09FromGitter<tim-st> unfortunately there is no setup.exe like golang has
20:09:06FromGitter<bung87> found if let the code runs on windows, something may implements in stdlib
20:10:41FromGitter<Araq> I feel like a broken record by now. we *had* a setup.exe, it sucked
20:11:21FromGitter<Araq> and all the "superior" installers out there don't support mingw detection with an *optional* install like Nim does
20:11:55FromGitter<Araq> the price is that you need to read a tiny paragraph about double clicking on finish.exe
20:13:38FromGitter<bung87> yeah I the name *finish.exe* may not easy found... haven't saw a exe named *finish* that does install something :(
20:14:00FromGitter<Araq> it doesn't install, it configures.
20:14:55FromGitter<Araq> you "install" Nim itself by unzipping into your favorite directory, no admin rights required, works for Windows XP, 7, 8, 10, Vista...
20:15:56FromGitter<Araq> but fair enough, make a suggestion of how to name this .exe
20:15:58FromGitter<bung87> hmm may named setup.exe just my thoughts
20:16:24FromGitter<tim-st> I think the best way would be (if license allows) ship mingw gcc with nim have a checkbox "add nim to path" click in install, wait: nim is installed and works, like golang
20:16:24FromGitter<Araq> well setup.exe would be an installer, but I'll consider it
20:16:56FromGitter<Araq> tim-st: been there, done that, it means every time you download Nim you also download the >100MB Mingw stuff
20:17:18FromGitter<Araq> whereas with the current setup you only need to install mingw once and can update Nim way more easily
20:18:43FromGitter<tim-st> that's no problem with good compression and a clever minified mingw, golang is also quite big, and I think nowadays literally everyone prefers a big download over compiling a nightly one his own which takes 15 minutes, download takes 2 minutes + setup is easy
20:19:02FromGitter<tim-st> nightly build
20:19:30FromGitter<Araq> "good compression"? the default is .zip, it's unclear if we can assume .7z
20:19:35FromGitter<tim-st> go 1.11: 111mb
20:19:59FromGitter<tim-st> in worst case use 7z sfx extractor in the background
20:20:07Demos[m]mingw has some additional problems in that it has a ton of really tiny files and windows fs perf is so aweful it can take a while
20:20:34Demos[m]and like if you're using nim for native dev on windows you've probably already installed MS compiler toolchain which is like 5GB just by itself
20:20:44FromGitter<Araq> that would be 111mb that we need to upload twice (32 vs 64bits) for every release
20:20:48Demos[m]ship clang with nim
20:20:51Demos[m]easier
20:21:05FromGitter<Araq> tried, back then clang on Windows was bad.
20:21:09FromGitter<tim-st> Even if high skilled people can compile in the same time the download takes, if nim wants more users the very first step would be a setup.exe that works out of the box with everything
20:21:12FromGitter<Araq> dunno how it is today.
20:21:39FromGitter<Araq> maybe we want more users who can read a little bit of docurmentation.
20:22:16FromGitter<tim-st> tbh I think 99% of all users only read docs when they have problems and things dont work like they assume
20:22:20kungtotteOr you could just use choosenim and get the best of both worlds. A one-click deal to install mingw and nim, and then keep nim updated and switch between versions without redownloading mingw
20:23:10FromGitter<bung87> Emphasize some words on document would be better.
20:23:41FromGitter<Araq> we're shipping a programming language. Not some software that helps you edit your pictures.
20:24:03FromGitter<Araq> programmers on Windows need to know about the command line, some editors that are not notepad
20:24:09FromGitter<Araq> etc.
20:24:40FromGitter<kayabaNerve> Petition to add `nim photo` as an alias to `gimp`.
20:25:30FromGitter<bung87> nice one
20:26:26FromGitter<tim-st> There could also be an installer that downloads and extracts ming on the fly and makes the same as packing mingw directly
20:26:39FromGitter<Araq> maybe nim.exe should call finish.exe on its first start
20:26:40FromGitter<tim-st> it just has to work out of the box
20:26:48kungtotte@tim-st: you mean like choosenim already does?
20:26:58FromGitter<Araq> after all, you found a way to run nim.exe, don't you?
20:27:27FromGitter<tim-st> kungotte: I tried choosenim one time and it didnt work for me, and it tried to download over port 80 (unsecure connection)
20:27:37FromGitter<rayman22201> I had more issues with choosenim on windows than just raw nim lol. But that was because I had weird outdated OpenSSL libs installed for other reasons. :-P
20:27:54FromGitter<tim-st> when I try to install golang, it works 100%
20:28:05FromGitter<Araq> congrats.
20:28:30FromGitter<Araq> for many it doesn't, they cannot open a terminal and type 'go ...'
20:29:08FromGitter<tim-st> because they didnt reopen the terminal, this is the only thing they can make wrong, and of course such people exists
20:29:54FromGitter<Araq> ok, so I take it the Golang team nevertheless is concerned with helping these people. RIGHT?
20:30:37FromGitter<Araq> or are *they* allowed to say "whatever man, you need a minimum of brain activity to get going"
20:31:04FromGitter<tim-st> Know I dont think they say it, but at least nim works on arch linux out of the box
20:31:10FromGitter<tim-st> No
20:31:33kungtotteCan I just say, I think it's pretty funny to be worrying about one-click installers for a language that's v0.18 still.
20:33:23FromGitter<Araq> "works on arch linux out of the box"? how so if you refuse to read any instructions.
20:34:05FromGitter<tim-st> there is a package manager, I type in "nim" click on install, and finished
20:35:36FromGitter<Araq> ok, but that's Arch Linux's achievement then.
20:39:55FromGitter<bung87> re-design the page just fine , step 1, step 2, step3 done
20:42:29FromGitter<Araq> https://nim-lang.org/install_windows.html
20:42:46FromGitter<Araq> > Notes about binary installation ⏎ > The installation using the provided zip files should be fairly straightforward. Simply extract the files into the desired installation directory, and run finish.exe.
20:43:17FromGitter<Araq> Could make that text in bold.
20:43:17FromGitter<bung87> compare to linux much text than each linux distribution .
20:43:51FromGitter<bung87> yeah in bold , I saw it in `code` ...
20:44:01FromGitter<Araq> https://nim-lang.org/install_unix.html
20:44:22FromGitter<Araq> I fail to see how that's less text.
20:45:13FromGitter<bung87> *each linux distribution* not all
20:47:01FromGitter<bung87> the largest one **Manual installation from source ⏎ ** also less than window :(
20:49:09FromGitter<Araq> build64.bat ⏎ bin\nim c koch ⏎ koch tools
20:49:25FromGitter<Araq> are the instructions for Windows but we don't trust our Windows users to build from source
20:50:02FromGitter<Araq> and since you didn't read the very first paragraph anyway it seems valid to assume that.
20:53:14FromGitter<xmonader> is it possible to have SCAN to read array of arrays in redis client?
20:56:31FromGitter<bung87> yeah I barely build when I on windows.
20:57:49FromGitter<data-man> https://nuwen.net/mingw.html ~78 MB. Without git ~40 MB.
21:25:29FromGitter<arnetheduck> https://nim-lang.org/docs/nimc.html - nimcache docs out of date it seems
21:27:05FromGitter<Araq> yeah, official docs get updated with a release
21:27:38FromGitter<Araq> we also need "nightly" docs
21:29:32*Trustable quit (Remote host closed the connection)
21:48:12*nsf joined #nim
21:50:17*mrkirby15314 joined #nim
21:53:04*mrkirby15314 quit (Remote host closed the connection)
21:53:12*zachcarter joined #nim
21:57:21*zachcarter quit (Ping timeout: 244 seconds)
22:02:55*kapil___ quit (Quit: Connection closed for inactivity)
22:03:02*smt` quit (Ping timeout: 244 seconds)
22:07:21*druonysus quit (Read error: No route to host)
22:07:56FromGitter<alehander42> finish.exe sounds unexpected, it does need to be bolded in the docs
22:12:37*druonysus joined #nim
22:12:37*druonysus quit (Changing host)
22:12:37*druonysus joined #nim
22:13:05*Vladar quit (Remote host closed the connection)
22:19:17FromGitter<Araq> you can always find reasons to not read something on a screen
22:26:22AlexMaxNim's happy-path windows support story is very impressive. Nim compiles and runs, nimble finds and installs libraries just fine, the only thing I've ever had to do was move a .dll file to the same directory as my program.
22:27:28AlexMaxgood to see a language developer who isn't like "Huh? Windows? What's that?"
22:27:57AlexMaxAlthough finish.exe was kind of unexpected
22:39:24FromGitter<bung87> the most worst parts is it gets emphasized in markdown.. :( https://github.com/nim-lang/website/blob/master/jekyll/install_windows.md#notes-about-binary-installation
22:53:25*a_b_m joined #nim
22:56:15*abm quit (Ping timeout: 244 seconds)
23:00:22FromGitter<kayabaNerve> I don't think we should run finish no matter what. I don't think we should or need to cater to users who face ID10T errors.
23:00:59*nsf quit (Quit: WeeChat 2.2)
23:20:45FromGitter<rayman22201> +1 for nightly docs. That would be very useful
23:23:18*deedra14 joined #nim
23:27:12*deedra14 quit (Excess Flood)
23:30:52*noonien quit (Quit: Connection closed for inactivity)
23:34:19FromDiscord<emekoi> +1 nightly docs
23:34:55FromDiscord<emekoi> is there a way to store a proc in a variable, then call it later?
23:40:30*gangstacat quit (Quit: Ĝis!)
23:41:24*gangstacat joined #nim
23:42:09FromGitter<data-man> @emekoi Sure. ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5b89d251f86b741b05efce5a]
23:45:41*endragor joined #nim
23:50:03*endragor quit (Ping timeout: 252 seconds)