<< 29-10-2017 >>

00:01:35FromGitter<mratsim> I used it to construct proc names on the fly in Arraymancer
00:01:56*Ace_Emerald quit (Ping timeout: 255 seconds)
00:03:44subsetparkDo the values inside the backticks have to be arguments to the template?
00:06:16subsetparkeg I'm trying this code:
00:06:23subsetpark for pair in vars:
00:06:23subsetpark let
00:06:23subsetpark (name, example) = pair
00:06:23subsetpark `name` {.inject.} = example.next
00:07:04subsetparkBut I'm getting "'name' is declared but...", which makes me think that it's not actually being interpolated
00:11:37subsetparkbut I can make it work by using a separate template for just that line and it's not too verbose, so that works for now
00:26:20subsetparkOk... weirder question. If I have a template forAll: <block> do: <block2> - is there a way to inject the variables declared in the first scope into the second scope?
00:26:55subsetparkWell, dang, I guess that's not what I mean. Ok, ignore me for now
00:34:20*dddddd quit (Read error: Connection reset by peer)
00:37:57*xet7 joined #nim
00:38:02*Ace_Emerald joined #nim
00:45:49*xet7 quit (Quit: Leaving)
00:47:12captainkraftI have a very strange bug. When I remove the line ``txt: cstring`` from a block of vars, I get a crash: "Abnormal termination" at a call to a c library. When I paste that code back in, everything runs fine. I don't even use the var txt, which is why I tried to remove it.
00:59:35FromGitter<Varriount> captainkraft: Sounds like memory corruption
01:01:11FromGitter<Varriount> Something is reading/writing that portion of the stack that it shouldn't.
01:01:18captainkrafthmm
01:06:27*Ace_Emerald quit (Ping timeout: 240 seconds)
01:07:11captainkraftIt might be related to a string I'm hanging onto from reading a file. I use readFile to put the entire file into a string, then I pass a cstring of each line to the C lib
01:16:40*xet7 joined #nim
01:20:42*xet7 quit (Client Quit)
01:23:11captainkraftIs that a bad idea? It seems like some memory corruption happening under the hood that I should either understand how I'm causing it or that shouldn't be happening at all.
01:23:17captainkraftAny insight would be greatly appreciated.
01:26:01*xet7 joined #nim
01:26:21*vivus quit (Quit: Leaving)
01:31:20subsetparkPOC for property based testing: https://github.com/subsetpark/ny
01:41:07*vlad1777d quit (Ping timeout: 252 seconds)
01:45:30captainkraftI'm trying to access `ctx.style.window.scrollbar` but the compiler is telling me the field scrollbar doesn't exist. I'm also looking at the nim code and there is definitely `scrollbar*: scroll` in the window object definition. Any idea why that is happening?
01:57:09*enthus1ast- quit (Quit: Lost terminal)
02:02:22*ipjk_ joined #nim
02:04:47*ipjk quit (Ping timeout: 248 seconds)
02:13:24*Ace_Emerald joined #nim
02:16:51*skrylar joined #nim
02:18:02*Ace_Emerald quit (Ping timeout: 260 seconds)
02:22:28*chemist69 quit (Ping timeout: 240 seconds)
02:27:29skrylarwonder what kind of sadness would be involved in something like mruby (or a python equivalent?) that used nim's gc.
02:27:39skrylaralthough i think araq has gone on jihad against the gc so that may be a pointless question
02:27:50skrylarwell. suppose ARC can be hooked in to script contexts too
02:28:20skrylarsomeone did a lua interpreter for Go that hooks in to go's gc so the app/script supposedly just punt data around without worry
02:32:47*Snircle quit (Quit: Textual IRC Client: www.textualapp.com)
02:36:15*chemist69 joined #nim
02:55:38FromGitter<superfunc> subsetpark: just watched your talk, nice job!
02:56:21subsetparkoh why thank you friend!
02:58:17*Ace_Emerald joined #nim
02:59:15*Ace_Emerald quit (Client Quit)
03:01:13FromGitter<jamesalbert> Hi, I'm looking for a way to dynamically call an object method. e.g. I have a variable called opcode and want to do something like self.`opcode`. In python, it would be getattr(self, opcode), but I can't find the equivalent for nim. Anyone here know how to do this?
03:02:19FromGitter<jamesalbert> (that code snippet is supposed to be ticks, not a code snippet ;) )
03:02:20skrylaryou can override the dot operator iirc
03:02:59FromGitter<jamesalbert> thanks skylar, I'll check that out and see if I can make use of it
03:03:00skrylarjamesalbert: https://nim-lang.org/docs/manual.html#special-operators-dot-operators ?
03:03:20FromGitter<jamesalbert> ty for the link 
03:08:10*derlafff quit (Ping timeout: 264 seconds)
03:20:46*derlafff joined #nim
03:26:44*ipjk_ quit (Quit: Leaving)
03:28:18FromGitter<jamesalbert> @FromIRC if I override the dot operator, I only get the variables name not its value. Is there any other way of doing it? I noticed here https://nim-lang.org/docs/manual.html#templates-identifier-construction that the ticks can interpolate variables to their value. Is there anyway I can do this casually outside of a template? Something like: ⏎ ⏎ ```let opcode: uint8 = get_opcode() ⏎ self.`opcode` # method
03:28:18FromGitter... call``` [https://gitter.im/nim-lang/Nim?at=59f54ad28808bed73d3f08e9]
03:30:00*vlad1777d joined #nim
03:31:40skrylarjamesalbert foo.bar in nim is equivalent to bar(foo)
03:32:09skrylarif you're trying to ex. use a variable as a delegate, you just call it and hand it self
03:32:45skrylarthing.do(stuff) is the same as do(thing, stuff)
03:48:30*ryanhowe joined #nim
03:49:09*arecaceae quit (Remote host closed the connection)
03:49:11FromGitter<Varriount> @Gooseus That sounds good for a basic library.
03:49:39*ryanhowe quit (Client Quit)
03:50:04*arecaceae joined #nim
03:50:12*fastrom joined #nim
03:50:40FromGitter<Varriount> I had originally planned to make something like Boto3, where you have Session objects (which carry the basic state needed to make requests).
03:52:26FromGitter<Varriount> From these session objects you can create client and resource objects. Client objects allow you to make low-level method calls, while resource objects present a higher, resource-based view of the API. The resources created by the resource objects make appropriate API calls as their attributes are accessed.
03:53:35*vlad1777d quit (Ping timeout: 240 seconds)
03:59:47*vlad1777d joined #nim
04:11:25*fastrom quit (Quit: Leaving.)
04:12:27*vlad1777d quit (Ping timeout: 240 seconds)
04:14:55*couven92 quit (Quit: Client Disconnecting)
04:55:26FromGitter<Varriount> @Gooseus The generation code I posted a day or two ago attempts to load the JSON schema, however it doesn't actually generate much concrete code after that.
04:55:52FromGitter<Varriount> Half the battle in that area is simply loading the JSON file into concrete data structures.
06:17:14*chemist69 quit (Ping timeout: 255 seconds)
06:17:39*chemist69 joined #nim
06:19:16*miran joined #nim
06:47:32*SusWombat joined #nim
06:48:50skrylaris there a tag system in nim like go has nowadays? in go you can put things like `foo` in structs, and reflection can see those.
06:49:20skrylari *suspect* but have not tried, that macros can read pragmas off of types, although that requires making empty pragma macros to attach to things
06:56:36FromGitter<Varriount> skrylar: You can have a no-op pragma attached to a type or procedure
07:20:58*nsf joined #nim
07:53:37*SusWombat quit (Read error: Connection reset by peer)
07:53:52*SusWombat joined #nim
07:57:41FromGitter<mratsim> There is a tag system not sure about how the go one works @skrylar https://nim-lang.org/docs/manual.html#effect-system-tag-tracking
08:00:48SusWombatdo seqs have something like hasKey? for checking for duplicates?
08:05:45GertmIs there a way to get the ssl dlls compiled into the exe? Or embedded in some way?
08:14:35miranSusWombat: you can 'deduplicate' duplicated entries in seq
08:16:32*Trustable joined #nim
08:16:44SusWombatmiran, i look into that thanks
08:17:44miranSusWombat: other than that, you can maybe use sets? (not the default ones, but those you get with 'import sets')
08:21:29*gokr joined #nim
08:25:17*jjido joined #nim
08:25:31*tdc joined #nim
08:28:05*Vladar joined #nim
08:29:11*yglukhov joined #nim
08:29:41FromGitter<mratsim> Gitter is dead to me
08:29:48FromGitter<mratsim> (https://files.gitter.im/nim-lang/Nim/XagN/2017-10-29_09-22-57.png)
08:30:31FromGitter<jamesalbert> maybe my syntax is off but I can't seem to declare an object property as a table, e.g. ⏎ ⏎ ```type ObjectName = ref object ⏎ prop: Table[int, proc] ⏎ ...``` ⏎ ⏎ I keep getting `Error: invalid type: 'Table[system.int, proc]' in this context: 'proc (self: ObjectName)' ... [https://gitter.im/nim-lang/Nim?at=59f591a74ff065ac188c6658]
08:31:00FromGitter<mratsim> @SusWombat, they don’t, but you can do like in python, convert to set, and convert back to seq :P.
08:33:20FromGitter<mratsim> @jamesalbert it works for me: ⏎ ⏎ `````` [https://gitter.im/nim-lang/Nim?at=59f5924f32e080696e3b772f]
08:33:46FromGitter<jamesalbert> @mratsim yes that works, but any method I have underneath it cause it to error out
08:33:56*Arrrr joined #nim
08:33:56*Arrrr quit (Changing host)
08:33:56*Arrrr joined #nim
08:34:26FromGitter<jamesalbert> for example, try adding: ⏎ ⏎ ```method unimplemented(self: ObjectName) {.base.} = ⏎ return``` ⏎ ⏎ underneath it [https://gitter.im/nim-lang/Nim?at=59f592928808bed73d3ffb2c]
08:36:20FromGitter<mratsim> mmm there is a bug, I could hack that with generics ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=59f59304b20c6424295f7338]
08:37:54FromGitter<mratsim> anyway, I had to deal with that 6 months ago, I suggest you don’t use just proc but you properly define its type otherwise you might have to cast to proc quite often: https://github.com/mratsim/nim-rmad/blob/master/src/autograd.nim#L46-L52
08:39:28FromGitter<mratsim> and report the bug on the bug tracker with my surprising workaround ;)
08:39:35FromGitter<jamesalbert> @mratsim thanks, that is definitely... one way of doing it ;) and yeah I tried to do that too, but it kept on automatically adding {.closure.} to the expected type which the functions I'm storing in the table do not have. Anyway around that?
08:39:56FromGitter<jamesalbert> I will, you definitely get street cred for that
08:39:57*Trustable quit (Remote host closed the connection)
08:40:31FromGitter<mratsim> you can’t store a proc in any container without it being a closure.
08:40:58FromGitter<jamesalbert> duly noted, I'm a nim noob if you couldn't tell
08:41:19FromGitter<mratsim> it’s not Nim, it’s the same in all language
08:41:28FromGitter<jamesalbert> I can't even language
08:41:46*alehander42 joined #nim
08:42:45FromGitter<mratsim> or try that but I’m pretty sure it will error out at one point: ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=59f5948532e080696e3b7fe2]
08:42:57FromGitter<stisa> Btw, I don't think `proc` is a concrete type, did you ⏎ try with `proc()` ?
08:43:24alehander42hey subsetpark: I also started work on a property based testing lib for Nim last month https://github.com/alehander42/nim-quickcheck , what's your design goal with ny ?
08:43:57FromGitter<jamesalbert> @mratsim trying that now ⏎ @stisa I was able to use it like that as a variable e.g. `var prop: Table[int, proc] = {...}`
09:04:06FromGitter<jamesalbert> @mratsim hmm, your code works, but now it's complaining about the `method unimplemented(self: ObjectName)` ⏎ I pretty much have to `method unimplemented(self: ObjectName[U])`and U isn't in scope.
09:05:42FromGitter<jamesalbert> oh well, it's late for me 2 am for me. I'm gonna call it a night. ty for the help 
09:05:59FromGitter<mratsim> enjoy your Nim dreams
09:06:11FromGitter<jamesalbert> they are the best dreams
09:06:31FromGitter<mratsim> method unimplementedU (self: ObjectName[U]) but generic methods are also buggy :/
09:12:16*alehander42 quit (Quit: Page closed)
09:39:04*jjido quit (Read error: No route to host)
09:44:27*Arrrr quit (Ping timeout: 240 seconds)
09:50:08skrylarmratsim: i don't think that effect tag system is meant for reflection tho
10:01:27*thomasross_ joined #nim
10:03:57*thomasross quit (Ping timeout: 240 seconds)
10:06:56*SusWombat quit (Remote host closed the connection)
10:15:44*rauss quit (Read error: Connection reset by peer)
10:17:45*rauss joined #nim
10:24:48FromGitter<mratsim> @skrylar you’re probably right. The only reflection proc I found was InstantiationInfo or within nimscript
10:25:28skrylarnim doesn't really do reflection at all
10:25:49skrylaryou can do type introspection with macros
10:26:31skrylarmostly go tags are nice just for stuff like autoserializer code or stuff like that. that nim module that was linked here a while back had to do an entire macro to encapsulate the type section just for a couple pragmas
10:27:21*CcxWrk quit (Read error: Connection reset by peer)
10:28:30*jjido joined #nim
10:29:07*CcxWrk joined #nim
10:35:25FromGitter<Yardanico> @jamesalbert you can't store different proc methods in a table
10:35:31FromGitter<Yardanico> well you can - with raw pointers
10:37:55FromGitter<Yardanico> and you don't need custom things really
10:38:01FromGitter<Yardanico> "self.mymethod" would work
10:38:08FromGitter<Yardanico> it would be rewritten to mymethod(self)
10:55:35*gokr quit (Ping timeout: 240 seconds)
11:00:41*jjido quit (Ping timeout: 240 seconds)
11:02:24*Snircle joined #nim
11:17:33dom96@jamesalbert I think what you want is an `var procMap = array[MaxOpcodeValue, proc (yourArgs: type): ReturnType]`, then you can just do: procMap[opcode] and get your procedure.
11:24:27*aziz_ joined #nim
11:26:10*aziz_ is now known as aziz
11:26:13*Arrrr joined #nim
11:26:28*aziz quit (Client Quit)
11:40:48*miran quit (Ping timeout: 240 seconds)
11:41:16*elrood joined #nim
11:43:13*xet7 quit (Quit: Leaving)
11:57:16*xet7 joined #nim
11:59:30FromGitter<exts> is 'Serenitor/embeddedNimScript' the only package for embedding nimscript into nim?
12:03:40*FromGitter quit (Remote host closed the connection)
12:03:41*oprypin quit (Quit: Bye)
12:03:57*FromGitter joined #nim
12:04:03*oprypin joined #nim
12:14:05*xet7 quit (Ping timeout: 255 seconds)
12:19:51*xet7 joined #nim
12:27:12*xet7 quit (Quit: Leaving)
12:28:43*xet7 joined #nim
12:31:37*skrylar quit (Remote host closed the connection)
12:33:20*jjido joined #nim
12:33:56*xet7 quit (Quit: Leaving)
12:37:55*xet7 joined #nim
13:01:01*dddddd joined #nim
13:16:26*nsf quit (Quit: WeeChat 1.9.1)
13:30:05*Arrrr quit (Read error: Connection reset by peer)
13:36:01*jjido quit (Read error: Connection reset by peer)
13:38:14*xet7 quit (Quit: Leaving)
13:48:30*cspar joined #nim
13:50:01*cspar_ quit (Ping timeout: 240 seconds)
13:58:01*jjido joined #nim
14:05:38*xet7 joined #nim
14:07:16*jjido quit (Read error: Connection reset by peer)
14:18:02*jjido joined #nim
14:18:30*cspar_ joined #nim
14:20:47*cspar quit (Ping timeout: 248 seconds)
14:27:03*jjido quit (Read error: Connection reset by peer)
14:32:55FromGitter<Varriount> skrylar: What do you mean, Nim has no type introspection? The marshal module uses runtime type info
14:38:34dom96wow, looks like boehm is the best when it comes to replying to HTTP requests the fastest
14:56:35*cspar joined #nim
14:57:26*cspar_ quit (Ping timeout: 255 seconds)
15:07:48*Sentreen quit (Ping timeout: 240 seconds)
15:09:26*zolk3ri joined #nim
15:14:21*miran joined #nim
15:14:35FromGitter<Varriount> I wonder why
15:14:42GitDisc<treeform> Hey, is there some thing that can define bits in a type? Kind of like this: https://gist.github.com/treeform/d9d3c49de0e36129c360ba19f6af7940
15:16:26dom96Not AFAIK
15:16:33dom96Best thing to do is to create accessors for those fields
15:16:42GitDisc<treeform> ok
15:16:47dom96and have a larger field in your type
15:17:00GitDisc<treeform> Yeah thats what other people did, though if there was a better way.
15:17:20dom96Are you working on a websockets package?
15:17:27GitDisc<treeform> I have submitted my first PR, https://github.com/nim-lang/Nim/pull/6624
15:17:31GitDisc<treeform> did I do it right?
15:18:58GitDisc<treeform> For now I have fixed up the existing packadge enough, todo what I want todo, I am considering making a ws packadge yes.
15:20:09dom96Are you starting from scratch? There is an existing package, it might be a good idea to improve it, but I understand if you just want to start from scratch
15:20:22GitDisc<treeform> But I also like doing bit twiddling protocols and stuff.
15:20:31GitDisc<treeform> Yeah there are two I am getting ideas from.
15:20:48*Sentreen joined #nim
15:20:53dom96commented on your PR
15:22:25GitDisc<treeform> sure ill add that
15:22:53GitDisc<treeform> Oh I did not like basic2d/basic3d, I wrote my own mathy lib for this
15:22:58GitDisc<treeform> I should publish it
15:23:16GitDisc<treeform> but I guess there is many of them now
15:23:44*xet7 quit (Quit: Leaving)
15:24:30dom96I don't like those either, I'll probably remove them from the stdlib
15:25:41GitDisc<treeform> Change log says it was removed
15:26:24dom96Oh, I guess I already did that heh
15:27:12GitDisc<treeform> dom do you know if the asyc stuff production grade, i was looking at libuv because it claims support for a large number of users, and is used by node.js, do you know if people run the async stuff in production now?
15:27:52dom96treeform: NimBot, NimForum and my snake game are using async in production
15:27:57*yglukhov quit (Remote host closed the connection)
15:28:00dom96Pretty sure there are some companies too
15:28:07*HoloIRCUser1 quit (Ping timeout: 255 seconds)
15:28:33*yglukhov joined #nim
15:29:26GitDisc<treeform> with my node.js server I had 3000 concurent players online when I released my game in early access. I want to be able to support 3000 players when I go out of early access.
15:30:18GitDisc<treeform> This is possible using threads (with 1mb) per thread per person only 3 gig machine is needed.
15:30:29GitDisc<treeform> But I am not sure what polling methods it uses etc...
15:30:43GitDisc<treeform> Is there more docs about the lowlevel implemination of it?
15:31:09dom96not really, you can take a look at the code
15:31:12dom96or just ask me questions
15:31:21GitDisc<treeform> ok
15:31:36dom96I'm currently working on a much more performant HTTP server
15:31:42GitDisc<treeform> why did you guys decide not to use libuv, or libevent etc?
15:31:48dom96I would suggest you do some benchmarks for websockets too
15:31:51GitDisc<treeform> It appears your just rolled your own right?
15:32:01dom96because we (myself mainly) hate dependencies :)
15:32:24dom96yeah, we use kqueue,epoll,iocp on BSD/Mac, Linux, and Windows respectively
15:33:01GitDisc<treeform> thats what libuv uses, so in theory it can/should be as good
15:33:07*yglukhov quit (Ping timeout: 260 seconds)
15:33:27GitDisc<treeform> I don't realy want a webserver, I serve no http files, just the websocket.
15:33:38GitDisc<treeform> So the whole HTTP parsing for me is not important
15:34:09dom96sure, makes sense
15:34:13GitDisc<treeform> I have a client side app/game that is hosted on S3 basically and the only method it uses to talk to the server is websockets
15:34:16dom96What's your game btw?
15:34:42GitDisc<treeform> http://store.steampowered.com/app/449140/Istrolid/
15:35:32dom96ooh, nice
15:35:41GitDisc<treeform> thanks
15:36:07GitDisc<treeform> It started out as a webgame, but I found more people to play the game on steam.
15:36:47GitDisc<treeform> I am trying to redo the root server (it handles chat and logins) in nim.
15:37:09dom96Awesome. What made you pick Nim over all the other contenders?
15:37:17GitDisc<treeform> Right now its in coffee script which compiles to javascript and runs on node.js
15:37:38GitDisc<treeform> * I like indentaion based langauges
15:37:53GitDisc<treeform> * I am angry at python for being so slow
15:38:14GitDisc<treeform> * I am angry at coffeescript for still being javascript and stupid typos get into production
15:38:33GitDisc<treeform> I think of nim as coffeescript for C.
15:38:57GitDisc<treeform> I am alreayd used to dealing with a non mainstream lagnauge so its easy to convert.
15:39:38dom96Brilliant. Please feel free to ping me with any async questions.
15:40:22zolk3ritreeform: Any reason for the "$1000 monetary limit" that's been posted by someone under the reviews?
15:40:54GitDisc<treeform> Yes. https://medium.com/@treeform/why-there-is-a-1000-cap-da28de02e186
15:41:15zolk3riOK, let me read that. :P
15:41:35GitDisc<treeform> We have plans to change this, or to make it less strict
15:41:36dom96the ship/game art looks awesome, did you draw all of that yourself?
15:41:39GitDisc<treeform> for 1.0 though
15:41:50GitDisc<treeform> Yes I did all of the art untill a couple of weeks ago.
15:42:07GitDisc<treeform> I got an art person helping me out now.
15:42:38GitDisc<treeform> thank you for liking my art
15:43:24dom96I want to make games but art is always what stops me, so I appreciate when others do it well and am a bit jealous :)
15:43:42GitDisc<treeform> Its just a ton of practice.
15:44:10GitDisc<treeform> Also art is not that expensive to buy/commision.
15:44:17GitDisc<treeform> compared to programmer time
15:44:35dom96interesting, how do you find people to draw art for you?
15:44:51GitDisc<treeform> modders and mod comunaites
15:45:55GitDisc<treeform> Jonothan Blow even recomended finishing the whole game with programmer art and just finding an artists when you know the game play is good and free of bugs.
15:47:12dom96Hrm, that could work. I bet I would get frustrated about the "stand in" art anyway though.
15:48:06GitDisc<treeform> ok async question
15:48:14GitDisc<treeform> so I am using it now, but I also have mysql db
15:48:19GitDisc<treeform> which is not async
15:48:34GitDisc<treeform> would mysql basically stop everything from working when it waiting?
15:49:08GitDisc<treeform> If i used threads atleast a person can be per thread
15:49:18GitDisc<treeform> but with async they kind of share same thread no?
15:50:23GitDisc<treeform> one could also imageing like an async wrapper for mysql, that uses threads but comunicated with the async stuff via callbacks.
15:51:04GitDisc<treeform> or one can also image a pure nim wrapper for mysql protocol, that is async based.
15:51:36GitDisc<treeform> Will my async/mysql stuff cause me trouble?
15:54:00dom96treeform: depends how fast mysql can reply
15:54:36dom96There are some async mysql packages though https://github.com/tulayang/asyncmysql
15:55:00GitDisc<treeform> oh, i looked for it. But did not see this, thanks!
15:55:40dom96also, I'm fairly sure yglukhov is using async in production for his game
15:55:55GitDisc<treeform> neat
15:56:08GitDisc<treeform> Do you think many people come to nim for gamedev?
15:56:17GitDisc<treeform> It feels like a natural fit
15:56:26dom96yeah, there seems to be a lot of game devs coming to Nim
15:56:42dom96Why is it a natural fit?
15:57:13GitDisc<treeform> very flexible GC/integrates with existing game C/C++ libs?
15:57:42GitDisc<treeform> I had terible time in wrapping steam.dll with nodejs
15:57:42FromGitter<data-man> Hello! ⏎ Araq rests today from Nim? :)
15:58:08GitDisc<treeform> I have not tried to wrap steam.dll with nim yet. But I don't think it would be as hard.
15:58:29FromGitter<data-man> @treeform: MariaDB is not it better?
15:58:48GitDisc<treeform> probably, I am just used to mysql.
15:59:15GitDisc<treeform> I though MariaDB would be 100% clone ... but they started to add/change stuff.
15:59:18GitDisc<treeform> I hate change.
16:00:05GitDisc<treeform> I don't like learning stuff about mysql, I just want to do mystuff and move on.
16:00:26FromGitter<data-man> FirebirdSQL?
16:01:15GitDisc<treeform> i don't know what that is.
16:01:46GitDisc<treeform> I like redis
16:02:02GitDisc<treeform> I wish there was a fork of redis that stored stuff to the harddrive
16:02:19GitDisc<treeform> and was not ram bound
16:02:41FromGitter<data-man> https://firebirdsql.org https://github.com/FirebirdSQL/firebird
16:03:21GitDisc<treeform> Does not say firebird is like mysql?
16:04:26GitDisc<treeform> hmm I would never find usuable wrappers for it like I could for mysql
16:04:50FromGitter<data-man> lmdb, libmdbx, sophia - key-value DBs
16:06:54FromGitter<data-man> See https://github.com/pmwkaa/ioarena - embedded storage benchmarking
16:12:31FromGitter<data-man> https://github.com/symisc/unqlite has embedded scripting language with tons of built-in functions
16:13:37FromGitter<data-man> until I can't remember anything else :)
16:14:14*cspar_ joined #nim
16:15:05GitDisc<treeform> hmm some one named data-man is trying to sell my all kind of databases 
16:15:39dom96treeform: there is a redis that stores to the HDD IIRC
16:15:40*JL_ joined #nim
16:15:57dom96well, redis itself can store to HD
16:16:52*cspar quit (Ping timeout: 260 seconds)
16:17:30dom96but yeah, still ram bound
16:18:18GitDisc<treeform> yeah my db is 300gb, I can't afford a server with this much ram.
16:18:44GitDisc<treeform> I used to just use redis.
16:18:51GitDisc<treeform> untill I ran out of ram
16:20:04dom96treeform: trying out your game a bit, should the main menu be taking 100% CPU on my MBP? :)
16:20:37GitDisc<treeform> welcome to Javascript
16:20:49JL_hi, I was doing the tutorial and was wondering what is the rationale behing procedure having an implicit result variable and more important, initialised with a default value ?
16:20:56dom96heh, gonna rewrite the client in Nim too? :)
16:21:17GitDisc<treeform> only if I like the expernce of porting the small server
16:21:21JL_I mean it's just calling for bugs impossible to find...
16:21:47FromGitter<data-man> @treeform: try lmdb or libmdbx (better) - it's memory-mapped DB
16:22:01GitDisc<treeform> On my MBP it does not take 100% of cpu
16:24:16GitDisc<treeform> What are you using to measure cpu? Macs lie about CPU use.
16:24:53GitDisc<treeform> they say 100% of like the low energy state the CPU is in, not the actual cpu power.
16:25:24GitDisc<treeform> 3% on my MBP...
16:27:12*Arrrr joined #nim
16:27:12*Arrrr quit (Changing host)
16:27:12*Arrrr joined #nim
16:27:23GitDisc<treeform> jumps up to 30% in battles
16:28:46GitDisc<treeform> JL_ at first I though it was strange too. But I like it now. I have not had many bugs with this.
16:28:59dom96treeform: activity monitor
16:29:05dom96and my fan starts spinning :)
16:29:17GitDisc<treeform> well they always spin...
16:29:31GitDisc<treeform>
16:29:32GitDisc<treeform> https://cdn.discordapp.com/attachments/371759389889003532/374233299884834816/unknown.png
16:29:39GitDisc<treeform> Are you looking at this thing on the bottom?
16:29:50GitDisc<treeform> The % CPU column is basically broken on mac
16:30:24dom96yep, I see it using everything on that graph
16:30:55GitDisc<treeform> what year is your mac?
16:31:03GitDisc<treeform> Are you using the web version?
16:31:35GitDisc<treeform> do you have like software webGL on (caused by adblock and privecy extentions)
16:31:37dom962015
16:31:46GitDisc<treeform> are you using firefox?
16:31:49dom96no, via Steam
16:32:04GitDisc<treeform> hmm I don't know then.
16:32:21GitDisc<treeform> This is another thing that furstrates me about js. I can't debug low level issues.
16:32:22*JappleAck joined #nim
16:32:22GitDisc<dom>
16:32:23GitDisc<dom> https://cdn.discordapp.com/attachments/371759389889003532/374234015345147926/Screen_Shot_2017-10-29_at_16.31.15.png
16:32:33GitDisc<treeform> Yeah thats bad.
16:32:59dom96it seems to be having a knock on effect on WindowServer
16:33:05dom96and activity monitor too for some reason
16:33:38GitDisc<treeform> The chrome source code is like 4gb, its really hard to debug strange problems.
16:34:06GitDisc<treeform> With a native openGL wrapper atleast I could get GPU specs, timers etc...
16:34:52dom960_o
16:35:16dom964gb jesus
16:35:35dom96I guess I shouldn't be surprised though
16:37:15*arecaceae quit (Remote host closed the connection)
16:37:34*arecaceae joined #nim
16:37:39GitDisc<treeform> These kind of issues make me really mad. It runs on $200 chrome books and tablets. But here we have some probably very stupid issue and it does not run on a 2k$ compuer.
16:41:26dom96yeah, it sucks :(
16:41:58*cspar__ joined #nim
16:44:01zolk3riyeah just stop using JS et al.
16:44:15*cspar_ quit (Ping timeout: 248 seconds)
16:46:26GitDisc<treeform> to be fair in this case its not a JS issue, its a GPU/driver/chrome issue.
16:46:46GitDisc<treeform> You have these kinds of issue in C++ too. Its just you can debug them better.
16:46:56zolk3riet al includes chrome, and c++
16:46:58zolk3ri:P
16:53:07FromGitter<alehander42> I can use getType only on typed args right ? I have to somehow make this work for a macro with untyped
16:54:55FromGitter<Yardanico> well you can't
16:55:00FromGitter<Yardanico> you should accept "typed" then
16:56:05*yglukhov joined #nim
17:00:01dom96I don't think that's true
17:00:17*yglukhov quit (Ping timeout: 248 seconds)
17:00:17dom96alehander42: what are you passing for the untyped arg?
17:01:01*Sentreen quit (Ping timeout: 240 seconds)
17:01:03dom96oh, mratsim, your article is on HN https://news.ycombinator.com/item?id=15579806
17:04:02*xet7 joined #nim
17:04:48FromGitter<alehander42> nah I'll just generate a new macro invocation and then expand this one with typed
17:09:01*xet7 quit (Quit: Leaving)
17:09:22*Jesin joined #nim
17:12:01FromGitter<Yardanico> well I know, but you asked a question if it's possible with one macro :)
17:15:06*Sentreen joined #nim
17:19:35FromGitter<alehander42> :D yep, I am trying to do some complicated code generation based on object fields, but I think it's not too hard with this cascade of macros too
17:21:17FromGitter<data-man> The Nim team, what do you think about https://github.com/blog/2392-introducing-code-owners? ⏎ In the D, relatively recently, this innovation was introduced for the Phobos.
17:24:39FromGitter<Yardanico> it wouldn't be very useful really
17:25:01FromGitter<Yardanico> almost all nim compiler/stdlib code is written by Araq and dom96
17:25:10FromGitter<Yardanico> there are modules by another people, but still
17:25:43mirandom96: you really think that *currently* nim could attract more (python) crowd than julia? (re: HN thread)
17:26:51dom96miran: hrm? I don't think I said that
17:28:11dom96I meant that Nim has a chance to attract some of the Python crowd.
17:28:16dom96Who knows if more than Julia
17:28:57miranthen i misunderstood your reply where you disagree with the guy saying nim wouldn't be "his first choice for scientific computing language..." :)
17:29:38mirani got the feeling you wanted to say that nim *would* be a good first choice (and not julia or crystal)
17:30:14dom96well, yeah :)
17:30:26dom96that is what I wanted to say
17:31:10miranwell, my plan for using nim is exactly that, because currently i'm using python for scientific computing
17:31:29dom96awesome, you should reply on HN and say that ;)
17:31:43miranbut i don't see myself committing to doing that *currently*
17:32:22mirani didn't explore nim's ecosystem that much, but some 'basic tools' for linear algebra are missing
17:32:32miran(or i just didn't find them yet)
17:32:57*slim_jim_jiss joined #nim
17:34:42dom96yes, unfortunately somebody has to come in and build these tools
17:34:50dom96I think andreaferetti has made a start
17:36:53miranok, i'll write the stuff from this discussion there, to inform general public :)
17:42:21*yglukhov joined #nim
17:45:13FromGitter<Gooseus> @Varriount interesting, I can dig it, though I'm usually more of a fan of lower level libraries than bigger ORM models that make a lot of assumptions... but I'm sure both would be welcome since it seem like this nim community draws in people from a lot of different backgrounds
17:45:35*jjido joined #nim
17:46:41*yglukhov quit (Ping timeout: 248 seconds)
17:48:56*yglukhov joined #nim
17:49:52dom96huh, somebody flagged that thread
17:50:21FromGitter<Gooseus> dom96 the one about the dude complaining about Rust?
17:50:27dom96yeah
17:50:48FromGitter<Gooseus> yeah, lots of people were tearing it apart in the comments
17:56:51*jjido quit (Read error: Connection reset by peer)
18:01:14*smt` joined #nim
18:04:02*smt quit (Ping timeout: 246 seconds)
18:09:29*ibutra joined #nim
18:10:59*jjido joined #nim
18:18:51*Snircle quit (Quit: Textual IRC Client: www.textualapp.com)
18:21:53*kier quit (Ping timeout: 248 seconds)
18:32:24*ibutra quit (Quit: My iMac has gone to sleep. ZZZzzz…)
18:34:54*kier joined #nim
18:35:45dom96I dislike the lack of transparency
18:35:53dom96The threads just disappears into thin air without any explanation
18:36:07dom96*thread
18:43:53*ibutra joined #nim
18:51:19GitDisc<treeform> hmm this async, await, waitFor, Future {.async.} starting to really get confusing
18:51:37GitDisc<treeform> Has any one written an article that explains them like you are 5?
18:53:14dom96Not that I'm aware of
18:53:19dom96But I can explain them here if you'd like
18:53:49dom96'await fut' means: suspend the current async procedure until 'fut' completes
18:53:52GitDisc<treeform> waitFor should only be used at the top level stuff right? it like opens up a poll loop?
18:53:56dom96yeah
18:54:16GitDisc<treeform> what If I want to waitFor inside an Future returning function
18:54:27GitDisc<treeform> is Future returning function different from {.async.} ?
18:54:29dom96Take a look at the definitions of asyncCheck, waitFor and runForever
18:54:31dom96it should help
18:54:56dom96why would you want that? it would block everything
18:55:07dom96if you want to wait for a future's result then use 'await'
18:55:38dom96if you don't then just use 'asyncCheck' (asyncCheck just re-raises any exceptions)
18:56:02GitDisc<treeform> I just wait to wait for a future to return
18:56:10dom96then use 'await'
18:56:17GitDisc<treeform> compile error then?
18:57:01dom96hrm?
18:57:36GitDisc<treeform> https://gist.github.com/treeform/01af421530f841affdf7391f4499399a
18:57:44GitDisc<treeform> how should i remove waitFor there?
18:58:07GitDisc<treeform> pool is a mysql pool not related to async poo
18:58:09GitDisc<treeform> pool is a mysql pool not related to async pool
18:58:09dom96Can't you simply s/waitFor/await/?
18:58:16GitDisc<treeform> no
18:58:23dom96why?
18:59:34federico3when is the next streaming? :)
18:59:43GitDisc<treeform> it was saying some thing about futures but now it says
18:59:51GitDisc<treeform> ```testmysql.nim(36, 14) Error: undeclared identifier: 'await'```
18:59:52dom96the rest of your function is wrong
19:00:02dom96{.async.} takes care of the Future creation
19:00:16dom96You just treat the function as if it returns 'Row'
19:00:26GitDisc<treeform> hmm
19:00:38dom96if rows.len == 1: return rows[0]
19:00:39dom96etc.
19:00:43dom96and use 'await'
19:00:47dom96it should work
19:00:56dom96unless pool.getRows doesn't return a Future
19:02:09GitDisc<treeform> it does
19:02:11GitDisc<treeform> https://gist.github.com/treeform/fb955cf1b1f3b1daf4e3c18d285c70a2
19:02:13GitDisc<treeform> like this?
19:02:25GitDisc<treeform> ```testmysql.nim(35, 53) template/generic instantiation from here
19:02:25GitDisc<treeform> lib/pure/asyncmacro.nim(301, 10) Error: Expected return type of 'Future' got 'Row'```
19:03:42GitDisc<treeform> Here is what I have, I hope its not too much: https://gist.github.com/treeform/96f048887ffbeb0c2dc0c15286f5fc37
19:04:06dom96The return type still needs to be Future[Row] :)
19:04:16dom96I understand why this would be confusing
19:04:27dom96and the error message should be better :\
19:04:59GitDisc<treeform> ok now it works
19:05:05GitDisc<treeform> thanks
19:05:15dom96Also, I would suggest making your `main` an async proc too
19:05:21dom96then just use 'waitFor main' at the bottom
19:05:36GitDisc<treeform> got it
19:05:50GitDisc<treeform> waitFor seems to be a bridge between non async code and sync code
19:06:14dom96It's mainly just a convenience
19:06:22GitDisc<treeform> have you ever used gevent from python?
19:06:26dom96In node the event loop is executed implicitly (AFAIK)
19:06:30dom96In Nim you execute it explicitly
19:06:51dom96You can do so in three ways: runForever(), waitFor() and by calling `poll` manually
19:06:56dom96runForever and waitFor both call poll
19:07:03GitDisc<treeform> yeah i saw that from the source code
19:07:05dom96runForever calls it forever :) (good for servers)
19:07:14GitDisc<treeform> yeah
19:07:20dom96waitFor does it until the future you passed it finishes (good for short running programs)
19:07:56dom96so, it's not a big deal but for beautiful code waitFor should be used only once :)
19:08:10GitDisc<treeform> await does the waitFor thing when you are in a : Future[...] {.async.} function?
19:08:18GitDisc<treeform> oh food is here brb
19:08:28dom96'await' does something completely different
19:08:34dom96It doesn't affect the event loop at all
19:08:48dom96It "yields"
19:09:01dom96so it suspends the async procedure until the future completes, and lets other procedures run
19:12:43dom96bah, I really need dedicated CPUs for these HTTP benchmarks
19:14:53dom96federico3: not sure :)
19:18:27*JL_ quit (Quit: Page closed)
19:26:57ArrrrDo you think that the claim "like python but faster" will still be true once you remove the GC? I'm under the impression people using python don't want to give to much thought into memory management. From time to time pythoners have issues with strings/seqs being nil by default.
19:29:02AraqArrrr: do you think a RC'ed GC is still a GC?
19:29:10Araqcan you stop the FUD already?
19:29:16*ibutra quit (Quit: My iMac has gone to sleep. ZZZzzz…)
19:29:51GitDisc<treeform> GC is getting removed?
19:30:05Araqnow see what you did...
19:30:49GitDisc<treeform> can you say varargs 1 or more?
19:31:07*tdc quit (Ping timeout: 260 seconds)
19:31:39GitDisc<treeform> ```Error: ambiguous call; both mysqlhelper.getRows(pool: AsyncMysqlPool, query: SqlQuery)[declared in mysqlhelper.nim(33, 5)] and mysqlhelper.getRows(pool: AsyncMysqlPool, query: SqlQuery, args: varargs[string])[declared in mysqlhelper.nim(58, 5)] match for: (AsyncMysqlPool, SqlQuery)```
19:31:53GitDisc<treeform> I feel like this is not? One when you have varargs and the other one when you dont?
19:32:08dom96Don't worry, the GC is not being removed.
19:36:50GitDisc<treeform> `Error: illegal capture 'args'`
19:37:04GitDisc<treeform> I hope I don't need a laywer
19:38:18dom96hrm, that suggests async doesn't support varargs I'm afraid
19:38:28GitDisc<treeform> what wait?
19:38:34dom96let me check
19:38:52Araqyou need to use a seq here
19:39:09Araqvarargs is just an openarray, the compiler cannot move them to the heap
19:39:17GitDisc<treeform> i am copying code here: https://github.com/nim-lang/Nim/blob/master/lib/impure/db_mysql.nim#L127
19:39:34dom96yeah, this sucks
19:40:12*vlad1777d joined #nim
19:40:13FromGitter<mratsim> @dom96 Thanks for the notification. I guess since it’s flagged I will just leave it alone
19:42:22GitDisc<treeform> maybe just do the java thing and define 16 verions of the proc?
19:43:00*tdc joined #nim
19:43:04GitDisc<treeform> query(arg1).. query(arg1,arg2)...query(arg1,arg2,arg3)...
19:43:13FromGitter<mratsim> Please don’t do that treeform: https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
19:43:20dom96That would be a dirty hack :)
19:43:32GitDisc<treeform> maybe write a macro to write that for me?
19:43:37dom96But just use a seq like Araq said,
19:43:49*arecaceae quit (Remote host closed the connection)
19:43:54GitDisc<treeform> ```type mismatch: got (SqlQuery, varargs[string])
19:43:55GitDisc<treeform> but expected one of:
19:43:56GitDisc<treeform> proc dbFormat(formatstr: SqlQuery; args: seq[string]): string```
19:44:07*arecaceae joined #nim
19:45:24FromGitter<mratsim> let s = @varargs
19:45:42FromGitter<Yardanico> write dbFormat(myquery, @["1", "2", "3"])
19:45:45FromGitter<mratsim> convert your varargs to seq with @
19:46:09FromGitter<Yardanico> @mratsim he doesn't need that
19:46:37FromGitter<Yardanico> async procs don't support arguments like varargs or "var arg: type"
19:46:50GitDisc<treeform> ok
19:47:04dom96*'arg: var type'
19:47:10GitDisc<treeform> Just trying to match the mysqldb API but async
19:47:17GitDisc<treeform> turns out that is not possible
19:47:17dom96They will support that soon (and you can already use FutureVar[T] for that)
19:48:52FromGitter<Yardanico> dom96: they will?
19:49:26dom96Yardanico: just a case of automatically rewriting 'var T' to 'FutureVar[T]'
19:49:32dom96(I hope)
19:50:02FromGitter<Yardanico> well then you'll need to modify the invocation of async proc, no?
19:50:26FromGitter<Yardanico> e.g. "await myproc(myvarvariable)" needs to be rewritten to support FlowVar, or no?
19:52:28GitDisc<treeform> oh I think I need future var now
19:52:40GitDisc<treeform> why is this async stuff so hard...
19:52:45*GitDisc <treeform> cries in corner
19:52:50FromGitter<Yardanico> because it's always hard :P
19:53:00FromGitter<Yardanico> it's even harder in C or C++ :D
19:53:28GitDisc<treeform> its not hard with gevent ... gevent is the best ...
19:54:08FromGitter<Yardanico> gevent is python
19:54:12FromGitter<Yardanico> and python is interpreted :P
19:54:20dom96It's easy once you get to know it :)
19:54:54GitDisc<treeform> it looks like I would need two copies all of functions one with {.async.} and one without
19:55:00FromGitter<Yardanico> you don't
19:55:02FromGitter<Yardanico> use multisync
19:55:33FromGitter<Yardanico> https://nim-lang.org/docs/asyncdispatch.html#multisync.m,untyped
19:56:51GitDisc<treeform> Maybe I should go back to 3000 thread problem
19:58:33dom96why do you need a sync version?
19:58:36FromGitter<Yardanico> then you'll need to be worried about thread locking/memory sharing
20:01:19*Mat4 joined #nim
20:02:06GitDisc<treeform> i think i am just getting angry at this.
20:02:11GitDisc<treeform> will try another day
20:02:59dom96:\
20:03:24dom96What's the problem?
20:03:52FromGitter<Yardanico> yay, less things in todo.txt :) https://github.com/nim-lang/Nim/commit/d52a1061b35bbd2abfbd062b08023d986dbafb3c
20:04:40FromGitter<Yardanico> and yeah, as expected we'll have a major backwards compatibility breakage, but this is fine :)
20:04:43FromGitter<Yardanico> (before 1.0)
20:05:04FromGitter<Yardanico> I'm actually glad these changes are done
20:07:19miranthere is `..<` now? i've been out of loop, but i know there was some talk about it before
20:08:13FromGitter<Yardanico> it was there already
20:08:35miranadvantages over `.. <foo`?
20:09:04FromGitter<Yardanico> it's more consistent
20:09:06FromGitter<Yardanico> AFAIK :)
20:09:11Araqmiran: .. <foo*3 is error prone
20:09:26Araqas unary operators bind higher, this is parsed as <foo * 3
20:09:59Araq ..< has no such problems and looks better IMO
20:10:32dom96I on the other hand don't think it looks better, but oh well.
20:10:47FromGitter<Yardanico> it's cleaner because of spacing
20:10:56FromGitter<Yardanico> you immediatly know that it's using ..< operator
20:11:01*Vladar quit (Remote host closed the connection)
20:11:18Araqwell likewise you know that .. < is 2 operators and it is
20:11:36Araqthe spacing always was clear ;-)
20:11:58miranAraq: thanks for the clarifivation
20:12:39FromGitter<Yardanico> well if I use "1..<10" is it using ..< operator or .. and < ?
20:12:48FromGitter<Yardanico> probably ..<
20:12:57miranjust wanted to ask the same thing Yardanico
20:13:29FromGitter<stisa> mmh so now `Slice` can be of mixed types? like a `int..float` `1..3.2`
20:13:47FromGitter<Yardanico> I don't think so
20:13:53FromGitter<Yardanico> it's for backwards index
20:14:45Araqyardanico: if you use 1..<10 you get '..<'
20:14:45FromGitter<Yardanico> e.g. with myObject[1..^1] you'll need to have a [] proc which accepts a Slice[int, int]
20:14:50FromGitter<Yardanico> ah, ok
20:14:56miranalso, can i do something like `1..<^2`?
20:14:59FromGitter<Yardanico> @stisa but maybe it is, I don't know, tryit :P
20:15:07FromGitter<Yardanico> miran: what would it do?
20:15:07Araqmiran: no.
20:15:32Araqjust to be clear: the rules about spacing haven't been touched at all
20:15:46Araq%&%$%&$%& is a single operator
20:15:56Araq%& %$%&$ %& is 3 operators
20:16:54miranYardanico: go from 1 up to (not including) -2
20:17:17FromGitter<Yardanico> minus 2?
20:17:19FromGitter<Yardanico> wtf
20:17:24FromGitter<Yardanico> it's not really intuitive
20:17:35miran2 "from the right", ^2
20:17:43FromGitter<Yardanico> well < does that for you already
20:18:08miran1..<^2 == 1..^3
20:18:48FromGitter<Yardanico> just write 1..^3 then ? :)
20:18:57miranto be clear, it looks ugly - i just wanted to check if it is possible
20:19:10FromGitter<Yardanico> it *would* probably be possible
20:19:16FromGitter<Yardanico> but you'll need a lot of new operators
20:19:18*kier quit (Remote host closed the connection)
20:19:21FromGitter<Yardanico> e.g ..<^ operator
20:19:59jjido<^> operator
20:20:18FromGitter<Yardanico> xd
20:20:47*kier joined #nim
20:21:23miran"The unary < is now deprecated, for .. < use ..<" - Araq: will current codes with "1 .. <10" be broken?
20:21:32FromGitter<Yardanico> they wouldn't
20:21:35FromGitter<Yardanico> they're deprecated
20:21:36dom96they'll give a warning
20:21:56FromGitter<Yardanico> And before 1.0 release all these deprecations will be removed, mwa-ha-ha :)
20:22:05miranok, but in 0.19/1.0 that would break?
20:22:18FromGitter<Yardanico> probably yes
20:22:37Araqmiran: v1 should not change deprecation deadlines IMO
20:22:49Araqso a couple of versions long unary '<' will exist
20:22:53dom96IMO v1 should remove all deprecations
20:23:04miran+1
20:23:04FromGitter<Yardanico> there are A LOT of old deprecations
20:23:05Araqregardless of whether one version is named 'v1'
20:23:21FromGitter<Yardanico> Araq: what's the deadline for a deprecation?
20:23:28FromGitter<Yardanico> in nim stdlib :)
20:23:47Araq1 version is "really urgent to remove this"
20:23:54Araq3 versions otherwise
20:24:00Araq*if
20:24:01FromGitter<Yardanico> for example https://github.com/nim-lang/Nim/blob/5f685bb0e6b2d68b9796e6a7d29469ce3f3b38ec/lib/deprecated/pure/rawsockets.nim :)
20:24:33FromGitter<Yardanico> or unsigned module
20:24:38AraqI know this cruft persists because nobody checks for this "3 version rule"
20:26:05*Arrrr quit (Read error: Connection reset by peer)
20:26:07miranbtw, what about re/nre confusion? which one will be used in v1.0? and why both? :)
20:26:37FromGitter<stisa> Araq: shouldn't these https://github.com/nim-lang/Nim/commit/d52a1061b35bbd2abfbd062b08023d986dbafb3c#diff-5cfdfeab79c2d2b7bbc78af7060c38c3R3534 be `[]=` ?
20:26:42FromGitter<Yardanico> and what about TMyObject-like names deprecation? does "3 version rule" still applies for them ?
20:27:10Araqyardanico: yes, as I said
20:27:22AraqI know it's full of cruft
20:27:48Araqbut really recently deprecated stuff shouldn't be removed just because we have v1
20:28:00Araqbut I won't fight too much over this
20:28:43Araqstisa: ouch, good eyes
20:29:07AraqI thought the tests would cover these -.-
20:29:26FromGitter<Yardanico> wtf, they didn't ?
20:30:04FromGitter<Yardanico> well I though that these []= are used quite extensively in stdlib too
20:32:20Araqapparently nobody sets a[^1]
20:32:32Araqall usages are reading a[^1] and that was fine
20:39:30FromGitter<stisa> btw @Yardanico just tried it, `y[1..2.656] = [5,6]` works, looks like it floors float to int, eg `2.656->2`
20:42:26FromGitter<Yardanico> lol
20:43:59FromGitter<Yardanico> @stisa that's probably a bug
20:45:07Araqyeah :-)
20:45:21Araqnow I remember why we have 'ord'
20:50:57*tdc quit (Ping timeout: 240 seconds)
21:00:13*Mat4 quit (Quit: leaving)
21:05:49*gokr joined #nim
21:15:13*miran quit (Quit: Leaving)
21:20:34*jjido quit (Read error: Connection reset by peer)
21:28:15*yglukhov quit (Read error: Connection reset by peer)
21:28:48*yglukhov joined #nim
21:34:45*jjido joined #nim
21:47:55*slim_jim_jiss quit (Ping timeout: 255 seconds)
21:50:38*yglukhov quit (Remote host closed the connection)
21:51:14*yglukhov joined #nim
21:55:27*yglukhov quit (Ping timeout: 240 seconds)
21:56:23*JappleAck quit (Quit: Leaving)
22:13:49*nsf joined #nim
22:43:08FromGitter<mratsim> This is interesting: https://github.com/minimaxir/big-list-of-naughty-strings
22:45:45*xet7 joined #nim
22:53:33*nsf quit (Quit: WeeChat 1.9.1)
23:00:06*elrood quit (Quit: Leaving)
23:05:30FromGitter<luka-mikec> hi, is there a way to temporary make subsequent declarations visible to other modules?
23:08:34FromGitter<mratsim> I’m buying the physical book @dom96, I have $25 for the book and $14 for shipping :/
23:09:13dom96D:
23:09:19dom96Maybe Amazon would be cheaper?
23:10:15FromGitter<mratsim> No, 41.86€
23:10:43dom96Sorry :\
23:11:06FromGitter<mratsim> the sad thing is that you get less than the shipping company
23:12:02FromGitter<mratsim> but don’t worry, it’s just 10 euros :)
23:21:36Araqluka-mikec: https://forum.nim-lang.org/t/3269/1
23:24:25FromGitter<luka-mikec> @Araq thank you!
23:32:57*jjido quit (Read error: Connection reset by peer)
23:42:07*zolk3ri quit (Remote host closed the connection)