<< 11-12-2017 >>

00:00:04dom96NopeDK: oh, and you probably can just run 'koch tests cat stdlib'
00:00:14dom96but it's good to run it all anyway, might take some time though
00:00:25dom96cavariux: only in the source code :)
00:00:36dom96look for a platf.nim file or something in the compiler/ dir
00:01:01NopeDKdom96: some time might be too true... running on a poor Pi xD
00:01:04dom96skrylar: worked fine for me, and for Ludum Dare it was brilliant.
00:01:27dom96NopeDK: oh then definitely just run the 'stdlib' category
00:02:29FromGitter<cavariux> @dom96 thanks, sorry if I ask too many questions just new to Nim but loving it
00:02:41skrylardom96, it works fine for many people. i don't have any idea why it didn't for me
00:02:48dom96cavariux: no need to be sorry :)
00:03:40dom96anyway, I must head to bed. Good night.
00:03:53FromGitter<cavariux> Good night
00:04:04NopeDKG'night
00:04:49*marenz_ quit (Ping timeout: 248 seconds)
00:13:27*endragor quit (Ping timeout: 240 seconds)
00:16:05qihHow do you place an empty line in a Nim program? I want to echo out a return, then a space, then echo a message.
00:25:24NopeDKqih: What about just doing an empty echo (echo "")? Otherwise you could start the second echo for the message with a newline (echo "\n" & msg).
00:25:54qihAh right, good point, I'll try both
00:26:43qihI'm encoding simple physics equations like Velocity, Distance travelled etc using parseInt.readLine as a learning tool
00:27:24*onionhammer quit (Quit: WeeChat 1.9.1)
00:27:55*onionhammer joined #nim
00:30:41NopeDKI am working on a daemon that can cache read/writes in RAM for folders and files with a simple config for configurable files, folders, preloading, commit interval, double synchronization while hopefully being crashproof due to my design choice.
00:30:52NopeDKLot of stuff to learn.
00:31:29qihNice, agree
00:32:25qihI've come from a microcontroller (Forth & Micropython) background to learn some system and application developing focussing on Mapping & GIS
00:32:52qihSo all this full scale "C-like" stuff is a big move for me, but I am enjoying it
00:38:01*tefter joined #nim
00:40:49NopeDKCool. I have dabbled in too many languages due to own curiosity and my education but I really like Nim and want to get more proficient. The readability/programmability of Python with the speed of C, what is not to love
00:43:03qih"dabbled" =< I hear ya. Yes the speed, interop, and it can be stripped down hard enough to run on an MCU
00:44:49*vlad1777d quit (Ping timeout: 248 seconds)
00:45:26NopeDKFor now I am keeping Nim on my Pi but I will definitely attempt to get it running on an MCU in the future, got a small AHRS project way overdue.
00:46:30qihK, cool, I have Nim on the Desktop, so am using it for sysadmin too (why not), as much as I can
00:46:41*tefter quit (Ping timeout: 260 seconds)
00:48:57NopeDKNice, Nim just feels so versatile that I am amazed it hasn't gained much popularity yet.
00:51:14*astronav_ joined #nim
00:51:14qihThat's a good point as was raised by @cavariux, NFI why, maybe we are getting Peak Alt.Lang? 8-)
00:53:01*astronavt quit (Ping timeout: 250 seconds)
00:56:13*astronav_ is now known as astronavt
00:56:39*yglukhov joined #nim
00:57:04NopeDKTo the future of Nim, \x1D raises glass
00:57:33*qih does the same 8-)
00:57:59FromGitter<cavariux> *Follows*
00:58:05NopeDKWell, one day I will actually get to learn proper IRC usage and etiquette...
00:58:42FromGitter<cavariux> haha, but what are your thoughts on why Nim hasn't gain popularity?
00:59:09qihMe? NFI
00:59:39*yglukhov quit (Read error: Connection reset by peer)
01:00:07*yglukhov joined #nim
01:01:16NopeDKCan really only reiterate previously raised points, Nim is not v1.0 and the direct competitors were backed by larger and more public companies like Google's Go and it is not using previous language knowledge that many have like NodeJS
01:02:12FromGitter<cavariux> Yeah, I have code for 10 years and still it took me pair of days to get Nim's syntax and structure
01:02:41FromGitter<cavariux> I trully hope Nim takes off in one or two years because it does have potential
01:02:47qihNopeDK: Seems reasonable. Awareness also perhaps
01:03:26NopeDKqih: that as well
01:04:28FromGitter<cavariux> Nim also lacks that project, you know like the project that gets super popular and at the same time makes Nim popular
01:04:31*yglukhov quit (Ping timeout: 248 seconds)
01:04:49qihTHere is a hepa of great info on the Nim-Lang primary site but the site is ugly as, small fonts, a bit hard to get around.
01:04:55qihLike Ruby Rails?
01:05:07*qih apologises for crap typing
01:05:22FromGitter<cavariux> For example I doubt ruby would be what it is without frameworks like that
01:05:40qihAgree
01:05:50NopeDKcavariux: As my background is mainly C and derivatives plus Python I find it closer to a previously forgotten language than a new one.
01:06:09NopeDKAnd yeah, that one project, good point.
01:06:46FromGitter<cavariux> Well, will go eat something, gl and good night
01:06:55NopeDKG'night
01:07:58qihg'night
01:11:01*endragor joined #nim
01:18:45NopeDKLogging as well, have fun and g'night
01:19:46qihk, see ya
01:19:58*NopeDK quit (Quit: Page closed)
01:32:34*vivus quit (Quit: Leaving)
01:43:43*NopeDK joined #nim
01:45:14*NopeDK quit (Remote host closed the connection)
01:45:51*NopeDK joined #nim
01:49:31*endragor quit (Ping timeout: 268 seconds)
02:03:45*dddddd quit (Ping timeout: 248 seconds)
02:04:46qihI have made a simple calculating program for calculating Velocity (Final_Pos - Initial_Pos / Time), it works but I get a very long Float, all I want is a 2 or 3 decimal Float but cannot seem to get it correct.
02:05:09qihError line: 'echo(round(T: float64(result, " Metres per second")))'
02:18:57NopeDKstrutils.formatBiggestFloat(args)
02:19:49NopeDKOr rather, strutils.formatFloat(args)
02:20:24qihOh
02:21:08qihSo: echo(strutils.formatFloat(result, " Metres per second")) ?
02:21:29NopeDKimport strutils
02:21:43qihYeah have that
02:23:12NopeDKEcho(formatFloat(result, precision = numberOfDigitsAfterDot) & " Metres per second")
02:24:08qihNopeDK: Oh right, I could nnot see that, testing ...
02:30:00qihOK fixed, your code edit would have worked except for a missing ','
02:30:11qihAlways the way, just 1 little ,
02:30:33qihMy error, not yours, thanks
02:33:19NopeDK=)
02:34:33*NopeDK quit (Remote host closed the connection)
02:34:41*SenasOzys quit (Ping timeout: 255 seconds)
02:35:02qihCool, I'll have to modify it for Times in Seconds, Minutes and Hours, make it a bit more interactive and pretty but it works
02:35:50qihI should be able to use any Unicode char in a Nim program, shouldn't I?
02:36:25*NopeDK joined #nim
02:38:37FromGitter<RedBeard0531> char is a byte. To use any codepoint, you need to use unicode.Rune
02:39:43qihRedBeard0531: unicode.Rune, thanks ... btw, does your nick highlight if i mention you like that using IRC?
02:40:10FromGitter<RedBeard0531> it does
02:40:17qihOK great
02:43:43*onionhammer quit (Quit: WeeChat 1.9.1)
02:44:21*onionhammer joined #nim
02:46:23*chemist69 quit (Ping timeout: 255 seconds)
02:49:43qihIn my Velocity calculator program (CLI only), i ask a question, then the answer is read in using 'let final_pos = parseFloat(stdin.readline())', the answer is echo'd to the terminal like '300' or '0', but I really want '=> 300 metres'... how do I add in text via a readLine?
02:51:17qihhttps://nim-lang.org/docs/system.html#readLine,File is not clear
02:54:22NopeDKYou mean an interactive prompt with existing text that updates as they enter the value or do you mean output formatting for the result?
02:55:06qihHmm both 8-)
02:55:15qihBut I think option B is better
02:55:52qihAlthough an interactive prompt would be cool, for the future versions
02:56:38NopeDKFor the first you are looking at terminal ascii codes or stuff like (n)curses. Second is just using strutils again.
02:57:03qihK, Option B it is then, reading...
02:57:21NopeDKLook at the % operator
02:57:30qihK
02:59:16FromGitter<RedBeard0531> Also, if you are looking for something fancier/easier to use https://lyro.bitbucket.io/strfmt/#string-interpolation-interp is quite nice
02:59:46FromGitter<RedBeard0531> ` echo $$"=> ${someVar} meters" `
03:00:43*chemist69 joined #nim
03:01:09NopeDKThat is indeed a prettier way if you don't mind external libs (which you never should)
03:05:28*xkapastel quit (Quit: Connection closed for inactivity)
03:07:22qihRedBeard0531: Thank you
03:07:26qihNopeDK: Noted
03:09:07NopeDKWell, personal opinion but much work can be saved by using existing libraries unless security is a priority in which case everything should be checked.
03:11:34qihYeah I agree, should be a way to do most stuff for most people.
03:20:47*arthurz joined #nim
03:21:56arthurzHi here, I am curious how one would convert an Int value to a String? I can do it implicitly as say echo ("Test number was ", myTestNum)
03:22:16*Snircle quit (Quit: Textual IRC Client: www.textualapp.com)
03:22:26FromGitter<RedBeard0531> `$myTestNum`
03:22:49NopeDKthe $ operator converts all basic types to strings.
03:23:21FromGitter<RedBeard0531> and most complex types too
03:24:27arthurzoh sweet RedBeard0531, thank you. I wish better documentation existed
03:25:54NopeDKah, should have said built-in instead of basic. Yeah, most any type can be converted and you can even overload it for your own types. And the Nim Manual does a decent job for intro, there is also the book if you are willing to fork some dollars.
03:28:04arthurzThanks NopeDK I'm like in the Cars movie, do not use GPS :-)
04:08:49*BitPuffin|osx joined #nim
04:27:43*NopeDK quit (Ping timeout: 248 seconds)
04:52:51*astronavt quit (Remote host closed the connection)
04:54:15*dexterk joined #nim
04:58:45*dexterk quit (Client Quit)
05:00:15*ftsf quit (Ping timeout: 248 seconds)
05:13:04*arthurz quit (Ping timeout: 260 seconds)
05:14:09*skrylar quit (Remote host closed the connection)
05:15:11qihIs there a common GUI framework that works well with Nim and is not too n00b overwhelming?
05:23:45FromGitter<cavariux> I think araq made a port of wxWidgets and some one forked it
05:24:12qihOK, so that will be where?
05:24:18FromGitter<cavariux> Is there a pragma to ignore --deadCodeElim:on ? Because I need to exportc a struct
05:24:48FromGitter<cavariux> https://github.com/PMunch/wxnim
05:27:18qihcavariux: Many thanks.
05:59:07*rauss quit (Quit: WeeChat 2.0)
06:01:03*rauss joined #nim
06:02:35*nsf joined #nim
06:39:02*arecaceae quit (Remote host closed the connection)
06:39:21*arecaceae joined #nim
07:04:08*endragor joined #nim
07:06:34*solitudesf joined #nim
07:20:05*dexterk joined #nim
07:22:02*ftsf joined #nim
07:30:15*vlad1777d joined #nim
07:52:48Araqcavariux: that's not how to "exportc" a struct
08:21:32*PMunch joined #nim
08:29:13*Vladar joined #nim
08:30:01*couven92 joined #nim
08:32:24*yglukhov joined #nim
08:33:14*RPG joined #nim
08:33:37*RPG is now known as Guest58466
08:35:15*endragor quit (Remote host closed the connection)
08:37:32*Guest58466 is now known as _RPG_
08:42:41*endragor joined #nim
08:46:03*floppydh joined #nim
08:49:49*solitudesf quit (Quit: solitudesf)
08:52:45*solitudesf joined #nim
08:53:46PMunchWhat's the deal with this: https://www.reddit.com/r/nim/comments/7ebnr6/this_just_gave_me_the_flu/
09:32:26*qih quit (Quit: leaving)
09:36:03*chemist69 quit (Ping timeout: 250 seconds)
09:48:46*jjido joined #nim
09:49:24*SenasOzys joined #nim
09:49:50*chemist69 joined #nim
09:54:53*radagast joined #nim
09:55:44radagastWhat's the point of knowing endianness? Is it possible to utilize this information to optimize a program/data structure?
09:56:58*dddddd joined #nim
09:59:35PMunchWhat do you mean what's the point? Without knowing endianess you can't parse data
09:59:51jjidoradagast: it is useful for low-level I/O operations
10:22:03*nkr joined #nim
10:33:02*vlad1777d quit (Ping timeout: 255 seconds)
10:33:13FromGitter<tim-st> @ephja here is another lzma lib, found on reddit: https://github.com/freevryheid/nim-lzma
10:34:07*vlad1777d joined #nim
10:37:18FromGitter<ephja> I'm not sure if those object sizes are correct
10:43:13*vlad1777d quit (Ping timeout: 248 seconds)
10:47:39*gokr joined #nim
10:47:58*gokr left #nim (#nim)
10:48:21*claudiuinberlin joined #nim
10:52:09*marenz_ joined #nim
10:52:22*dddddd quit (Remote host closed the connection)
11:01:01PMunchAraq, did you see the reddit question I linked earlier? About cstrings and GC.
11:02:07Araqno, what about it?
11:03:14PMunchhttps://www.reddit.com/r/nim/comments/7ebnr6/this_just_gave_me_the_flu/
11:04:26Araqyeah so? the manual is trying to be precise here
11:04:55Araqinstead of guessing, use GC_ref/GC_unref if you are not sure
11:05:13AraqI don't understand the question tbh.
11:05:50PMunchWell the manual makes it seem like cstrings can be garbage collected at will
11:06:20Araqcstrings are not collected at all, strings are.
11:06:38Araqand you can use cstring as an un-owned pointer into the string
11:07:29PMunchAh so if you have as string you can make cstrings that points to different places within the string?
11:07:53PMunchAnd if the "parent" string falls out of scope the underlying memory can be collected
11:08:12PMunchThat makes sense. But what if I declare a type as cstring?
11:08:36PMunchSo 'let x:cstring = "Hello world"'
11:10:25*claudiuinberlin quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:16:50Araqstring literals are special
11:17:03Araqand never collected
11:17:32AraqI think the only problem here is that we have an implicit conversion that is strictly speaking unsafe
11:18:23Araqwhich is against Nim's design. We could change the rule so that only string literals are implicitly convertible to cstring, not sure how much code this breaks. probably quite a bit of code.
11:18:57*fredrik92 joined #nim
11:19:10Araqit's only unsafe though if the C code takes ownership which it must not do for string literals either (you cannot free() them)
11:19:20AraqI dunno.
11:19:29*fredrik92 quit (Client Quit)
11:21:00PMunchYeah, that's what I thought. At least add something about which cases this would be unsafe (C code taking ownership, creating a cstring to part of a string)
11:21:40Araqthe real bugs that I noticed are
11:21:48Araqlet x = cstring(newString(60))
11:22:03Araqwhich are explicit conversions...
11:22:33Araqbut the fix is not to write let x = cast[cstring](newString(60))
11:22:44Araqthough that would make the problem much more obvious ... hmm
11:32:22PMunchHmm, I guess GC_ref on a cstring wouldn't work very well?
11:32:57PMunchYou'd have to do GC_ref on a sequence of bytes or something similar that covers the cstring memory
11:33:25PMunchOr of course the underlying string
11:35:07PMunchUhm, never mind :P
11:52:30PMunchHmm, what's the right way to have a procedure that returns a cstring? Normally I would assume that the C code calling it would free the cstring after it is done with it.
11:53:16Araqthere is no normal case, free() doesn't work across compilers/DLLs boundaries
11:53:46Araqso every C library which is not braindead gives you its own free() and consequently its own alloc()
11:54:36PMunchHmm, really?
11:54:45Araqreally.
11:54:52PMunchTBH I can't remember passing string around like this in C
12:21:41*claudiuinberlin joined #nim
12:21:56FromGitter<Varriount> Araq: Huh, really? Why is it that free doesn't work across boundaries,?
12:23:33Araqfor the same reason you can't exchange FILE*s
12:23:39Araqdifferent implementations.
12:27:41*Snircle joined #nim
12:33:55*SenasOzys_ joined #nim
12:36:15*SenasOzys quit (Ping timeout: 246 seconds)
12:41:30FromGitter<Varriount> Araq: You might find this interesting: https://chadaustin.me/cppinterface.html
12:44:50*NopeDK joined #nim
12:57:27*marenz_ quit (Ping timeout: 240 seconds)
13:25:52Araq"Don't allocate memory on one side of the DLL boundary and free it on the other. Different DLLs and executables can be built with different heaps, and using different heaps to allocate and free chunks of memory is a sure recipe for a crash."
13:28:34*jjido quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
13:29:59*jjido joined #nim
13:44:00*NopeDK_WhoStoleM joined #nim
13:46:47*NopeDK quit (Ping timeout: 255 seconds)
13:49:37FromGitter<cavariux> @araq thanks for replying how should I export an struct so it appears on a header even if I have deadCodeElim?
13:51:44*yglukhov quit (Remote host closed the connection)
13:56:45Araqwrite the header yourself. the codegen never was designed for header file generation
14:04:43FromGitter<cavariux> Okay :( it would have been a cool feature haha
14:04:56Araqwell you can do
14:05:08Araq#include "generated_stuff.h" in your manually written header
14:08:16*yglukhov joined #nim
14:08:17FromGitter<zacharycarter> https://github.com/mbasso/asm-dom - would there be any value in something like this for Nim?
14:09:13Araqoh yes. very interesting.
14:17:21livcdsorry for stupid question but can i interpolate a string here ? raise newException(SystemError,"blah blah #{foo}") ?
14:18:43FromGitter<RedBeard0531> with this lib you can say $$"blah blah $foo ${1 + 1}" https://lyro.bitbucket.io/strfmt/#string-interpolation-interp
14:21:40FromGitter<RedBeard0531> @Araq any chance of getting something like this built in? While I like that it can be build in a lib, the main downside is that tooling doesn't know about it, so eg, nimsuggest autocomplete doesn't work inside the ${expr}
14:27:59livcdRedBeard0531: ahh ok dont want to use a lib. THought something already exists
14:28:20FromGitter<alehander42> the closest thing is "blah blah $1" % $foo
14:28:26FromGitter<alehander42> with import strutils
14:28:49FromGitter<ephja> all that for SPAs?
14:29:06FromGitter<zacharycarter> all what for SPAs?
14:29:12FromGitter<zacharycarter> the link I shared?
14:30:47AraqSPAs are the future of the UI programming. as sad as that is...
14:31:16AraqRedBeard0531: there is a PR for that that I'll merge before the next release
14:33:06livcdalehander42: ah that's nice thanks
14:33:57FromGitter<alehander42> oh nice, interpolation builtin :3
14:35:10Araqno, not builtin, but a stdlib library
14:40:01*NopeDK_WhoStoleM quit (Ping timeout: 248 seconds)
14:46:26*dddddd joined #nim
14:55:25FromGitter<krux02> I have a question here: http://ix.io/CZr
14:58:19Araqkrux02: that was fixed for you
14:58:39Araqno?
14:58:54*endragor quit (Remote host closed the connection)
15:01:53*endragor joined #nim
15:06:38*endragor quit (Ping timeout: 255 seconds)
15:07:13FromGitter<krux02> Araq: yes I figuerd it out
15:07:26FromGitter<krux02> it is not a bug anymore, but still it is not yet intuitive
15:07:40FromGitter<krux02> I would like to know if a symbol is an alias
15:08:34FromGitter<krux02> currently I have to write a while loop that keeps resolving the type with getTypeImpl and evaluates what heppens
15:09:50*qwertfisch is now known as qwrtfsh
15:10:32*endragor joined #nim
15:10:40*qwrtfsh is now known as qwertfisch
15:11:28*arnetheduck joined #nim
15:11:38FromGitter<krux02> I am currently guessing a but how it works
15:12:58FromGitter<cavariux> @Araq, when I try to include from one nim compiled program to C from another nim compiled program to C, I get duplicated TGenericSeq and NimStringDesc, is this intended behaviour?
15:13:01FromGitter<krux02> but getTypeKind returns ntyGenericInst instead of the ntyAlias
15:13:54FromGitter<krux02> @cavariux that sentence is incomprehensible
15:14:05FromGitter<cavariux> sry :( english isn't my first language
15:14:22FromGitter<krux02> it isn't mine either
15:14:29FromGitter<krux02> try to make shorter sentences
15:14:38FromGitter<Yardanico> English isn't my native language too :P
15:14:51*endragor quit (Ping timeout: 240 seconds)
15:15:14FromGitter<Yardanico> @cavariux but yeah, this is intended behaviour
15:15:16FromGitter<Yardanico> use nim modules
15:15:31FromGitter<Yardanico> don't include C sources from one compiled to C Nim program to another
15:16:25FromGitter<cavariux> Daniil, the issue is that I can't, I'm writing a Kernel in Nim because #yolo and want to write the libc in Nim because #yolo again so, I need to be able to include stdio.h that I'm writing in Nim from the Nim compiler itself
15:18:23*natrys joined #nim
15:20:56*jjido quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
15:22:29*endragor joined #nim
15:23:45*jjido joined #nim
15:24:22FromGitter<krux02> Well isn't yolo the reason not to do that?
15:25:43FromGitter<krux02> I don't know what exactly your problem is, but if I understand it correctly, you should keep all nim stuff in a single nim compilation invocation
15:26:19FromGitter<krux02> If you break that, and compile more nim stuff and try to link those modules together it might become a hassle
15:26:34FromGitter<cavariux> That means I will have to write some C code after all?
15:26:49FromGitter<krux02> Well I don't know
15:26:57*endragor quit (Ping timeout: 240 seconds)
15:27:06FromGitter<Yardanico> @cavariux also some ASM code as well
15:27:09Araqwhy? C has the same problem, can't have two functions 'foo' in your program
15:27:09FromGitter<krux02> I still don't really understand what you are doing
15:28:20FromGitter<cavariux> Hi @araq, no the main issue is that when I compile the Nim project of LibC it generates TGenericSeq and NimStringDesc and it is the same with all of the other projects in Nim, so when I try to integrate the LibC into the Nim Compiler it gets redefinition errors
15:28:50FromGitter<cavariux> Shouldn't this defines be behind some Macros to avoid redefinition?
15:28:57Araqthe problem is your "intergrate the LibC into the Nim compiler"
15:29:34Araqintegrate it properly, don't have random generated names in your public export
15:30:26FromGitter<krux02> the Nim compiler makes sure everything is only defined once. But when you have two completely independent compilation jobs, they can't tell each other about defined symbols. So you get conflicts
15:30:28FromGitter<cavariux> Well, because I'm writing my own Kernel I want to be able to do: ⏎ ⏎ ```echo "Hi there kernel"``` ⏎ ⏎ But I need stdio.h in order to do that and because I'm writing eveything in Nim I wanted to make the libc in Nim too but I get this issues, if this isn't possible I will write it in C [https://gitter.im/nim-lang/Nim?at=5a2ea494ba39a53f1a48f96e]
15:30:53Araqit is possible, but you need to listen.
15:31:33FromGitter<cavariux> Ohh okay, I get it I have to clean the public export header
15:32:18AraqYes.
15:32:52FromGitter<cavariux> Sorry @araq 
15:34:26FromGitter<cavariux> Are there any flags that do it automaticly? I don't need it but if there are I don't want to redefine existing work
15:35:16Araqyou need to write this header file or write some program to extract it for you
15:35:43Araqas I said, --header is moribund
15:35:49FromGitter<cavariux> Okay, thanks  sorry for bothering you
15:36:01*jjido quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
15:36:38*jjido joined #nim
15:36:51Araqbtw you don't have to emulate stdio.h
15:37:36Araqyou can copy lib/system/*.nim and adapt it to your needs and use the --lib config switch to compile with your tweaked Nim core
15:38:23Araqthere is nothing magical about stdio.h, it's a poorly designed C library just like any other C code out there.
15:38:30FromGitter<cavariux> Yeah thanks, but because this is a long term project I want to be able in the future to compile other C projects in my kernel so it will be cleaner to do the C library
15:40:08Araqother C projects likely use GNU libc or Musl's C library
15:40:48Araqwhich use the IO operations as the OS exported them. An OS doesn't give you stdio.h
15:41:03FromGitter<cavariux> Well, I still need to read more about kernel development but I thought I had to make my own lib c
15:41:25Araqlib C is not part of any kernel I am aware of.
15:41:27FromGitter<cavariux> Ohh okay thanks for clearing this for me @Araq definitely will read more about it
15:42:56Araqyou might want to make your Kernel Posix compliant though ;-) then all the libcs out there will work with it automatically. more or less.
15:43:14Araqthe only downside then is that Posix tends to suck.
15:44:19AraqPosix doesn't define any values for their #defines. you want to copy them over from Linux or the BSDs for better interop
15:44:28*Jesin joined #nim
15:44:44FromGitter<cavariux> But well better to suck than to redo all those years of work, gtg but really, thanks for all the help @Araq
15:52:59FromGitter<ephja> ENOSYS ftw
15:54:18FromGitter<Yardanico> @cavariux if all people will think like this we'll never get any OS based on new ideas
15:56:12FromGitter<cavariux> Well, the pourpose of my OS project isn't to redo the libc is for something completly different
15:57:16Araqyou can redo Nim's IO subsystem though. usually we target Posix and the WinAPI directly, not libc.
15:58:33*Jesin quit (Quit: Leaving)
16:06:31*floppydh quit (Read error: Connection reset by peer)
16:07:15*floppydh joined #nim
16:20:47*PMunch quit (Quit: Leaving)
16:25:29*Jesin joined #nim
16:28:16FromGitter<brentp> if I have some bytes from a C library, can I get them into a seq[T] without copying the underlying data? I have seen and used the CArray stuff but wondered if I can get an actual seq.
16:28:52*themagician joined #nim
16:30:11Araqyou can't a seq owns its data
16:30:38Araqyou can't do that in any language really, I dunno why it comes up.
16:32:13FromGitter<brentp> for example, I could do this in python with numpy with the caveat that once the underlying data goes away, the numpy array is also invalid.
16:34:16AraqI guess this means numnim needs to support that
16:34:43FromGitter<tim-st> Is there an index operator for array[a+1..b] for example array[a>..b] ?
16:34:50FromGitter<krux02> Araq: instead of, "you can't do that", you should provide a way to convert a pointer/size pair into an openarray, and say, "a seq owns data, but you can use openarray instead"
16:35:29FromGitter<krux02> @tim-st do you mean range?
16:35:57*natrys quit (Ping timeout: 240 seconds)
16:36:04Araqkrux02, good points.
16:36:39Araqhow do we do toOpenArray(x: pointer; y: int) ?
16:37:08FromGitter<tim-st> @krux02 for array[a..b-1] I can use array[a..<b], I expected the same for opposite array[a+1..b] -> array[a>..b]
16:37:37Araqtemplate `>..`(a, b): untyped = (a+1)..b
16:38:06FromGitter<tim-st> @Araq Is this available or should I write it?
16:38:26Araqyou need to write it, but it's a one liner
16:39:15FromGitter<tim-st> It's a one liner for each file I use it. Than I will stay with +1
16:40:13Araqwrite your own utils.nim file? add --import utils to your config?
16:40:35FromGitter<krux02> Araq: I would suggest ``proc toOpenArrayT (ptr T, y: int)``
16:41:03AraqopenArrays suck :-)
16:41:20FromGitter<krux02> I like them a lot
16:41:22FromGitter<RedBeard0531> View[T]s, ftw?
16:41:30Araqwe need some way to reify them
16:41:41FromGitter<krux02> what does reify mean
16:41:59Araq"make it a first class thing you can pass around"
16:42:25Araqconcepts suffer from the same problem as do parameter passing modes
16:42:33Araqdon't you read my blog? :P
16:42:50FromGitter<brentp> > **<Araq>** I guess this means numnim needs to support that
16:42:57FromGitter<krux02> well occasionally
16:43:05FromGitter<brentp> I wasn't suggesting what nim needs to do, just asking if I could do things better.
16:44:57FromGitter<krux02> @brentp: but I was suggesting what nim needs to do, :P
16:45:12FromGitter<brentp> bold
16:52:37*NopeDK joined #nim
17:03:07*Trustable joined #nim
17:05:10*gokr joined #nim
17:05:38*gokr left #nim (#nim)
17:11:20*rbrt joined #nim
17:12:02*floppydh quit (Quit: WeeChat 1.9.1)
17:24:29FromGitter<zetashift> Huh...I was using spacemacs yesterday and everytime I opened a nim file it would crash but it works now...fascinating
17:29:01FromGitter<ephja> @tim-st might as well use his lzma lib then
17:29:54*natrys joined #nim
17:35:03Demos[m]"make real"
17:36:00*jjido quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
17:36:22*claudiuinberlin quit (Quit: Textual IRC Client: www.textualapp.com)
17:38:26*jjido joined #nim
17:47:20*yglukhov quit (Remote host closed the connection)
17:47:57*yglukhov joined #nim
17:51:21*yglukhov quit (Read error: Connection reset by peer)
17:51:43*yglukhov joined #nim
17:53:05*cavariux joined #nim
17:53:41*rbrt quit (Quit: Oíche mhaith)
17:55:02*rbrt joined #nim
17:55:51*yglukhov quit (Ping timeout: 240 seconds)
17:58:43*nsf quit (Quit: WeeChat 1.9.1)
17:59:34FromGitter<mratsim> What is numnim?
18:06:19*BitPuffin|osx quit (Ping timeout: 268 seconds)
18:12:33AraqNim's version of numpy.
18:12:45Araq(it doesn't exist yet)
18:19:15*claudiuinberlin joined #nim
18:20:48NopeDKasyncftpclient.nim currently failing on devel?
18:30:42FromGitter<ephja> py2nim it
18:35:11AraqNopeDK, tests are green
18:35:13*Senketsu quit (Ping timeout: 258 seconds)
18:35:58NopeDKHmm
18:39:15NopeDKAh, found the problem. Time to get back to work.
18:39:47FromGitter<Yardanico> @ephja you meant "cython2nim" it? :)
18:40:30AraqI wrote a py2nim :P
18:40:46AraqI doubt anybody uses it for anything, it was hidden in a forum post
18:40:58FromGitter<Yardanico> are you about old one?
18:41:00FromGitter<Yardanico> with regexps?
18:41:06Araqyes
18:41:14FromGitter<Yardanico> https://www.google.ru/search?q=py2nim ⏎ google has no mercy
18:41:32FromGitter<Yardanico> oh wait
18:41:35FromGitter<Yardanico> there's no your forum post anymore
18:42:08FromGitter<Yardanico> ah, sorry, there is
18:44:04FromGitter<Yardanico> Wait, does nimforum uses some new font for code?
18:44:16*georgeg[m] left #nim ("User left")
18:45:20*cavariux quit (Remote host closed the connection)
18:48:26Araqunlikely
18:49:49FromGitter<Yardanico> ah, maybe it's because I've updated to windows fall creators update recently
18:54:26*Ven`` joined #nim
18:55:48*sz0 joined #nim
18:58:56*NimBot joined #nim
18:59:24*jjido quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
19:01:39*yglukhov joined #nim
19:04:13*vivus joined #nim
19:05:48*yglukhov quit (Ping timeout: 246 seconds)
19:07:25FromGitter<alehander42> I started writing a more reasonable py2nim helper tool one night on runtime type inference but no time for it lately :D
19:08:36*Ven`` quit (Ping timeout: 260 seconds)
19:09:58FromGitter<alehander42> I need a good little example python library that would be useful for porting tho as a usecase , it worked ok for small programs
19:11:43*claudiuinberlin quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:12:50*Ven`` joined #nim
19:22:47*claudiuinberlin joined #nim
19:24:12*Ven`` quit (Ping timeout: 240 seconds)
19:32:54*Ven`` joined #nim
19:33:11*yglukhov joined #nim
19:36:08*nkr left #nim ("Leaving")
19:37:27*Ven`` quit (Ping timeout: 240 seconds)
19:38:48*GustavoLapasta joined #nim
19:41:43*GustavoLapasta quit (Remote host closed the connection)
19:42:08*GustavoLapasta joined #nim
19:44:00*Ven`` joined #nim
19:44:04subsetparkI feel like I've been here before, but what's the current prescription for applications that fail gcAssert with tracebacks like this:
19:44:16subsetparkhttps://www.irccloud.com/pastebin/vlPRfB62/
19:45:06FromGitter<mratsim> @Araq so should I just stop working on Arraymancer and ait for numnim ? :P
19:45:18FromGitter<mratsim> wait*
19:46:25Araqmratsim, nah, rename arraymancer to "numnim"
19:47:20Araqsubsetpark, shouldn't a GC assertion have a message too?
19:48:04FromGitter<mratsim> Maybe I should rename it to Noonim instead (big sister in Korean)
19:48:06subsetparkAraq: that's just the result of compiling with `useGcAssert` - I didn't include any specific code
19:48:21subsetparkoh i see
19:48:25subsetparkDec 11 19:43:02 ip-10-0-10-115 uwsgi[16682]: [GCASSERT] decRef: interiorPtr
19:49:07Araqdo you use GC_collect() calls?
19:49:16subsetparkno, there's no manual memory management of any kind
19:49:32Araqthreads? DLLs?
19:50:11subsetparkIndirectly - it's being compiled into a DLL which is being called from Python, and the Python code is threaded
19:51:38Araqhttps://github.com/nim-lang/Nim/issues/6887 that one?
19:52:13subsetparkI don't think so - I've never heard of `-d:useNimRtl`
19:52:38Araqwell the GC likes to know the stack
19:52:43Araqit is tied to a thread
19:52:55Araqwhen you mess this up, things just crash
19:53:43Araqin addition to that, the heap is also attached to the thread (it's a thread local heap)
19:54:10subsetparkWhat is useNimRtl? It looks like maybe a windows thing?
19:54:31Araqno it's a general problem that comes up when you have more than one DLL
19:54:53Araq(I use the term DLL for Unix too)
19:56:34subsetparkI don't follow though - are you saying I should be using useNimRtl if I am compiling with --dylib and using in threaded code?
19:56:53AraqI doubt it makes a difference
19:57:06enthus1astit does not on asyncdispatch
19:57:52Araqbut Nim has its own idea about threading. you can't just run things on random threads and expect things to work
19:58:26subsetparkWell no, but this is only in a specific context... This code happily runs inside of a threaded Python context in a different project without any complaints
19:58:53Araqdoes the thread ID change?
19:59:35*xkapastel joined #nim
19:59:44*endragor joined #nim
20:00:07subsetparkDunno, I'll have to see.
20:00:32*nsf joined #nim
20:03:26enthus1astAraq: for understanding, if i import a proc from a dynlib does it then run in its own thread?
20:04:15*endragor quit (Ping timeout: 248 seconds)
20:04:24Araqno, it runs in the thread that calls it
20:05:37subsetparkAraq: would calling NimMain() when the dll is loaded result in a GC/stack for each thread?
20:05:53enthus1astso i should (in theory) be able to import an async proc from a dll and register it with my main threads dispatcher?
20:06:27Araqenthus1ast, in theory async should work
20:06:57Araqsubsetpark, NimMain says "ok, this is the thread we run on, and this is its stack"
20:07:24Araqyou can use setupForeignThreadGc if the procs don't share memory
20:08:34subsetparkwell I can confirm that the thread ID doesn't change
20:08:47subsetparkand this is with NimMain being called just after the dll is loaded
20:09:39*qih joined #nim
20:24:05*rbrt quit (Quit: Oíche mhaith)
20:25:23*Trustable quit (Remote host closed the connection)
20:27:51Araqsubsetpark, that means the Nim code is run by the same thread?
20:29:21subsetparkPretty damn sure. At least the calling thread is reused for multiple requests. I suppose it's possible that uwsgi is loading the dll and then calling a new thread for *all* request responses; I doubt it, but I have some more logging that will tell me
20:30:09Araqok
20:30:43*GustavoLapasta quit (Read error: Connection reset by peer)
20:31:44qihAraq: Hi, how are you? Thanks for the Nim Lang [ Now fanboi action out of way 8-) ] ... are there are GIS-related plans that you know of?
20:31:59*GustavoLapasta joined #nim
20:32:11*rbrt joined #nim
20:32:22*GustavoLapasta quit (Remote host closed the connection)
20:32:46Araqthank you. what does GIS mean?
20:32:59qihGeographic Information Systems, sorry
20:33:33qihMap-stuff ... as in interacting with existing key GIS projects, like Python does.
20:36:03qihI spent most of yesterday identifying various applications or libraries that allow for Routing on maps, and the concensus is that Java, C++ & Python are the key languages that allow interoperability. So I wanted to ask did you know about anything, dom96 said yesterday he did not also.
20:36:30Araqalehander42 is working on it, he is looking for a useful library to translate Python to Nim
20:37:12qihAh a useful one: http://pgrouting.org/index.html
20:37:17Araqeven though that is now called "transpile". with a bit of luck my new word "transfinitepile" will catch on
20:37:39subsetparkoh, i didn't know we had a transpiler now :)
20:37:54Araqno, it's a transfinitepiler
20:38:06subsetparkis it abelian?
20:38:42Araqeven better, it is hyper-recursive
20:38:46dom96Araq: Feel free to add some code to NimBot to detect and correct every time "transpiler" is used :P
20:39:07qihHahaha I doubt it, transpile is OK, transfinitepile is clumsy to say IMHO
20:39:33subsetparkit'd be a lot more useful if it was primitive recursive
20:39:48qihLike GNU?
20:39:50subsetparkso Araq: this might be interesting
20:40:06Araqah my bad. I thought the point was to use as much wrong Latin as possible
20:40:11subsetparkuwsgi spawns two processes, both of which load the Nim DLL and call NimMain()
20:40:18subsetparkbut they actually have the *same* thread ID when they do that
20:40:27Araqwhat?
20:40:33qihAraq: Hahaha no worries, just a little hard to say
20:40:44Araqhow is that even possible, it's supposed to be an ID
20:40:48subsetparkhttps://www.irccloud.com/pastebin/j2ogJqHt/
20:40:56subsetparkwhoops wrong one
20:41:05subsetparkhttps://www.irccloud.com/pastebin/uGADZbMa/
20:41:41subsetparkcheck that out -two workers, with different pids, both import the python module, which loads the nim library and echos `threading.get_ident()`
20:42:03Araquse Nim's getThreadId() instead perhaps?
20:42:21subsetparkah sure, can do
20:42:27Araqanyway, do you keep state on the Nim side of doing thing?
20:42:29Araqs
20:42:35qihAraq: Is alehander42 likely to be online or around? I'd like to talk with (Him?) about porting a Python lib to Nim, some features and testign
20:42:53qihs/testign/testing
20:43:11Araqhe is usually around here, but I'm not sure if he is really looking for more work :P
20:43:17*rbrt quit (Quit: Oíche mhaith)
20:43:45qihHaha OK was not going to load him up, just see what his direction was, and what key functionality was planned
20:44:50qihA functional Nim ROuting module or library that was comparable to ome of the professional .APIs would be brilliant for Nim ... in maps, Routing is King, and hard
20:45:10qihAnyway, thanks for the heads up
20:45:38subsetparkAraq: I don't keep state between calls, no
20:46:11subsetparkObviously objects are allocated, but it's a fresh context each time the Python calls the DLL
20:46:30subsetparkand the response object is initialized on the Python side and passed in by reference
20:48:49NopeDKsubsetpark: Are you working on adding a Nim plugin to uwsgi? If that is the case, I would be very interested in seeing the project.
20:49:03subsetparkNo, this is a Nim DLL being called by a Python application
20:49:20subsetparkThat would be cool though :)
20:50:41NopeDKYeah, been trying to figure out how to interface Nim with uwsgi with the lacking documentation about the C interface. Would be amazing to have native nginx -> uwsgi -> Nim (and perhaps the Jester Nim server)
20:51:35Araqsubsetpark, well so it's just 2 threads serving some kind of requests, not sure why that would fail.
20:51:52Araqdoes it crash immediately or at some random point?
20:51:55subsetparknow you see my perspective :) they're not threads though, they're processes
20:51:59subsetparkno, it's highly intermittent
20:52:14subsetparkwell -
20:52:22subsetparkwith d:release, it crashes intermittently
20:52:38subsetparkbut with useGcAssert, I think it fails the assert immediately
20:53:06subsetparkyes, every time
20:53:49subsetparkand always at the same assign
20:54:10Araqcan you give us some code?
20:54:23Araqdoesn't have to be the full code, just the section that leads to the stack trace
20:54:42Araqbtw "transfinite recursion" is a real thing, https://www.encyclopediaofmath.org/index.php/Transfinite_recursion
20:54:55subsetparkyeah let me give you a relevant path...
20:56:11*SenasOzys_ quit (Read error: Connection reset by peer)
20:56:32*SenasOzys joined #nim
20:58:51subsetparkBTW - confirmed that the thread ID is never changed *and* shared by both processes
20:59:10Araqyou mean Nim's idea of a thread ID?
20:59:14subsetparkwhoa - no, that's wrong
20:59:23subsetparkPython's stays the same - Nim's changes
20:59:43AraqNim uses the OS APIs to get it iirc, let me look it up
21:00:04*vlad1777d joined #nim
21:00:13Araqwhich OS?
21:00:27subsetparkLinux
21:01:09Araqwell if Nim thinks these are different threads and they are...
21:01:23Araqtry to call setupForeignThreadGc()
21:01:55subsetparkI do :(
21:02:07subsetparkI call it at the entrypoint
21:02:53Araqtry to not call setupForeignThreadGc()
21:03:02subsetparkha, I did :(
21:06:03*fredrik92 joined #nim
21:06:20subsetparkHere's some code: https://ghostbin.com/paste/qu4ec
21:06:47subsetparkmaybe i'll try disabling threads in uwsgi
21:07:45*Ven`` quit (Ping timeout: 248 seconds)
21:08:23Araqthere is little reason to convert all the openArrays into seqs
21:08:39AraqopenArray has a[i] and len() too
21:09:02subsetparkoh i know, there's other things that only work on seqs further down
21:11:19Araqwhich line is magister.nim(113) checkJobs?
21:12:03subsetpark var jobs = initialJobs
21:12:28*Ven`` joined #nim
21:15:20Araqsorry, I see no problem. you need to write a bug report with something that I can run.
21:15:37subsetparkwhuf
21:15:38subsetparkok
21:15:43subsetparkthanks for the attention
21:23:51*Ven`` quit (Ping timeout: 240 seconds)
21:28:00*LyndsySimon joined #nim
21:28:41LyndsySimonIs there a cross-platform way (Win10 + Linux) to get the state of various sensors on a PC? E.g., CPU temperature and fan speed
21:31:07*gokr joined #nim
21:32:02*Ven`` joined #nim
21:32:59FromGitter<Yardanico> Yes
21:33:35FromGitter<Yardanico> https://github.com/facebook/osquery
21:33:35LyndsySimonYardanico: What would that be? psutil is the closest I've found, and it's Linux-only.
21:34:53LyndsySimonTY. Reading now.
21:35:15FromGitter<Yardanico> Well IDK, maybe this osquery doesn't provide CPU temperature
21:36:17LyndsySimonOooohh, it's a C library.
21:36:30LyndsySimonOK, I didn't think of that. Duh. I can hook into a C library to get what I need.
21:37:00FromGitter<Yardanico> I don't know any cross platform Nim libraries for sensor reading
21:37:06qihIndeed, C libs are our friend, in theory
21:37:20LyndsySimonI want a small executable that I can use on Linux and Windows. The idea is that I'm setting up a webserver that'll serve system status, and I'll have an RPi or something hitting that and displaying it on a secondary monitor in my office. Just a toy idea.
21:38:27LyndsySimonWorst case I guess I can hook into Win32 and write each OS separately. As long as I return the same data structure, who cares? Nim's compiler means that I can not include the other OS's libraries in each build.
21:38:57*Ven`` quit (Ping timeout: 240 seconds)
21:38:58FromGitter<Yardanico> You can use defines
21:39:39FromGitter<Yardanico> Ah, I mean only for compile-time
21:41:13*LyndsySimon is AFK a bit.
21:42:04*fredrik92 quit (Read error: Connection reset by peer)
21:47:09*marenz_ joined #nim
21:51:48*jjido joined #nim
21:52:05*Ven`` joined #nim
21:53:29*skrylar joined #nim
21:53:59subsetparkAraq: I have good news and bad news
21:54:51subsetparkGood news is: I have resolved the gcAssert failure by replacing a newSeqWith call with an ordinary newSeq followed by mySeq[i] = newSeq[T]()
21:54:59*pigmej_ joined #nim
21:55:07*yaiyan_ joined #nim
21:55:10*ldleworker joined #nim
21:55:27subsetparkThe bad news is, the segfault that I was seeing *without* gcAssert, which I assumed was related to the failure caught by gcAssert, is still happening.
21:56:27*yaiyan quit (*.net *.split)
21:56:28*niv quit (*.net *.split)
21:56:29*ldlework quit (*.net *.split)
21:56:29*pigmej quit (*.net *.split)
21:56:30*pigmej_ is now known as pigmej
21:56:34*niv joined #nim
22:00:32qihpigmej: Hi, good to see you got that of that tragic _, you look soo much younger
22:01:27qihgot rid of that* ... sigh
22:05:23*xet7 quit (Ping timeout: 255 seconds)
22:06:33*claudiuinberlin quit (Quit: Textual IRC Client: www.textualapp.com)
22:08:48pigmejqih: it was my znc :P
22:08:51*Ven`` quit (Ping timeout: 260 seconds)
22:09:22*xkapastel quit (Quit: Connection closed for inactivity)
22:09:44*qih googles 'znc'
22:09:59qihAh got it, k
22:10:59*nsf quit (Quit: WeeChat 1.9.1)
22:12:10*Ven`` joined #nim
22:13:18FromGitter<Varriount> Araq: What were your reasons for not using the HeapAlloc and HeapFree functions on Windows, for the memory allocator?
22:14:50*Ven`` quit (Client Quit)
22:14:59*ldleworker is now known as ldlework
22:14:59*ldlework quit (Changing host)
22:14:59*ldlework joined #nim
22:17:08subsetparkAraq: this is definitely a GC issue though... Let me know if this means anything to you
22:17:32*Ven`` joined #nim
22:17:35subsetparkhttps://www.irccloud.com/pastebin/ZRJkIHWa/
22:17:51*yglukhov quit (Remote host closed the connection)
22:19:49*skrylar quit (Remote host closed the connection)
22:20:36*rbrt joined #nim
22:22:58*Ven`` quit (Read error: Connection reset by peer)
22:23:02*Ven` joined #nim
22:23:38*xet7 joined #nim
22:31:23*rbrt quit (Quit: Oíche mhaith)
22:33:07*natrys quit (Quit: natrys)
22:33:23*rbrt joined #nim
22:36:04*Ven` quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:39:32*Vladar quit (Quit: Leaving)
22:40:14FromGitter<alehander42> @qih I am online now
22:40:41*jjido quit (Ping timeout: 255 seconds)
22:44:32*jjido joined #nim
22:46:12qihCool hi, pm in 5 mins?
22:47:13FromGitter<alehander42> eh ok
22:49:06*solitudesf quit (Ping timeout: 260 seconds)
22:52:18qihAh I am in IRC, pm don't work.
22:52:31qihI'll sign into Gitter then.
22:54:00FromGitter<QeyeH> @alehander42 Hi
22:54:15FromGitter<QeyeH> How do we PM in here
22:55:47FromGitter<Varriount> @QeyeH Why do you need to PM?
22:56:10FromGitter<QeyeH> So I do not flood the channel Map/GIS talk 8-)
22:58:15*themagician quit ()
23:09:19*SenasOzys quit (Ping timeout: 248 seconds)
23:13:43*astronavt joined #nim
23:15:02Araqvarriount: I use VirtualAlloc, VirtualFree instead, the GC depends on page aligned pointers
23:15:50Araqsubsetpark, it's not "definitely" a GC bug. most likely it's something else.
23:16:42subsetparkAny thoughts? It's segfaulting when it tries to clean up objects
23:17:34Araqdo you have 'ref's that should have been ptrs?
23:18:29subsetparki mean, i'm not doing anything funny with them, so i don't know why they would be
23:18:57*gokr quit (Ping timeout: 250 seconds)
23:19:10Araqhuh? ref means under the GC's control
23:20:39subsetparkI know, that's what I mean
23:21:20subsetparkEverything that's a ref is a normal object, constructed in the nim code and used only there
23:21:53Araqwhat is your JobThingie?
23:23:11subsetparkit's an object, passed in as a struct - it just has a few basic fields, shorts and doubles, et cetera. They're constructed as structs and passed by the Python code. They're not refs.
23:25:20*SenasOzys joined #nim
23:26:16*Jesin quit (Quit: Leaving)
23:38:27*SenasOzys quit (Read error: Connection reset by peer)
23:38:33*SenasOzys_ joined #nim
23:49:16*jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:49:56*beatmox quit (Ping timeout: 258 seconds)
23:50:18*beatmox joined #nim
23:56:50*pydsigner quit (Ping timeout: 258 seconds)
23:57:01*pydsigner joined #nim
23:57:37*Rush quit (Ping timeout: 258 seconds)
23:59:12*RushPL joined #nim