<< 15-09-2019 >>

00:00:02*junland quit (Quit: %ZNC Disconnected%)
00:00:49*junland joined #nim
00:26:47*ng0 quit (Quit: Alexa, when is the end of world?)
00:27:47*pbb quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
00:28:04*pbb joined #nim
00:29:51*pbb quit (Client Quit)
00:30:04*pbb joined #nim
00:31:17*pbb quit (Client Quit)
00:31:44*pbb joined #nim
00:33:18*disruptek quit (Ping timeout: 265 seconds)
00:43:01*disruptek joined #nim
00:49:38*disruptek quit (Ping timeout: 276 seconds)
00:50:50*disruptek joined #nim
01:26:19*owl_000 joined #nim
01:58:25*laaron quit (Remote host closed the connection)
01:59:56*Hideki_ joined #nim
02:00:17*laaron joined #nim
02:42:00*laaron quit (Remote host closed the connection)
02:45:06*laaron joined #nim
02:48:26*sealmove quit (Quit: WeeChat 2.6)
03:24:03*Hideki_ quit (Remote host closed the connection)
03:24:56*Hideki_ joined #nim
03:25:44*chemist69 quit (Ping timeout: 245 seconds)
03:27:44*chemist69 joined #nim
03:29:09*Hideki_ quit (Ping timeout: 246 seconds)
03:39:09*Hideki_ joined #nim
03:40:23*Hideki_ quit (Remote host closed the connection)
03:44:13*Hideki_ joined #nim
03:48:52*Hideki_ quit (Ping timeout: 268 seconds)
03:50:10*kungtotte quit (Ping timeout: 240 seconds)
04:02:04*aexoxea joined #nim
04:06:58*exelotl quit (Ping timeout: 245 seconds)
04:07:19*kungtotte joined #nim
04:22:39*Hideki_ joined #nim
04:37:47*Hideki_ quit (Ping timeout: 276 seconds)
04:45:06*laaron quit (Remote host closed the connection)
04:45:34*snooptek joined #nim
04:48:45*LEdoian[m] quit (*.net *.split)
04:48:45*Connor[m] quit (*.net *.split)
04:48:46*r4vi quit (*.net *.split)
04:48:46*dashed quit (*.net *.split)
04:48:46*Guest1685 quit (*.net *.split)
04:48:46*odc quit (*.net *.split)
04:48:46*LyndsySimon quit (*.net *.split)
04:48:46*surma quit (*.net *.split)
04:48:55*snowolf joined #nim
04:49:09*r4vi joined #nim
04:49:16*Connor[m] joined #nim
04:49:17*dashed joined #nim
04:49:19*odc joined #nim
04:49:24*LEdoian[m] joined #nim
04:51:22*snooptek quit (Remote host closed the connection)
04:52:05*laaron joined #nim
04:53:14*snooptek joined #nim
04:54:19*LyndsySimon joined #nim
04:54:19*surma joined #nim
05:05:32*Hideki_ joined #nim
05:07:56*nc-x joined #nim
05:08:37*nc-x quit (Remote host closed the connection)
05:09:48*Hideki_ quit (Ping timeout: 258 seconds)
05:23:50*Jesin quit (Quit: Leaving)
05:26:19*Jesin joined #nim
05:31:39*fov60 joined #nim
05:37:45*laaron quit (Quit: ZNC 1.7.1 - https://znc.in)
05:38:19*laaron joined #nim
05:45:40fov60any one use the nim assimp library?
05:51:52*laaron quit (Remote host closed the connection)
05:53:56*laaron joined #nim
05:55:37*solitudesf joined #nim
05:57:26*dddddd quit (Remote host closed the connection)
06:00:33*fov60 quit (Ping timeout: 250 seconds)
06:34:48*absolutejam1 joined #nim
06:41:56*Cthalupa quit (Ping timeout: 276 seconds)
06:56:14FromGitter<zacharycarter> I have previously
06:57:29*Cthalupa joined #nim
07:00:00*gmpreussner quit (Quit: kthxbye)
07:04:46*gmpreussner joined #nim
07:07:38*Cthalupa quit (Ping timeout: 240 seconds)
07:08:43*Vladar joined #nim
07:19:47*Cthalupa joined #nim
07:41:21*Cthalupa quit (Ping timeout: 268 seconds)
07:41:44*absolutejam1 quit (Ping timeout: 276 seconds)
07:56:49*Cthalupa joined #nim
08:16:32*laaron quit (Quit: ZNC 1.7.1 - https://znc.in)
08:17:07*laaron joined #nim
08:17:07*solitudesf quit (Ping timeout: 268 seconds)
08:23:15*actuallybatman quit (Ping timeout: 240 seconds)
08:23:15*narimiran joined #nim
08:43:38*arecaceae quit (Ping timeout: 240 seconds)
08:46:27*laaron quit (Remote host closed the connection)
08:48:05*laaron joined #nim
09:21:44*shashlick quit (Remote host closed the connection)
09:22:08*shashlick joined #nim
09:23:40*NimBot joined #nim
09:24:27*PMunch joined #nim
09:31:55*nsf joined #nim
09:34:12*NotCreative joined #nim
09:46:46shashlickWhat's up doc
09:55:39*couven92 joined #nim
10:14:15*Perkol joined #nim
10:24:47*NotCreative quit (Ping timeout: 260 seconds)
10:35:01*laaron quit (Remote host closed the connection)
10:37:55*laaron joined #nim
10:45:55*actuallybatman joined #nim
10:51:17*actuallybatman quit (Ping timeout: 245 seconds)
11:02:57*laaron- joined #nim
11:03:01*laaron quit (Remote host closed the connection)
11:07:28*Hideki_ joined #nim
11:11:38*Hideki_ quit (Ping timeout: 240 seconds)
11:24:12*nsf quit (Quit: WeeChat 2.5)
11:28:49*Perkol quit (Remote host closed the connection)
11:35:16*al_ joined #nim
12:09:21ZevvTrying to pinpoint compile-time performance problems I'v narrowed my problem down to Tables[] storing objects.
12:09:44ZevvThis snippet stores 1000 objects indexed by an int and looks them up again. Storing is fast but looking up takes over 20 seconds on my machine:
12:09:47Zevvhttp://ix.io/1VeA
12:11:38*krux02 joined #nim
12:12:32Zevvthe interesting part is that the time spent seems to be proportional to the size of the object, but has nothing to do with the keys. It does not matter if the searched keys are in the table or not, only the size of the stored objects
12:18:56Araqinteresting
12:19:56*dddddd joined #nim
12:20:00ZevvMy original problems was indexing by strings, so I started hunting down the hash functions, but no problems there
12:21:15Zevvit's really proportional. Horizontal object size, vertical run time: https://zevv.nl/div/graph.png
12:21:43Araqpointless copying going on internally?
12:22:01ZevvI have no clue. I got lost again in the VM :(
12:24:28Araqyou can use macrocache.nim instead?
12:26:01Zevvhmm can that replace a Table[string, object]?
12:27:31ZevvI might as well just use seqs and do O(1) lookups, my tables are typically small
12:41:36*aexoxea quit (Quit: Goodbye!)
13:12:59*abm joined #nim
13:17:13*PMunch quit (Remote host closed the connection)
13:35:59*krux02 quit (Remote host closed the connection)
13:51:11Zevvso, there's my 10x speedup, going from Table[] to seq[] :/
13:52:42disruptekthat could explain why my openapi stuff is so slow.
13:53:18disruptekit takes about 1sec per 1000 lines of code generated.
13:54:08Zevvthat sounds about the same order of magnitude for my stuff as well
13:54:52disrupteki need to figure out a pattern for compile-time tests this week.
13:56:57*Hideki_ joined #nim
13:58:13federico3Zevv you mean O(n)?
13:59:01disruptekwrong answers delivered in O(1) time.
13:59:25federico3For small hasmaps, linear search on an array can be faster
13:59:37federico3huh?
14:00:14Zevvfederico3: yes of course, O(n)
14:00:32FromGitter<geotre> Is there any way to "simplify" a generic type to a regular type?
14:00:33*lritter joined #nim
14:00:52disruptekwhat are you trying to do?
14:01:16FromGitter<geotre> json "to" macro doesn't work with generics, but all api types need to be wrapped in a list type with some extra fields
14:01:29FromGitter<geotre> And trying to reduce repetition
14:02:02*narimiran quit (Ping timeout: 240 seconds)
14:02:43disruptekthat sounds like a superset of support for generics in the `to` macro.
14:02:51disruptekie. it sounds even harder than the original problem.
14:04:26disruptekcan you use a variant instead?
14:07:13FromGitter<geotre> Ideally want to do something like this: http://ix.io/1Vfn
14:07:20FromGitter<geotre> Can try a variant
14:07:20disrupteki wonder if one could write a macro to de-generic a generic.
14:07:41FromGitter<geotre> Yeah that's what I was thinking, wondered if someone had already done it
14:08:23disruptekyou could make another variant type that is ListElement; usage would be pretty close to natural generic version, ultimately.
14:09:12*solitudesf joined #nim
14:11:23FromGitter<geotre> Yeah that is true
14:14:05FromGitter<mratsim> @disruptek, I think degeneric a generic is called monomorphization
14:14:39FromGitter<mratsim> or reification
14:16:01federico3tables could implement a fallback to seq when it makes sense
14:16:10disrupteksure, but aside from doing it the naive way in syntax, can it be done in semantics?
14:16:12federico3even to array
14:17:44disruptekfederico3: easier to just make a special type and avoid a bump.
14:19:26FromGitter<geotre> @mratsim I wasn't sure what that process would be called, thanks
14:20:11FromGitter<Vindaar> @geotre the problem afaict with your code is not that `List` is a generic, but rather that it's a generic to a `ref object`. So if you can have `List[T]` be an `object` your example works
14:20:36FromGitter<mratsim> @FedericoCeratto bad idea, I don't want to debug strange perf profile in tables, I'd rather have the raw data structure in the stdlib and then if someone wants to impelment an optimized table add it as a nimble packages
14:20:55disruptekthat's what i meant by "bump".
14:23:12FromGitter<geotre> @Vindaar ah you are correct! I had assumed it was because of the generic as the first example compiles fine, and with the generic example it gives an error that's hard to follow. Thanks for the help
14:23:21FromGitter<Vindaar> :)
14:23:37disruptekthat's a surprise.
14:26:33*al_ quit (Quit: al_)
14:31:58*nsf joined #nim
14:33:32federico3disruptek: yes, a SmallTable and also a write-once table
14:35:19disruptekokay, so that's an order of SmallTable, WormTable, BugTable, what else?
14:35:55federico3mratsim: there is nothing wrong in providing smarter data structures in a language that comes battery included. Especially if raw d.s. perform poorly
14:47:35*laaron- quit (Remote host closed the connection)
14:52:38*laaron joined #nim
14:57:11*Hideki_ quit (Remote host closed the connection)
14:58:19*Hideki_ joined #nim
14:58:26*Hideki_ quit (Remote host closed the connection)
14:58:42*Hideki_ joined #nim
15:01:43*krux02 joined #nim
15:03:12*krux02 quit (Remote host closed the connection)
15:04:41FromGitter<mratsim> yes but don't overwrite the default table
15:04:57FromGitter<mratsim> same thing with seq vs SmallSeq
15:05:30FromGitter<mratsim> current seq are very inefficient if you always need less than 2-4 elements
15:06:43FromGitter<mratsim> but if you always use big seqs, and default is overridden you will always pay the "is my seq small?" check tax.
15:08:27*laaron- joined #nim
15:12:17*laaron quit (Quit: ZNC 1.7.1 - https://znc.in)
15:22:26*owl_000 quit (Ping timeout: 246 seconds)
15:28:01disruptekit's about time we had a little seqs talk in here.
15:30:17FromGitter<Varriount> @deech The best you can do is use `system.compiles` to perform an explicit test.
15:36:26Zevvdisruptek: not in front of the kids!
15:36:40disruptekoh, right.
15:38:26ZevvI *will* steal that and use that as a section header in the "nim memory" doc
15:38:39disruptekheh
15:40:27disruptekbtw, when i want seqs, i rarely want a size less than 2.
15:40:43disruptekhonestly, it's hard to imagine exactly who would.
15:42:19Zevveverybody would, but noone talks about it
15:42:21disruptekperhaps mratsim is a grower, not a shower.
15:43:04disruptekempty seqs is just that, zevv.
15:43:23disruptekwe don't talk about it, but it's very inefficient.
15:44:56*narimiran joined #nim
15:45:28*Calinou quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
15:45:50*Calinou joined #nim
15:51:09*abm quit (Ping timeout: 265 seconds)
15:52:18*laaron- quit (Remote host closed the connection)
15:55:22*Hideki_ quit (Remote host closed the connection)
15:55:36Zevvhaha I am so funny http://zevv.nl/nim-memory/#_lets_talk_about_seqs
15:55:59*Hideki_ joined #nim
15:56:55*filcuc joined #nim
15:57:04*Yardanico quit (Remote host closed the connection)
15:57:30Zevvaaaand thats enough with the silly stuff for today
15:57:37filcucThe output of "nimble tasks" has some kind of format?
15:59:13*laaron joined #nim
16:00:56*Hideki_ quit (Ping timeout: 276 seconds)
16:03:00federico3mratsim: sure. And it would be best to default to smart types and suggest selecting specialized types as an optimization
16:03:47FromGitter<mratsim> @disruptek, I need small seq of size 1
16:04:01FromGitter<mratsim> up to 5
16:04:35FromGitter<mratsim> because people most often use tensors of rank 1 (vectors) and rank 2 (matrices)
16:05:32FromGitter<mratsim> the small seq is used to store the vector/matrix sizes and strides
16:10:45*Hideki_ joined #nim
16:13:52*filcuc quit (Ping timeout: 265 seconds)
16:22:19*Hideki_ quit (Remote host closed the connection)
16:22:58*Hideki_ joined #nim
16:25:23*Hideki_ quit (Remote host closed the connection)
16:25:39*Hideki_ joined #nim
16:25:41*Hideki_ quit (Remote host closed the connection)
16:26:15*Hideki_ joined #nim
16:26:40*Hideki_ quit (Remote host closed the connection)
16:26:54*Hideki_ joined #nim
16:26:56*Hideki_ quit (Remote host closed the connection)
16:27:29*Hideki_ joined #nim
16:31:38*Hideki_ quit (Ping timeout: 240 seconds)
16:34:04*abm joined #nim
16:44:31*Ven`` joined #nim
16:50:40*ofelas joined #nim
16:59:57Zevvmratsim: is your problem the default cap of seqs?
17:00:19Zevvor the overhead in the way it is implemented?
17:00:28FromGitter<mratsim> no, I don't have a problem with seqs
17:00:52FromGitter<mratsim> I need small seqs due to perf requirements when I need several small seq in small loops
17:01:46Zevvah right
17:04:34*Hideki_ joined #nim
17:08:04*actuallybatman joined #nim
17:09:52*absolutejam1 joined #nim
17:14:14*Hideki_ quit (Ping timeout: 268 seconds)
17:14:44*blu joined #nim
17:17:27bluWhere is the best place to keep up to date with Nim's development between releases? GitHub issues?
17:20:05*absolutejam1 quit (Ping timeout: 265 seconds)
17:27:29FromGitter<zacharycarter> how to a read an entire binary file and get the size of the data read?
17:31:49FromGitter<zacharycarter> is there a way to get the size of a filestream?
17:34:03FromGitter<zacharycarter> here's some SDL2 code I've been using to do what I want, but I'd like to just use Nim if possible:
17:34:34FromGitter<zacharycarter> https://gist.github.com/zacharycarter/7222f163f2efd0cc56231efcb73bbd5e
17:34:36*Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:35:02*Ven`` joined #nim
17:35:23*Ven`` quit (Client Quit)
17:38:46*tobbez quit (Quit: Segmentation vault)
17:45:56*snooptek quit (Remote host closed the connection)
17:46:48Zevvzacharycarter: https://play.nim-lang.org/#ix=1Vh4 ?
17:46:50Zevvsimple as that?
17:48:46FromGitter<zacharycarter> it's a binary file though
17:49:03FromGitter<zacharycarter> guess I should have specified that
17:50:06Zevvoh its a windows thing?
17:50:16ZevvThe whole conscept of "binary file" eludes me :/
17:51:03ZevvformatMode[fmRead] is "rb", so isn't readFile() doing the right thing?
17:51:34FromGitter<Kiloneie> Is Discord not getting fixed anytime soon ?
17:52:17FromGitter<zacharycarter> probably but I don't think the length of the read string is the size of the data read necessarily
17:53:03Zevvwell, if it reads all the data in binary mode into a string
17:53:12Zevvhow can the size of the string not be the size of the data?
17:53:22Zevvit just slurps the whole thing
17:55:36FromGitter<zacharycarter> but that's not what I want to do
17:55:43FromGitter<zacharycarter> I want to read the binary data in the file into memory
17:55:55FromGitter<zacharycarter> it's not a text file
17:56:15FromGitter<zacharycarter> I can just use the sdl2 code I have for now since it works
17:56:44Zevvyes but no but yes but. Thats what it does. Readfile reads a complete binary file into memory?
17:57:07Zevvbut what do you do with the data, do you need the raw pointer? because then there might be a better option, using memfiles.
17:57:22ZevvThat will allow zero copy memory access
18:02:24Zevvzacharycarter: https://play.nim-lang.org/#ix=1Vh4
18:02:50Zevvthis is the cheapest you can get: it opens the file but does not copy it into a buffer. instead the OS does magic for you and offers you access to the file 'directly'
18:02:56*natrys joined #nim
18:03:08Zevvyou get a generic pointer and the size, and the rest is up to you
18:03:41FromGitter<zacharycarter> well - I tried that example already and it didn't work so I'll just use SDL2's RWOps
18:03:54Zevvwhat is "didn't work" exactly?
18:04:30FromGitter<zacharycarter> it produced an invalid shader handle so bgfx didn't like the pointer I passed to it I'm assuming
18:04:54Zevvinteresting. What is in the file, texture data?
18:05:00FromGitter<zacharycarter> no it's just a compiled shader
18:05:04FromGitter<zacharycarter> but the example I posted earlier works fine
18:05:52Zevvwell, of only shaders the memFile gain is probably not worth the hassle. I thought you were doing textures.
18:07:48FromGitter<zacharycarter> ah, for textures I think I have things worked out - in fact I didn't really need to re-write this code but I figured if there was a pure Nim solution that was easy to arrive at that would work, it'd be fine
18:08:08FromGitter<zacharycarter> but I think the SDL code will suffice
18:08:19FromGitter<zacharycarter> I already have sdl2 in my codebase anyway, no harm in using it :P
18:24:52Zevvalthough it feels a bit like cheating :)
18:32:45*theelous3 joined #nim
18:56:20*exelotl joined #nim
19:11:19*Hideki_ joined #nim
19:14:52*natrys quit (Quit: natrys)
19:15:49*Hideki_ quit (Ping timeout: 258 seconds)
19:18:55*Ven`` joined #nim
19:49:24*krux02 joined #nim
19:55:34*Zevv quit (Quit: Lost terminal)
19:55:57*Zevv joined #nim
19:56:07*Zevv left #nim (#nim)
19:56:14*Zevv joined #nim
19:57:49*Zevv quit (Client Quit)
19:58:31*Zevv joined #nim
20:04:25*theelous3 quit (Ping timeout: 265 seconds)
20:22:55*abm quit (Quit: Leaving)
20:23:55*nsf quit (Quit: WeeChat 2.5)
20:27:08*Trustable joined #nim
20:28:41*Kaivo joined #nim
20:34:02*theelous3 joined #nim
20:41:18*absolutejam1 joined #nim
20:42:31LyndsySimonCould someone point me to an example of a shell script written in Nim? I’m wanting to see how you handle arguments and the output of `—help` in particular.
20:47:03*theelous3 quit (Ping timeout: 258 seconds)
20:48:02*theelous3 joined #nim
20:50:06*Vladar quit (Remote host closed the connection)
20:52:14*laaron quit (Remote host closed the connection)
20:52:32*narimiran quit (Ping timeout: 245 seconds)
20:54:37*solitudesf quit (Ping timeout: 245 seconds)
20:54:53*laaron joined #nim
20:57:13*couven92 quit (Quit: Client Disconnecting)
20:58:19FromGitter<mratsim> most use cligen: https://github.com/c-blake/cligen
20:58:28FromGitter<mratsim> @LyndsySimon ^
21:01:06*Ven`` quit (Quit: Textual IRC Client: www.textualapp.com)
21:01:14*theelous3 quit (Ping timeout: 258 seconds)
21:01:56*theelous3 joined #nim
21:03:27*Trustable quit (Remote host closed the connection)
21:07:56LyndsySimonTy
21:13:38*krux02 quit (Ping timeout: 240 seconds)
21:21:08*Kaivo quit (Quit: WeeChat 2.6)
21:27:30*gangstacat quit (Ping timeout: 246 seconds)
21:46:35*gangstacat joined #nim
21:57:59*nif quit (Quit: ...)
21:58:08*nif joined #nim
22:17:41*pbb quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
22:17:59*pbb joined #nim
22:34:54*Hideki_ joined #nim
22:38:50*Hideki_ quit (Ping timeout: 240 seconds)
22:40:41*absolutejam1 quit (Ping timeout: 276 seconds)
22:48:54*Hideki_ joined #nim
22:52:43*krux02 joined #nim
22:54:01*NotCreative joined #nim
22:56:17*Hideki_ quit (Ping timeout: 276 seconds)
22:56:22NotCreativeAny ideas why making a .nims file with the following contents: "--out:bin/foo" causes my program to be compiled to "bin / foo"(spaces around slash) instead of "bin/foo"?
22:57:34NotCreativeIm running Nim 0.20.2
23:04:34*sagax quit (Read error: Connection reset by peer)
23:06:58*sagax joined #nim
23:13:34*Hideki_ joined #nim
23:17:38*Hideki_ quit (Ping timeout: 240 seconds)
23:34:07*krux02_ joined #nim
23:36:33*krux02 quit (Ping timeout: 245 seconds)
23:36:33*Hideki_ joined #nim
23:43:46*Hideki_ quit (Ping timeout: 258 seconds)
23:44:46FromGitter<kayabaNerve> ... you can directly type CLI options into Nimscript files?
23:45:41FromGitter<kayabaNerve> I'm guessing because it's treating the / as an operator, not a character. I don't actually know though.
23:49:22NotCreativeAhh, thanks. I didn't realize that the .nims is Nimscript. I'm going through Nim in Action and the author simply said to place compilation flags in it
23:49:45NotCreativeusing switch("out", "bin/foo") worked
23:53:15*krux02_ quit (Remote host closed the connection)