<< 06-12-2017 >>

00:02:11PMunchMan, this binary format parsing macro is coming along quite nicely. Currently it supports reading out various size integers and floats (including custom bit-lengths), arrays of set length (including length read earlier in the format), open arrays with termination character, automatic handling of magic numbers, and custom parser for parts of the format!
00:03:36PMunchAnd all you need in your code is something like this: http://ix.io/CPj
00:05:46PMunchThat reads and checks a magic uint of size 8 to be equal to 128. Then reads a uint16 called size, used to read an array of int8 with that size. Then it reads an array of null terminated strings until it encounters the string "9xC" (which is not added to the list). After that it calls the list parser that reads a size and a new sequence of numbers, and finally it checks if the file ends with a uint8 with value 67
00:06:04PMunchs/array/seq
00:07:12*rbrt joined #nim
00:22:15*yglukhov joined #nim
00:22:41*SenasOzys quit (Ping timeout: 260 seconds)
00:22:59*vlad1777d quit (Ping timeout: 268 seconds)
00:25:29*rbrt quit (Quit: Oíche mhaith)
00:26:10*rbrt joined #nim
00:27:18*yglukhov quit (Ping timeout: 268 seconds)
00:28:10*PMunch quit (Quit: leaving)
00:37:56*skrylar quit (Remote host closed the connection)
00:39:00FromGitter<zetashift> @PMunch that example looks concise
00:39:04FromGitter<zetashift> I like it
00:39:20*madpat quit (Read error: Connection reset by peer)
00:40:17*madpat joined #nim
00:44:42FromGitter<zacharycarter> very cool PMunch!
01:00:09*d10n-work quit (Quit: Connection closed for inactivity)
01:03:28*yglukhov joined #nim
01:04:52*MJCaley quit (Quit: MJCaley)
01:07:01*redlegion quit (Ping timeout: 260 seconds)
01:07:43*yglukhov quit (Ping timeout: 248 seconds)
01:08:04*derlafff quit (Quit: No Ping reply in 180 seconds.)
01:09:10*derlafff joined #nim
01:09:35*arecaceae quit (Ping timeout: 240 seconds)
01:10:48*arecaceae joined #nim
01:11:18*redlegion joined #nim
01:11:18*redlegion quit (Changing host)
01:11:18*redlegion joined #nim
01:12:06*MJCaley joined #nim
01:23:35*rbrt quit (Quit: Oíche mhaith)
01:33:57*rauss quit (Quit: WeeChat 2.0)
01:35:07*rauss joined #nim
01:35:40*Miguelngel[m] sent a long message: Miguelngel[m]_2017-12-06_01:35:40.txt <https://matrix.org/_matrix/media/v1/download/matrix.org/mdKybVqDiaodRCzTCxkZIcHq>
01:45:37*marenz_ quit (Ping timeout: 268 seconds)
01:49:01FromGitter<zacharycarter> what does generateString look like?
01:56:56*skrylar joined #nim
02:01:35Miguelngel[m]proc generateString(): string =
02:01:36Miguelngel[m]discard
02:03:25Miguelngel[m]If I change the body to: `result = "something"` it compiles correctly. So I must guess that the compiler error was difficult to understand.
02:03:53*xet7 quit (Ping timeout: 255 seconds)
02:03:56Miguelngel[m]What causes the different behaviours?
02:04:51*xet7 joined #nim
02:08:18*Miguelngel[m] sent a long message: Miguelngel[m]_2017-12-06_02:08:18.txt <https://matrix.org/_matrix/media/v1/download/matrix.org/epniNsYCAaIhlVcvsLPBgkso>
02:10:16*vivus quit (Quit: Leaving)
02:17:44skrylaris there like, a favorite kind of stylesheet for docs
02:18:05skrylari know theres that "gravity learn" theme that looks like read the docs
02:28:53FromGitter<Varriount> skrylar: I've been asking myself the same question lately.
02:29:30skrylarvarriount: well, elementaryOS' stylesheet is ostensibly free to use, and is Apple-y. Gravity Learn is for hugo, and is fine if you like Read The Docs.
02:29:44FromGitter<Varriount> skrylar: I used this for a recent tool manual: https://gist.github.com/killercup/5917178
02:30:06skrylarpart of texinfo->docbook->??? is you can derp around with the stylesheets. so
02:30:11skrylarthey have one that makes epubs for instance
02:30:44skrylarbleh, theres no screenshot of that stylesheet ._.
02:31:35skrylardocbook is actually kinda of nice, even if XSLT is not
02:32:10FromGitter<Varriount> skrylar: It's reminiscent of Nim's documentation
02:32:21skrylarhmm
02:32:31skrylarwell i've been hung up on whether to borrow the stylesheet from nimdoc or from firebird
02:32:32FromGitter<Varriount> No off-white background though.
02:35:20skrylarneed to get an opinion on some regression code at some point
02:35:37FromGitter<Varriount> skrylar: Oh?
02:35:41skrylari use an object to store accumulators for ex. linear and power regression. there is then an 'add' method, and a final method that crunches the output
02:36:01skrylarit feels wrong but it prevents mixing the math with extracting from your other data types
02:37:30skrylarvarriount, mratsim: https://gist.github.com/Skrylar/42300800e29f81f2c69bebeba38bbe6d
02:39:38*chemist69 quit (Ping timeout: 255 seconds)
02:42:35skrylarminor annoyance: why can i not name anchors in texinfo
02:43:05skrylari mean there is @anchor{derp} but i can't seem to do like, @nchor{derp, How to herp the derp} such that later @see{derp} inserts "See: How to herp the derp"
02:43:10skrylaryou have to label it at the site of cross reference
02:43:13skrylar:|
02:53:33*chemist69 joined #nim
03:04:06FromGitter<loongw> Hi, there ⏎ ⏎ ```code paste, see link``` ⏎ ⏎ This code will crash, what's wrong? [https://gitter.im/nim-lang/Nim?at=5a275e26ba39a53f1a25f111]
03:12:04*MJCaley quit (Quit: MJCaley)
03:20:39*SenasOzys joined #nim
03:28:01*endragor joined #nim
03:28:20*rbrt joined #nim
03:30:24*rbrt quit (Client Quit)
03:34:25*madpat quit (Ping timeout: 248 seconds)
03:36:13*madpat joined #nim
03:39:32*SenasOzys quit (Remote host closed the connection)
03:40:47*SenasOzys joined #nim
03:43:41*madpat quit (Ping timeout: 276 seconds)
03:44:31*SenasOzys quit (Remote host closed the connection)
03:45:18*SenasOzys joined #nim
03:50:10*madpat joined #nim
03:52:23FromGitter<Varriount> @loongw What do you mean? It works fine for me.
03:55:41*SenasOzys quit (Ping timeout: 255 seconds)
03:57:44FromGitter<loongw> It crashes on Windows and hangs on macOS
03:58:11FromGitter<Varriount> Hm. I'd ask Araq.
04:04:43FromGitter<Varriount> @loongw What happens if you use a ref Thread instead?
04:13:24FromGitter<Varriount> @loongw It seems to have something to do with copying the thread structure.
04:23:43FromGitter<loongw> Yeah, ref works fine.
04:24:48FromGitter<Varriount> @loongw `let t = testCreateThread()` can create a copy for object types (and Thread is an object type)
04:27:56FromGitter<loongw> Yes, I know. But does copying of object always has issue in Nim?
04:31:58FromGitter<Varriount> loongw: Not normally.
04:32:32FromGitter<Varriount> @loongw Threads are very tricky structures. They have to contain things like os-level thread data, garbage collector data, etc.
04:33:30FromGitter<Varriount> @loongw You would have to ask Araq what is happening.
04:37:32FromGitter<loongw> got it. thanks for explaining
04:42:58FromGitter<loongw> seems like it is caused by a stack variable overflow
04:43:11FromGitter<loongw> i am debugging with lldb
04:43:48FromGitter<loongw> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5a277584540c78242d8cdffc]
04:44:30FromGitter<loongw> pthread_join will override dataFn's value
04:52:59*skrylar quit (Remote host closed the connection)
04:58:50*madpat quit (Read error: Connection reset by peer)
04:58:57*madpat joined #nim
05:22:37FromGitter<loongw> ``` if pthread_create(t.sys, a, threadProcWrapper[TArg], addr(t)) != 0:``` ⏎ ⏎ Here. createThread use the Thread[T]'s address directly. ⏎ So it has problem if it is a stack variable. [https://gitter.im/nim-lang/Nim?at=5a277e9cc65707ba2b195bc4]
05:26:31*madpat quit (Ping timeout: 240 seconds)
05:29:23*madpat joined #nim
05:29:51*dddddd quit (Remote host closed the connection)
05:33:08*endragor quit (Remote host closed the connection)
05:33:47*madpat quit (Ping timeout: 255 seconds)
05:38:57*madpat joined #nim
05:41:33*endragor joined #nim
05:43:01*madpat quit (Ping timeout: 240 seconds)
05:43:34*madpat joined #nim
05:59:59*madpat quit (Ping timeout: 248 seconds)
06:01:50*madpat joined #nim
06:04:53FromGitter<Varriount> @loongw That should either be fixed, or properly mentioned in the documentation.
06:21:59*BitPuffin|osx joined #nim
06:22:38*chemist69 quit (Ping timeout: 255 seconds)
06:23:00*chemist69 joined #nim
06:27:37*endragor quit (Remote host closed the connection)
06:31:55FromGitter<gogolxdong> I'm writing an e-book of Nim in chinese for Turing Publish House.
06:34:22FromGitter<gogolxdong> gathering news and features
06:38:41*mwbrown quit (Ping timeout: 240 seconds)
06:41:29FromGitter<gogolxdong> any news is welcomed.
06:44:28*nsf joined #nim
06:48:08*endragor joined #nim
06:50:39*Sargun joined #nim
06:50:49SargunWhat's gogc, and regions gc?
06:53:19*endragor quit (Ping timeout: 248 seconds)
06:55:30*jjido joined #nim
06:55:42*jjido quit (Remote host closed the connection)
06:55:59*Guest45571 joined #nim
06:56:15*endragor joined #nim
07:04:22FromGitter<Varriount> Sargun: gogc uses the gc that Go uses.
07:04:45FromGitter<Varriount> The Regions GC isn't so much a GC, as a way of doing manual memory management. It isn't documented for some reason.
07:08:27SargunIs there any downside to using the Go gc?
07:08:59Xeyou have to define a special entrypoint iirc unless they fixed that
07:17:35*madpat quit (Ping timeout: 240 seconds)
07:22:36*madpat joined #nim
07:32:05*madpat quit (Ping timeout: 240 seconds)
07:33:18SargunI'm writing a Nim libraryish
07:34:19*mwbrown joined #nim
07:39:17*gokr joined #nim
07:39:35*madpat joined #nim
07:39:39SargunAnd stack / region GC?
07:51:52TangerHey folks, anybody know if you can use custom exceptions with the {.raises.} pragma?
08:01:58AraqTanger: why wouldn't you?
08:03:43*madpat quit (Read error: Connection reset by peer)
08:04:33*madpat joined #nim
08:06:08*dashed quit (Ping timeout: 240 seconds)
08:07:00*dashed joined #nim
08:07:39Tanger@Araq: Haha, that's a good point if I actually think about it. I did not read the limitations section on the asyncdispatch module "The effect system (raises: []) does not work with async procedures."
08:08:21AraqSargun: just use the default GC until we have something better. Hint: it won't be Go's GC.
08:16:08*surma quit (Ping timeout: 240 seconds)
08:19:11FromGitter<alehander42> PMunch: very nice! I needed such a macro like that before, yours seems very useful
08:22:28*yglukhov joined #nim
08:26:15*yglukhov quit (Remote host closed the connection)
08:26:30*yglukhov joined #nim
08:27:47*claudiuinberlin joined #nim
08:32:30*Ven`` joined #nim
08:32:32*Ven`` quit (Client Quit)
08:33:45FromGitter<Varriount> Sargun: It's highly unlikely the default GC is going to be the slowest thing in your program.
08:34:54FromGitter<Varriount> Even when it is, it's usually due to inefficient allocation patterns (let's make copies of a large string in a critical loop)
08:45:19*Guest45571 quit (Remote host closed the connection)
08:51:44*gangstacat quit (Quit: Ĝis!)
09:00:56*jjido joined #nim
09:02:18*floppydh joined #nim
09:02:51*madpat quit (Read error: No route to host)
09:05:41*madpat joined #nim
09:06:05*jjido quit (Ping timeout: 276 seconds)
09:09:37*SenasOzys joined #nim
09:10:01*xkapastel quit (Quit: Connection closed for inactivity)
09:10:52*JappleAck joined #nim
09:21:09*PMunch joined #nim
09:22:43*madpat quit (Quit: Have a good day! :))
09:31:03*gangstacat joined #nim
09:36:26SargunAraq: I'm trying to compile a library that will eventually link into a Linux kernel module.
09:36:58SargunIt seems like the standard gc refers to stdio in a couple places
09:37:27Araqwhere?
09:50:08Araqargh... found my bug ... ugh, that was a hard one
09:50:19Araqnow how do I fix this...
09:53:37FromGitter<mratsim> Crystal lang published there language survey, apparently documentation is not an issue, though people also want Elm-like compiler errors :D https://www.reddit.com/r/programming/comments/7hpw47/crystal_survey_2017_results/
10:00:21AraqI wanted an O(1) allocator. I almost got it working.
10:02:18FromGitter<mratsim> But?
10:04:20Araqbut now I have these lovely random crashes :P
10:06:54FromGitter<Varriount> Araq: How is that even possible? Isn't an allocator usually O(n) for some small constant of N, due to memory tracking?
10:07:23Araqwhat is a "small constant of N"?
10:07:54AraqO(1) means a bounded number of instructions independent of the heap size
10:08:31Araqthat is a solved problem, see TLSF
10:19:22Araqnote that this only covers traditional allocation with explicit dealloc, a GC with O(1) behaviour is unknown to me
10:25:18*surma joined #nim
11:03:52*madpat joined #nim
11:14:27FromGitter<ephja> how were the first windows api bindings generated?
11:27:24Araqwinlean, written by hand, the others were pas2nim'ed
11:38:34*madpat quit (Read error: Connection reset by peer)
11:38:58*madpat joined #nim
11:47:05*skoude joined #nim
11:52:46*SenasOzys quit (Ping timeout: 260 seconds)
11:53:37*skoude quit (Ping timeout: 248 seconds)
12:03:32*SenasOzys joined #nim
12:11:09*madpat left #nim ("Leaving")
12:13:30*skoude joined #nim
12:18:09*skoude quit (Ping timeout: 248 seconds)
12:21:05*ftsf quit (Ping timeout: 276 seconds)
12:26:00*elrood joined #nim
12:35:08*Vladar joined #nim
12:46:44*ftsf joined #nim
12:59:56yglukhovAraq: mind merging? https://github.com/nim-lang/Nim/pull/6876
13:02:58*dddddd joined #nim
13:08:50*marenz_ joined #nim
13:15:19*jjido joined #nim
13:46:33*Jesin quit (Quit: Leaving)
13:55:51VladarHm, is it true that there no media library (for video files) wrappers for Nim at the moment?
14:09:13FromGitter<alehander42> I am working with many variants with several branches, similar to ⏎ ⏎ `````` [https://gitter.im/nim-lang/Nim?at=5a27fa09232e79134d167c87]
14:09:20FromGitter<alehander42> which sucks a lot
14:09:48FromGitter<alehander42> I know I can make a template for each of the `of-s`, but I have another solution: we know the fields in each branch, so I can create a macro
14:09:53FromGitter<alehander42> that works like
14:10:34FromGitter<alehander42> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5a27fa59232e79134d167edf]
14:10:52FromGitter<alehander42> does this seem useful for stdlib / nimble package ?
14:16:59FromGitter<alehander42> maybe for patty
14:18:29FromGitter<ephja> you can reduce typing by dividing it up into sets
14:20:18FromGitter<alehander42> yes ofc, but this would require defining additional 3-4 sets for each variant object
14:20:24FromGitter<alehander42> manually
14:21:08FromGitter<alehander42> and hasAttr will just create the set based on getType
14:28:49FromGitter<zetashift> How would I go around getting the key of max(aSeq)?
14:30:16PMunchIs there a way to get undeclared identifiers in a Nim macro? I want the user to be able to supply names of fields that will be used in the output, but the names are wrapped in a structure and I would like to add the correct "path" to any variable that isn't declared
14:30:57FromGitter<alehander42> PMunch: untyped macros should work for that? how does an invocation of your macro look?
14:32:01PMunchhttp://ix.io/CQz/
14:32:07PMunchThat's a sample invocation
14:32:43FromGitter<alehander42> I guess data is undefined?
14:32:43*madpat joined #nim
14:32:47PMunchsize, data, str, and inner are wrapped up in a type and set as the return type from the created parser.
14:32:48FromGitter<alehander42> for example
14:32:58PMunchWell, data is automatically defined
14:33:26PMunchBut simply inputting size in the read statement for data wouldn't work as it is declared as "result.size" in the generated code
14:34:06FromGitter<alehander42> aaaah, so you want to find out if a variable *is* undeclared
14:35:08PMunchYes
14:35:45PMunchI basically want to go through all that is passed in to the data[] bracket expression and add "result." to any undeclared field
14:36:40FromGitter<alehander42> so eg `u16: size` defines that consumed u16 will be assigned to size field?
14:36:51FromGitter<alehander42> (trying to translate example)
14:37:23PMunchYea
14:38:05PMunchThat code would generate the return type: tuple[size: uint16, data: seq[int8], str: seq[string], inner: type(:tmp135854.list())]
14:38:34PMunchSo when reading data I want to access the size field of the return type
14:38:57FromGitter<alehander42> ok, so why can't you make 2 passes
14:38:58PMunchFor efficiency reasons I want to read directly into the result variable, so I can't have a bunch of local variables for each field
14:39:17FromGitter<alehander42> on the first pass you load all the fields that are inferred from the dsl
14:39:24FromGitter<alehander42> and on the second you resolve them e.g. in data
14:40:24FromGitter<alehander42> after first pass: `size, data, str, inner` are fields and on second pass you replace only them with result in []
14:43:53PMunchProblem is that some fields might appear after a variable data array
14:44:10PMunchThat would be a complete mess to implement..
14:44:45FromGitter<alehander42> but that's the point of two passes
14:44:53FromGitter<alehander42> in the first pass you only collect field names
14:45:56FromGitter<alehander42> it seems easy: just run a loop on each `a: b`, check if b is an ident or ident[..] and if yes, add it to field set
14:46:10FromGitter<alehander42> before your current code
14:46:26PMunchHmm, I don't think I follow..
14:47:17*jjido quit (Ping timeout: 255 seconds)
14:47:24FromGitter<alehander42> a field is defined when the user writes ⏎ ⏎ `<size>: <label> | <label>[..]`
14:47:25FromGitter<alehander42> right ?
14:47:40PMunchYeah
14:48:07FromGitter<alehander42> so, you just run a single loop through the initial ast nodes, and you collect those `labels` in a set
14:48:38FromGitter<alehander42> and now you have a set with the var names that you need to tweak
14:49:07PMunchWell, I can do it in a single pass actually. You're only allowed to reference upwards
14:49:20PMunchSo I would have already seen an identifier before needed to convert it
14:49:43FromGitter<alehander42> well, then you dont have a problem (but a two pass approach will give you the chance to reference stuff in each direction)
14:50:26PMunchYeah, but that wouldn't make any sense in the output context of the macro :)
14:50:45*dexterk_ joined #nim
14:51:02*dexterk quit (Ping timeout: 260 seconds)
14:51:43FromGitter<alehander42> well yeah :D
14:51:45*gokr quit (Ping timeout: 248 seconds)
14:52:07FromGitter<alehander42> it would be a bizarre protocol to need it
14:53:19FromGitter<alehander42> will you publish a library with the dsl, I would love to use something like that for some formats of mine
14:58:11PMunchYeah, that's the idea
14:58:30PMunchIt works pretty well now, this is one of the final things I need to add before sharing it :)
14:59:33FromGitter<alehander42> :D but if you just reference previous fields, you already know what is declared, right
14:59:36PMunchI actually don't have a specific use case for it at the moment. I'm just doing this at work in C++ and wanted to see how much prettier I could do it in Nim :)
15:00:08PMunchWell yeah, but I was hoping to do it without keeping a list myself
15:00:21PMunchBut come to think of it it's probably better anyways
15:00:30*Jesin joined #nim
15:00:37PMunchSo a size field in the format would shadow an external size field and not the other way around
15:01:59PMunchHmm, can't I .mitems through a NimNode?
15:03:43FromGitter<alehander42> a list would be very easy to keep up, you don't need to introduce ambiguity : )
15:04:04FromGitter<alehander42> btw can I convert A..B to a set :?
15:05:40FromGitter<alehander42> actually a seq[enum] to a set :?
15:06:49*jjido joined #nim
15:09:15FromGitter<Varriount> @alehander42 `var s: set[T]; for e in seq: s.incl(e)`
15:09:47PMunchwell you have this: https://github.com/nim-lang/Nim/blob/master/lib/pure/collections/sets.nim#L377
15:09:58PMunchWhich does pretty much what Varriount said
15:10:11FromGitter<Varriount> PMunch: But those are hash sets, not bit sets
15:10:26FromGitter<Varriount> If you have an enum, you might as well use a bit set
15:10:27FromGitter<alehander42> yep, I just made a func for it
15:10:49FromGitter<alehander42> well those are coming from field variant def-s in a macro
15:10:57PMunchOh right, they have some confusing nomenclature :P
15:11:28FromGitter<alehander42> btw can I .. have a recursive iterator :D
15:11:41FromGitter<alehander42> I just defined one and I got attempting to call undeclared routine: 'tree'
15:12:14*endragor quit (Remote host closed the connection)
15:12:33FromGitter<alehander42> and I also get recursive dependency if I change it a bit
15:12:47*endragor joined #nim
15:13:09FromGitter<Varriount> @alehander42 Is it a closure iterator, or an inline iterator?
15:13:17FromGitter<alehander42> inline
15:13:32FromGitter<Varriount> And have you forwarded the type definition?
15:13:43FromGitter<Varriount> And could you show you code?
15:14:18FromGitter<alehander42> of an iterator?
15:14:26FromGitter<alehander42> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5a280951cc1d527f6bfabc7d]
15:14:40FromGitter<alehander42> and if I add `tree(node)` in else
15:14:47FromGitter<alehander42> it fails
15:16:17FromGitter<alehander42> and ⏎ ⏎ ``` var t = tree ⏎ yield t(node)``` [https://gitter.im/nim-lang/Nim?at=5a2809c13ae2aa6b3f938d82]
15:16:34FromGitter<alehander42> seems to be working,
15:18:38FromGitter<alehander42> I actually loop through sons, no `tree(node)`, but the error is the same
15:19:59FromGitter<Varriount> @alehander42 What you need is a 'yield from', which Nim doesn't have (yet)
15:21:53*Snircle quit (Quit: Textual IRC Client: www.textualapp.com)
15:23:42FromGitter<alehander42> yeah, it crashes with no return symbol if I try to use it
15:24:29FromGitter<alehander42> ok, I can use a closure iterator, it seems to work rec-ly
15:24:40FromGitter<alehander42> (I guess its slower)
15:24:55FromGitter<alehander42> but otherwise I'd use rec functions anyway
15:25:34FromGitter<Varriount> @alehander42 I would recommend just using a stack. That's what a recursive function uses anyway.
15:25:37*arthurz joined #nim
15:26:29FromGitter<alehander42> well if I need to optimize this, I will
15:26:32arthurzHi @here, anybody has pointers onto how to retrieve and put files off/to AWS S3?
15:28:11PMuncharthurz, this might be of help: https://github.com/aidansteele/aws_sdk.nim
15:28:42PMunchPretty bare-bones, but at least it does the signing which is normally a PITA
15:29:18arthurzIndeed @pmunch, except I do not like the "very much work in progress" part
15:29:21arthurzThank you
15:29:33PMunchWelcome to Nim :P
15:30:03PMunchAWS is a huge API, so it will probably take a while until someone has time to implement all of it in Nim
15:30:53arthurzPMunch++
15:33:00SargunAraq: lib/nim/system/alloc.nim(306, 13) Error: undeclared identifier: 'stdout'
15:35:10SargunIf you're right about Go gc needing a special entrypoint, or background threads, that's a different problem
15:39:27FromGitter<Varriount> arthurz: Someone recently made an S3 uploader POC
15:39:55FromGitter<Varriount> arthurz: The problem is that the documentation for the AWS api is lacking in key areas
15:40:52FromGitter<Varriount> PMunch, arthurz: I've been debating on what I should do during my holiday break: documentation, aws library, or nimlime
15:42:32PMunchHmm, all good additions..
15:45:27arthurzFromGitter++ All is good stuff w/ the aws lib being my top choice ;)
15:48:38PMuncharthurz, FromGitter is a bridge bot to Gitter
15:48:39FromGitterPMunch, I'm a bot, *bleep, bloop*. I relay messages between here and https://gitter.im/nim-lang/Nim
15:49:30arthurzVarriount++ All is good stuff w/ the aws lib being my top choice ;)
15:49:48arthurzHaha PMunch I feel so dumb ;)
15:51:55*Jesin quit (Quit: Leaving)
15:57:26*xkapastel joined #nim
16:01:58*endragor quit (Remote host closed the connection)
16:02:25*jrgoig joined #nim
16:05:33*SenasOzys_ joined #nim
16:06:37*SenasOzys quit (Read error: Connection reset by peer)
16:13:00*gokr joined #nim
16:21:29SargunFWIW "regions" seems to work fine.
16:24:51*gokr quit (Ping timeout: 250 seconds)
16:27:31*arthurz quit (Quit: Leaving)
16:38:54*Jesin joined #nim
16:39:19*d10n-work joined #nim
16:41:44FromGitter<alehander42> how do I ignore "you must provide a compile-time value for the discriminator 'kind' in order to prove that it's safe to initialize 'f'"
16:42:07FromGitter<alehander42> I know I saw in several places in compiler dynamic (kind: stuff)
16:43:32FromGitter<Varriount> Sargun: You're using regions?
16:44:05FromGitter<Varriount> @alehander42 Can you post your code?
16:45:53*arecaceae quit (Remote host closed the connection)
16:46:35*arecaceae joined #nim
16:46:41FromGitter<ephja> are you sure the compiler is instantiating variant objects with runtime discriminators?
16:46:42PMunchWho's Eric O'Leary?
16:46:45AraqSargun, that is in a 'when false' section
16:47:41FromGitter<alehander42> well stuff like ⏎ ⏎ ```result = A( ⏎ kind: B(int(A0) + int(node.kind) - int(B0)))``` [https://gitter.im/nim-lang/Nim?at=5a281f2dc65707ba2b1cdf86]
16:48:24Araqalehander42: you can't circumvent it :-)
16:48:51Araqyou have to spell out the different cases. Just like Rust's sum types work.
16:49:49AraqI agree it's annoying but I don't know a good alternative. we could make it a warning instead
16:50:15*skoude joined #nim
16:55:12*skoude quit (Ping timeout: 268 seconds)
16:56:33FromGitter<alehander42> I guess one can write a macro if there are too many cases
16:57:18FromGitter<alehander42> I am not sure if a warning isn't too lax , but I can't think of universally useful simplifying macro
16:57:23FromGitter<alehander42> I'll think about it :D
17:03:23*floppydh quit (Quit: WeeChat 1.9.1)
17:04:21PMunchHow can I make tables in documentation?
17:04:45Araqcheck our RST documentation
17:05:18Araqsome ascii art with ============
17:05:35PMunchHmm, but can that span multiple lines?
17:05:47PMunchI tried a grid table and that didn't work..
17:06:25Araqjust use multiple lines, the first column could cause problems
17:06:57*skoude joined #nim
17:08:00PMunchAh, yeah that works fine
17:13:48*JappleAck quit (Quit: Leaving)
17:15:20*skoude quit (Ping timeout: 255 seconds)
17:18:06*skoude joined #nim
17:19:10FromGitter<Varriount> Araq: Should Thread objects become invalid if they are copied?
17:19:54FromGitter<Varriount> Or rather, even if the original object goes out of scope, shouldn't copies still remain valid?
17:21:29*natrys joined #nim
17:23:20*SenasOzys_ quit (Ping timeout: 276 seconds)
17:23:43*skoude quit (Ping timeout: 248 seconds)
17:27:45*rbrt joined #nim
17:28:27*Sentreen quit (Ping timeout: 240 seconds)
17:29:44FromGitter<alehander42> is there a good way to convert tables with json to ?
17:30:03FromGitter<alehander42> I've written manual table->to->array then to table again functions to workaround it
17:30:07FromGitter<alehander42> but it's so much manual labor
17:31:40*skoude joined #nim
17:35:39*claudiuinberlin quit (Quit: Textual IRC Client: www.textualapp.com)
17:37:34PMunchalehander42, just uploaded this: https://github.com/PMunch/binaryparse
17:37:51*SenasOzys_ joined #nim
17:38:58PMunchHave to run now so docs are a bit sparse but I think the docstring in binaryparse.nim, the when isMainModule in the same file, and the error messages should be enough to get you up and running if you want to try it :)
17:40:23PMunch@alehander42 ^ (Just in case FromGitter still isn't doing highlights)
17:41:31*Sentreen joined #nim
17:41:56*Trustable joined #nim
17:42:08*PMunch quit (Quit: Leaving)
17:44:25GitDisc<treeform> hey Araq, i been looking at parsesql.nim, I added support for the limit clause and select foo AS bar. The file is really old. But it looks like you have made some changes recently. How did file came about? Are you new changes for ornim? Is the way parsing done in this file similar in style to how nim parses?
17:50:41*Serenitor joined #nim
17:52:01*skoude quit (Ping timeout: 248 seconds)
17:59:10*Vladar quit (Quit: Leaving)
18:02:59*jrgoig quit (Ping timeout: 260 seconds)
18:04:13*PMunch joined #nim
18:12:44PMunch@zacharycarter, @zetashift, my binary parser thingy from yesterday is now up on GitHub: https://github.com/PMunch/binaryparse
18:12:59PMunchSaw you commenting after I had gone to bed yesterday :)
18:14:26GitDisc<treeform> Oh wow PMunch i was thinking about making a binary parser for nim as well.
18:14:36GitDisc<treeform> This I want to see how you did it.
18:14:56PMunchHaha, good luck reading that source code :P
18:15:02GitDisc<treeform> I just wrote a parser for the truetype format
18:15:07PMunchhttps://github.com/PMunch/binaryparse/blob/master/binaryparse.nim#L366
18:15:24GitDisc<treeform> I did it pretty much manually, but I feel like there are better ways.
18:15:51PMunchYeah, this supports pretty much everything I could think of from having written a couple parsers myself manually
18:16:01GitDisc<treeform> why use u16 and u8 and not nim native types?
18:16:53PMunchBecause you can do u2 if you wanted, and there's no Nim native type for that
18:17:34GitDisc<treeform> 2 bits?
18:17:50PMunchYup
18:18:03GitDisc<treeform> thats cool
18:18:10GitDisc<treeform> i like your size thing in the example
18:18:12PMunchPlus they look like the type suffixes found here: https://nim-lang.org/docs/manual.html#lexical-analysis-numerical-constants
18:18:13GitDisc<treeform> read size then read teh rest
18:19:26GitDisc<treeform> Your parser can read, but it can't output?
18:19:31PMunchYeah, unfortunately it doesn't work in nested calls (yet). So you couldn't read the size and then use it in a custom parser.
18:19:39PMunchYeah, currently it's only input
18:19:49PMunchBut I hope to do output as well
18:19:52*vivus joined #nim
18:20:09GitDisc<treeform> I was going to look into making parser as a like extension to the type definition.
18:20:42GitDisc<treeform> So you define all the types and maybe put in how to parser in some sort of {} next to the fields.
18:21:06*skoude joined #nim
18:21:41oprypinPMunch, FromGitter adds '@' only before /^nickname[,:] /
18:21:42FromGitteroprypin, I'm a bot, *bleep, bloop*. I relay messages between here and https://gitter.im/nim-lang/Nim
18:21:47oprypinyep
18:21:57PMunchoprypin, oh it does now? Nice!
18:22:10oprypinPMunch, it always did, i'm just specifying the condition
18:22:30oprypinso you know
18:22:49PMunchOh really? I didn't think it did before
18:23:00oprypinwell maybe it didnt match the condition....
18:23:02*Trustable quit (Remote host closed the connection)
18:24:27*Sentreen quit (Ping timeout: 240 seconds)
18:24:48PMunchHmm, maybe
18:25:29*skoude quit (Ping timeout: 258 seconds)
18:29:58*claudiuinberlin joined #nim
18:32:37*Serenit0r joined #nim
18:34:41*vivus quit (Ping timeout: 258 seconds)
18:35:05*vivus joined #nim
18:35:53*Serenitor quit (Ping timeout: 255 seconds)
18:36:03*yglukhov quit (Remote host closed the connection)
18:37:10*yglukhov joined #nim
18:37:34*Sentreen joined #nim
18:41:37*yglukhov quit (Ping timeout: 248 seconds)
18:42:38*yglukhov joined #nim
18:47:11*yglukhov quit (Ping timeout: 276 seconds)
18:51:55*rbrt quit (Quit: Oíche mhaith)
18:52:26*rbrt joined #nim
18:55:07*xkapastel quit (Quit: Connection closed for inactivity)
18:59:47*nsf quit (Quit: WeeChat 1.9.1)
19:00:41*Serenit0r quit (Ping timeout: 240 seconds)
19:06:05*Serenit0r joined #nim
19:11:16*Serenit0r quit (Quit: Leaving)
19:11:35*Serenit0r joined #nim
19:12:01*kunev quit (Ping timeout: 248 seconds)
19:12:08*Serenit0r is now known as Serenitor
19:14:17*kunev joined #nim
19:22:19*yglukhov joined #nim
19:22:38*PMunch quit (Quit: leaving)
19:23:29*Vladar joined #nim
19:26:41*JappleAck joined #nim
19:31:56Araqtreeform: my changes are for Ormin, yes. it parses the way all my parser work, more or less
19:32:28Araqmore PRs are welcome, besides being dated it suffers from insufficient tests
19:33:05Araqbut nothing horrible is in there, iirc, we can just clean up the code incrementally
19:53:57*yglukhov quit (Remote host closed the connection)
19:56:46*yglukhov joined #nim
19:57:40GitDisc<treeform> Hey Araq, I have added some more stuff. Right now working on subselects.
19:58:01GitDisc<treeform> How far should I take it?
19:58:19GitDisc<treeform> I am trying to parse https://cloud.google.com/bigquery/docs/reference/standard-sql/query-syntax#with_query_name
19:58:28*xkapastel joined #nim
19:58:42GitDisc<treeform> which is now compatible with SQL ANSI standard.
19:58:55GitDisc<treeform> But I am not sure where SQL ANSI standard ends and PostgreSQL syntax starts.
19:59:10GitDisc<treeform> I feel like some things in the parser are PostgreSQL syntax and not SQL ANSI standard.
19:59:30GitDisc<treeform> it prepends e'string' for stuff.
20:00:39GitDisc<treeform> Should this be part of the standard library?
20:01:24GitDisc<treeform> Also how it prints stuff out is not very nice. I want to try to add indentation and stuff.
20:02:06*yglukhov quit (Remote host closed the connection)
20:02:14GitDisc<treeform> Do you care that it prints stuff in lower case 'select * from foo' or upper base that you find in sql everywhere 'SELECT * FROM foo' ? I changed it to print stuff out in UPPER CASE, but you might not like this?
20:04:13Araqyeah all uppercase sucks, we have syntax highlighting nowadays
20:05:10GitDisc<treeform> Could I add this as an option?
20:06:43Araqsure
20:07:59*yglukhov joined #nim
20:10:58GitDisc<treeform> At work I work on a custom language to SQL transpiler
20:11:21GitDisc<treeform> I want to see if I can use nim and parseSql for this.
20:11:36Araqlol that word, I guess people just love new words
20:12:22AraqOrmin is a Nim DSL to SQL translator
20:12:48Araqwhat does your custom language look like?
20:14:54*PMunch joined #nim
20:15:48Araqabout your other question ... it should just parse SQL as defined by Ansi, Postgre, Sqlite, Sql Server and Mysql
20:16:13Araqa superset of these unless ambiguous
20:21:54Araqwe can more parsesql into the ormin project, I think the stdlib is the wrong place
20:31:11*natrys quit (*.net *.split)
20:31:12*notdekka[m] quit (*.net *.split)
20:31:12*shashlick quit (*.net *.split)
20:31:13*EastByte quit (*.net *.split)
20:31:13*gsingh93 quit (*.net *.split)
20:31:13*cyraxjoe quit (*.net *.split)
20:31:13*FromGitter quit (*.net *.split)
20:31:13*d10n-work quit (*.net *.split)
20:31:13*elrood quit (*.net *.split)
20:31:13*xet7 quit (*.net *.split)
20:31:14*unclechu quit (*.net *.split)
20:31:14*subsetpark quit (*.net *.split)
20:32:05*d10n-work joined #nim
20:32:29*vivus quit (Ping timeout: 276 seconds)
20:33:05*huonw quit (Ping timeout: 252 seconds)
20:33:41*BitPuffin|osx quit (Ping timeout: 260 seconds)
20:34:44*MrAxilus[m] quit (Ping timeout: 252 seconds)
20:34:48*Demos[m] quit (Ping timeout: 240 seconds)
20:34:57*watzon quit (Ping timeout: 255 seconds)
20:34:57*Miguelngel[m] quit (Ping timeout: 248 seconds)
20:34:58*TheManiac quit (Ping timeout: 248 seconds)
20:35:10*jivank[m] quit (Ping timeout: 264 seconds)
20:35:28*planetis[m] quit (Ping timeout: 240 seconds)
20:35:28*byteflame quit (Ping timeout: 240 seconds)
20:35:28*dyce[m] quit (Ping timeout: 240 seconds)
20:35:33*georgeg[m] quit (Ping timeout: 246 seconds)
20:35:33*macsek1911[m] quit (Ping timeout: 246 seconds)
20:35:44*Jipok[m] quit (Ping timeout: 276 seconds)
20:35:48*huonw joined #nim
20:35:50*hohlerde quit (Ping timeout: 255 seconds)
20:35:56*ehmry quit (Ping timeout: 255 seconds)
20:36:19*yglukhov quit (Read error: Connection reset by peer)
20:36:52*yglukhov joined #nim
20:43:19*yglukhov quit (Read error: Connection reset by peer)
20:43:45*vivus joined #nim
20:43:54*yglukhov joined #nim
20:46:01*rbrt quit (Quit: Oíche mhaith)
20:46:07*noonien joined #nim
20:47:52*natrys joined #nim
20:47:52*EastByte joined #nim
20:47:52*gsingh93 joined #nim
20:47:52*cyraxjoe joined #nim
20:47:52*FromGitter joined #nim
20:47:54*elrood joined #nim
20:47:54*xet7 joined #nim
20:47:54*subsetpark joined #nim
20:49:23*jjido quit (Ping timeout: 276 seconds)
20:50:37GitDisc<treeform> My custom language looks nothing like SQL here are some examples:
20:51:35GitDisc<treeform> `post_submit subreddit_name = askreddit`
20:51:43GitDisc<treeform> `post_submit post_title ~ "?" by subreddit_name`
20:51:50GitDisc<treeform> `post_submit / post_submit unique`
20:51:59GitDisc<treeform> `funnel post_submit -> comment_submit -> vote_post`
20:52:31GitDisc<treeform> `bar comment_events_v1 unique by sr_name from "Jun1 00:00" to "Jun1 01:00" by minute`
20:53:16GitDisc<treeform> But I am here to mostly get SQL under control.
20:53:18*skoude joined #nim
20:53:40GitDisc<treeform> Should each of the Ansi, Postgre, Sqlite, Sql Server and Mysql have slightly different parsers?
20:54:27GitDisc<treeform> I need it to be able to parse and generate bigquery StandardSQL, should that be part of parsesql.nim or be its own thing?
20:55:00GitDisc<treeform> StandardSQL tries to be closer to Ansi, unlike their LegacySQL which was crazy different.
20:56:21*rbrt joined #nim
21:03:02*jjido joined #nim
21:09:41*yglukhov quit (Remote host closed the connection)
21:09:44Araqwe can add a 'Dialect' enum but I think most of the stuff can be shared so I would use a single parser
21:16:03*Vladar quit (Quit: Leaving)
21:19:03*endragor joined #nim
21:19:13*claudiuinberlin quit (Quit: Textual IRC Client: www.textualapp.com)
21:19:48*skoude quit (Remote host closed the connection)
21:22:24FromGitter<zacharycarter> jesus - https://www.iso.org/standard/68564.html - 1600 pages
21:23:25*endragor quit (Ping timeout: 250 seconds)
21:26:47*SenasOzys_ quit (Read error: Connection reset by peer)
21:27:01*SenasOzys joined #nim
21:27:14*7GHABF4P5 joined #nim
21:27:33AraqAnsi C has 550 pages.
21:28:03*madpat quit (Ping timeout: 246 seconds)
21:36:45FromGitter<zacharycarter> Yeah - I mean I get the more complex a language, the longer its specification is going to be
21:38:43*vlad1777d joined #nim
21:38:55PMunchHmm, what's the best way to convert a ExprColonExpr into an IdentDefs for use in a FormalParams?
21:38:57*ftsf quit (*.net *.split)
21:38:57*chemist69 quit (*.net *.split)
21:38:57*kier quit (*.net *.split)
21:38:57*Araq quit (*.net *.split)
21:38:57*oprypin quit (*.net *.split)
21:38:58*Amun_Ra quit (*.net *.split)
21:38:58*dom96 quit (*.net *.split)
21:38:58*GaveUp quit (*.net *.split)
21:38:58*Xe quit (*.net *.split)
21:38:58*programisto quit (*.net *.split)
21:38:58*jsn- quit (*.net *.split)
21:42:53*dom96 joined #nim
21:42:54*dom96 quit (Changing host)
21:42:54*dom96 joined #nim
21:43:37*oprypin joined #nim
21:43:43PMunchWait doesn't NimNodes support HSlices?
21:48:42*Snircle joined #nim
21:48:57*madpat joined #nim
21:52:09*natrys quit (Quit: natrys)
21:57:37*JappleAck quit (Quit: Leaving)
21:58:42*gokr joined #nim
22:01:59*ftsf joined #nim
22:01:59*chemist69 joined #nim
22:01:59*kier joined #nim
22:01:59*Araq joined #nim
22:01:59*Amun_Ra joined #nim
22:01:59*GaveUp joined #nim
22:01:59*jsn- joined #nim
22:01:59*programisto joined #nim
22:02:52FromGitter<alehander42> awesome @PMunch I ll take a look tomorrow
22:03:35*Sentreen quit (Ping timeout: 240 seconds)
22:09:02*Xe joined #nim
22:16:45*Sentreen joined #nim
22:43:09*arecaceae quit (Remote host closed the connection)
22:43:27*arecaceae joined #nim
22:47:38*nsf joined #nim
22:51:46*jjido quit (Remote host closed the connection)
22:55:14*Jesin quit (Quit: Leaving)
22:58:24*nsf quit (Quit: WeeChat 1.9.1)
23:02:33*PMunch quit (Quit: leaving)
23:04:58*jjido joined #nim
23:07:24*elrood quit (Quit: Leaving)
23:41:11*gokr quit (Ping timeout: 252 seconds)
23:47:10*7GHABF4P5 quit (Read error: Connection reset by peer)
23:47:42*yglukhov joined #nim