00:00:48 | FromGitter | <data-man> Is there a way to add a module to imports at compile time? ⏎ Something like: ⏎ ⏎ ```import oswalkdir ⏎ ⏎ for sourceFile in walkDirRec(".", {pcFile}): ⏎ import sourceFile``` [https://gitter.im/nim-lang/Nim?at=5a57fab05a9ebe4f75778df2] |
00:02:45 | Araq | data-man: There is but it's so painful that nobody does it |
00:03:33 | FromGitter | <RedBeard0531> It should be easy enough to write an importStr macro (assuming that actually works...) |
00:03:34 | FromGitter | <data-man> I want know about this way! :-) |
00:06:04 | Araq | RedBeard0531: I would have written an SQL to mongo-query translator if I still worked for that company |
00:06:22 | FromGitter | <RedBeard0531> https://play.nim-lang.org/?gist=0178017d98487800e5914ea59db12aa5 |
00:07:25 | FromGitter | <RedBeard0531> @Araq we already built that https://www.mongodb.com/products/bi-connector |
00:08:27 | FromGitter | <RedBeard0531> @data-man that code compiles if you remove the line importStr "NO_SUCH_MODULE" |
00:08:32 | * | MJCaley joined #nim |
00:09:16 | Araq | good to know. |
00:09:28 | FromGitter | <data-man> @RedBeard0531: Thanks! |
00:10:15 | Araq | also have something like Lucene? |
00:10:17 | FromGitter | <data-man> @Araq: What about adding compiler's plugins by this way? |
00:10:31 | Araq | what about what? |
00:10:45 | Araq | oh I see |
00:10:57 | Araq | nobody writes compiler plugins so why bother? |
00:12:21 | FromGitter | <data-man> It's never too late to start. |
00:13:34 | Araq | RedBeard0531 any insights to share about C++ vs Java performance? |
00:15:43 | FromGitter | <RedBeard0531> I fucking hate java. Although last time I used it was 10 years ago and I was working on an eclipse plugin that was a GUI for building SELINUX configs, so that may have something to do with it... |
00:16:12 | FromGitter | <RedBeard0531> It's pretty hard to beat well written C++ perf |
00:17:10 | FromGitter | <RedBeard0531> It's not as powerful as lucene, but we do have https://docs.mongodb.com/manual/core/index-text/ |
00:20:36 | FromGitter | <RedBeard0531> One of my most fun projects was solving the 30x slowdown when we added unicode support. I managed to get it to the same speed as ascii with a combination of boyer-more + vectorized processing of ascii subsequences: https://github.com/mongodb/mongo/blob/master/src/mongo/db/fts/unicode/string.cpp#L170-L210 (ByteVector is a thin wrapper around vector intrinsics for x64 and PPC64LE) |
00:22:00 | * | MJCaley quit (Quit: MJCaley) |
00:25:28 | FromGitter | <data-man> ```code paste, see link``` ⏎ ⏎ in.nim(4, 16) Error: 'import' is only allowed at top level [https://gitter.im/nim-lang/Nim?at=5a580078ce68c3bc74a939d0] |
00:26:41 | FromGitter | <RedBeard0531> Oh are you trying to do that at runtime? |
00:27:06 | FromGitter | <RedBeard0531> I think you need to pull that into a statement-level macro so it happens at compiletime |
00:27:59 | FromGitter | <data-man> Yes, at runtime. Thanks. |
00:28:41 | FromGitter | <RedBeard0531> That doesn't make sense then. Importing is a compile-time activity... |
00:31:47 | Araq | RedBeard031 I meant the claims from Java based DB products that "blow mongo out of the water" etc |
00:38:40 | FromGitter | <RedBeard0531> That may be true in very specific cases. But I don't know of any general purpose DBs written in java. And it is a bit hard to compare perf fairly between products with different data models. |
00:41:06 | FromGitter | <RedBeard0531> Its also much easier to do a benchmark poorly than correctly. Making useful benchmarks is a Hard Problem. |
00:41:27 | FromGitter | <RedBeard0531> But I'm in engineering, not marketing :) |
00:48:39 | * | yglukhov joined #nim |
00:53:05 | * | yglukhov quit (Ping timeout: 240 seconds) |
00:59:05 | * | subsetpark quit (Ping timeout: 255 seconds) |
00:59:12 | * | vivus joined #nim |
01:16:33 | * | subsetpark joined #nim |
01:23:10 | * | gokr quit (Ping timeout: 252 seconds) |
02:10:49 | * | sz0 quit (Quit: Connection closed for inactivity) |
02:38:40 | * | vivus quit (Quit: Leaving) |
02:39:56 | * | endragor joined #nim |
03:03:53 | * | chemist69 quit (Ping timeout: 276 seconds) |
03:10:00 | * | marenz__ joined #nim |
03:13:29 | * | marenz_ quit (Ping timeout: 256 seconds) |
03:16:50 | * | chemist69 joined #nim |
03:44:11 | * | Elronnd quit (Ping timeout: 276 seconds) |
03:48:57 | * | Elronnd joined #nim |
03:52:52 | * | yglukhov joined #nim |
03:57:41 | * | yglukhov quit (Ping timeout: 256 seconds) |
04:13:59 | * | rauss quit (Quit: WeeChat 2.0.1) |
04:14:17 | * | arthurz joined #nim |
04:15:33 | * | rauss joined #nim |
04:16:44 | * | arthurz quit (Client Quit) |
04:24:53 | * | vlad1777d quit (Ping timeout: 256 seconds) |
04:52:05 | * | marenz__ quit (Ping timeout: 240 seconds) |
05:02:51 | * | yglukhov joined #nim |
05:07:53 | * | yglukhov quit (Ping timeout: 268 seconds) |
05:13:24 | * | darithorn quit (Quit: Leaving) |
05:14:20 | * | jxv joined #nim |
05:29:47 | * | wurui joined #nim |
05:33:55 | * | wurui quit (Read error: Connection reset by peer) |
05:42:04 | * | vlad1777d joined #nim |
05:48:51 | * | Snircle quit (Quit: Textual IRC Client: www.textualapp.com) |
05:52:07 | * | gokr joined #nim |
06:02:55 | * | jxv quit (Quit: zzz…) |
06:06:19 | * | gokr quit (Ping timeout: 256 seconds) |
06:14:36 | FromGitter | <bung87> what 's pythons setattr in nim? |
06:14:56 | * | yglukhov joined #nim |
06:18:57 | * | yglukhov quit (Ping timeout: 240 seconds) |
06:19:55 | * | nsf joined #nim |
06:26:10 | * | Demos[m] quit (Ping timeout: 264 seconds) |
06:26:10 | * | ehmry quit (Ping timeout: 264 seconds) |
06:26:10 | * | Miguelngel[m] quit (Ping timeout: 264 seconds) |
06:26:58 | * | Miguelngel[m] joined #nim |
06:27:03 | * | Demos[m] joined #nim |
06:27:16 | * | ehmry joined #nim |
06:38:45 | * | Pisuke joined #nim |
06:39:11 | * | MyMind quit (Ping timeout: 256 seconds) |
06:58:06 | * | endragor quit (Remote host closed the connection) |
07:03:05 | * | Sembei joined #nim |
07:04:33 | * | Pisuke quit (Ping timeout: 248 seconds) |
07:09:11 | * | arnetheduck joined #nim |
07:17:01 | * | MyMind joined #nim |
07:18:55 | * | Sembei quit (Ping timeout: 248 seconds) |
07:21:43 | * | miran joined #nim |
07:22:34 | * | endragor joined #nim |
07:54:54 | * | arnetheduck_ joined #nim |
07:54:54 | * | arnetheduck quit (Read error: Connection reset by peer) |
07:56:46 | * | arnetheduck joined #nim |
07:56:46 | * | arnetheduck_ quit (Read error: Connection reset by peer) |
07:57:07 | * | arnetheduck quit (Remote host closed the connection) |
07:58:57 | * | arnetheduck joined #nim |
07:59:40 | * | arnetheduck quit (Remote host closed the connection) |
08:01:38 | * | arnetheduck joined #nim |
08:04:48 | * | yglukhov joined #nim |
08:06:09 | yglukhov | Araq, dom96: pls merge https://github.com/nim-lang/Nim/pull/7067 |
08:19:09 | * | claudiuinberlin joined #nim |
08:40:50 | * | yglukhov quit (Remote host closed the connection) |
08:41:25 | * | yglukhov joined #nim |
08:45:53 | * | yglukhov quit (Ping timeout: 248 seconds) |
08:46:48 | FromGitter | <Varriount> I prefer fmt |
08:48:40 | * | zahary joined #nim |
08:48:41 | * | yglukhov joined #nim |
08:53:31 | FromGitter | <ervinbosenbacher> I have a quick question. Currently we cannot target Swift language right? |
08:53:51 | * | dddddd joined #nim |
08:59:18 | dom96 | no, but we can target objective c |
08:59:55 | FromGitter | <ervinbosenbacher> Ok. How mature it is? |
09:00:51 | dom96 | very |
09:01:10 | FromGitter | <ervinbosenbacher> Ok. |
09:01:54 | FromGitter | <ervinbosenbacher> Thx. I am going to give it go, see I can integrate it with our iOS app development |
09:02:06 | FromGitter | <ervinbosenbacher> Any examples around? |
09:03:59 | * | gmpreussner quit (Ping timeout: 248 seconds) |
09:05:56 | * | gmpreussner joined #nim |
09:08:09 | FromGitter | <ervinbosenbacher> nm thx I will give it a go |
09:09:10 | * | PMunch joined #nim |
09:21:12 | miran | Araq: i agree that `+` is logical for set union (and `*` for intersection), but this is, strictly speaking, not numeric `inc` |
09:25:32 | FromGitter | <Araq> yeah I wonder if it's a type and Dom meant ``incl`` |
09:27:30 | miran | see two points in his post from 3 days ago - seems like it is not typo |
09:27:55 | FromGitter | <Araq> well ``inc`` is crazy, no need to discuss it :P |
09:29:10 | dom96 | I was only suggesting it because of `+=` |
09:29:14 | dom96 | which to me is the same as `inc` |
09:30:04 | FromGitter | <Araq> ok, after the 'fmt' fiasco I won't talk about these things for a couple of days. |
09:30:26 | dom96 | lol |
09:30:43 | miran | what fiasco? it's great fun :D |
09:30:54 | dom96 | maybe we should have a dedicated bike shed day? |
09:30:58 | dom96 | or days :P |
09:31:19 | FromGitter | <Araq> if I get "work on symbol files" days in return. |
09:31:25 | miran | what is today's choice? `?`, `f`, `!`, `fmt`? |
09:31:36 | FromGitter | <Araq> % and 'fmt' |
09:31:45 | FromGitter | <Araq> and I'm not gonna change that anymore |
09:31:51 | FromGitter | <Araq> because it's fine. |
09:32:00 | miran | ah, still the same as few hours ago! boooriiiing! :D |
09:33:35 | FromGitter | <Araq> eventually we need a better json module though. |
09:33:41 | dom96 | note that means we will have both `%` and fmt |
09:34:28 | miran | so for us who don't use json, % should be fine. nice |
09:35:05 | * | vlad1777d quit (Ping timeout: 240 seconds) |
09:36:48 | * | floppydh joined #nim |
09:40:18 | FromGitter | <andreaferretti> @dom96 using += for adding elements is readable |
09:40:28 | FromGitter | <andreaferretti> using inc for adding elements... ugh |
09:40:43 | FromGitter | <andreaferretti> anyway I always use += :-P |
09:45:23 | miran | offtopic: https://www.reddit.com/r/programming/comments/7pvkx4/a_brief_introduction_to_nim/ |
09:46:04 | miran | if this gets some traction, you more experienced in nim, be prepared to answer the questions :) |
09:47:26 | FromGitter | <alehander42> what happened, finally, isn't `%` the choice :O |
09:49:14 | FromGitter | <alehander42> about compiler plugins, @Araq, I had this a bit fringe idea, it would be very useful to have some hooks in c generation which add a call to a handler on each call or return or even line and you can configure them by args, e.g. ⏎ `nim --instrumentCall --instrumentModule:my.nim c a.nim` |
09:49:46 | FromGitter | <alehander42> so you can easily make custom profilers/runtime analysis tools etc and pass them without any compiler modifications |
09:49:47 | * | BitPuffin joined #nim |
09:50:29 | Araq | there is .injectStmt iirc |
09:52:12 | miran | alehander42: you're the author of py2nim, right? can you please add some examples to the readme? |
09:53:01 | FromGitter | <alehander42> yeah, but I didn't find a way to use it for similar goals, you can't really use it to hook exactly on beginning/end of function etc |
09:53:49 | FromGitter | <alehander42> here it would add something like `initInstrumentation()`, `finishInstrumentation` which are called in the beginning and the exit of the program and `onTracedCall` which would be all defined in the provided by the user module which would be a very simple and useful api I think |
09:54:07 | FromGitter | <alehander42> initProfile* |
09:54:27 | FromGitter | <alehander42> @miran @zahary and me are the authors, sorry about that, examples would be good indeed |
09:54:55 | Araq | alehander42: just make usage of the new .core feature |
09:55:21 | FromGitter | <alehander42> currently there are ~40 simple examples in tests/python/ and tests/nim , I thought about generating a document automatically of them |
09:55:25 | Araq | you import a module that has .core procs (used to be called compiler procs) and the codegen picks it up |
09:55:42 | FromGitter | <alehander42> but keep in mind, it's not really ready for use yet |
09:55:49 | Araq | I intend to use this for the pluggable GCs |
09:56:05 | FromGitter | <alehander42> @Araq, interesting , I'll read its docs now |
09:56:21 | Araq | there are none but zahary knows about the .compilerProc mechanism ;-) |
09:56:48 | FromGitter | <alehander42> I'll read the mind of zahary then :D |
09:57:03 | Araq | .core is just an alias for .compilerProc as I intend to make it more open |
09:57:44 | Araq | proc onReturn() {.core.} = ... |
09:57:51 | Araq | proc onEnter() {.core.} = ... |
09:58:37 | FromGitter | <alehander42> so how do I tell `.core.` where exactly to add those procs? or onReturn, onEnter are magical names? |
09:58:49 | Araq | magical names the codegen needs to learn |
09:59:23 | Araq | the only tricky bit is to pick the names not too early so that onEnter doesn't call onReturn implicitly |
10:00:03 | FromGitter | <alehander42> yeah, I had some custom logic in my patch for not including it in each other and also in some blacklisted modules |
10:00:30 | Araq | {.push profiler: off.} ;-) |
10:00:40 | FromGitter | <alehander42> ok, but do they receive some context info, e.g. the name of the current function ? |
10:01:43 | Araq | you pass it to onEnter |
10:01:55 | Araq | proc onEnter(procname: string) {.core.} |
10:02:05 | Araq | etc |
10:02:38 | FromGitter | <alehander42> so, then codegen injects onEnter(procname) in the beginning of each procname proc in the modules I imported it in |
10:02:43 | miran | "there are ~40 simple examples in tests/python/ and tests/nim" --> 'nobody' reads those, readme is the usual place to look for some simple examples. and there you can have a link to more examples in some folder |
10:03:35 | Araq | alehander42: no, that's not how it works |
10:04:00 | miran | things we want to see (in one place) is: this is python code, and this is it converted to nim |
10:04:04 | Araq | it injects this as soon as it knows a .core proc named 'onEnter' exists |
10:04:38 | Araq | which is problematic, usually we have push/pop pragmas to prevent the logic from getting screwed |
10:04:41 | FromGitter | <alehander42> @miran I know, we honestly didn't expect people to see it so soon, I planned on writing a better README and more docs when it's more ready for use, but I'll add some examples today. |
10:05:27 | Araq | why not use the profiling mechanism btw? |
10:06:54 | * | gokr joined #nim |
10:10:13 | FromGitter | <alehander42> well I need to collect some more detailed info, profiling is more like a side effect of it |
10:10:39 | Araq | the Nim profiler is based on hooks |
10:10:47 | Araq | the hooks seem to do what you need |
10:11:11 | FromGitter | <alehander42> aren't you talking about ` --profiler:on --stackTrace:on`? |
10:11:34 | Araq | you can write your own profiler |
10:12:12 | Araq | read its source please and then tell me what's wrong with it |
10:12:34 | Araq | it has the required .push/pop features |
10:17:54 | FromGitter | <alehander42> how costly is to pass the stack trace on each call, compared to e.g. an int16 value? |
10:18:16 | Araq | are you kidding? |
10:18:36 | Araq | unusably slow. |
10:19:00 | Araq | extract the stack trace in the proc when you need it |
10:20:34 | * | yglukhov quit (Remote host closed the connection) |
10:20:49 | FromGitter | <alehander42> no, my point is that from what I see this system.hook proc receives a proc hook(st: StackTrace) |
10:21:10 | FromGitter | <alehander42> I have to test it locally |
10:21:25 | * | yglukhov joined #nim |
10:22:02 | Araq | well I don't remember the details but this is only called occasionally |
10:22:20 | Araq | ok, I see, probably not what you need |
10:23:55 | * | zahary quit (Quit: Leaving.) |
10:25:59 | FromGitter | <alehander42> the point is that even big programs should be able to run with this instrumentation in a reasonable time, it's a bit hard to explain, but soon I'll be able to tell more :D |
10:26:31 | * | yglukhov quit (Ping timeout: 276 seconds) |
10:35:53 | FromGitter | <Araq> yeah well, then do what the stack traced based profiler does and don't track every freaking proc call invokation |
10:37:57 | FromGitter | <alehander42> well, for my goals, if I track a function, I have to track *each* invocation of it |
10:38:36 | FromGitter | <alehander42> but with a reasonable blacklist of not so important for me *usually* builtin procs (which can be whitelisted back if needed) |
10:38:55 | FromGitter | <alehander42> I can still run the nim compiler reasonably quickly with my patch |
10:39:12 | FromGitter | <alehander42> (I spent a day once using my instrumented version by mistake) |
10:41:49 | * | zahary joined #nim |
10:45:10 | FromGitter | <Araq> interesting, how do you store the results? |
10:45:30 | FromGitter | <Araq> I instrumented every memory write/read once with sqlite, it was unusable |
10:46:21 | FromGitter | <alehander42> well I just collect them into arrays and dump them in the end in my own binary format |
10:47:54 | FromGitter | <alehander42> memory reads must be lot more than call invocations I guess :D |
10:47:57 | * | rokups joined #nim |
10:53:28 | gokr | Araq: I get from time to time "*** buffer overflow detected ***" |
10:53:49 | gokr | In my log, I presume that's output from my Nim program, right? |
10:54:08 | gokr | And I guess it might be interesting to investigate? |
10:55:56 | livcd | miran: oh is that your screencast ? |
10:56:17 | FromGitter | <Araq> interesting yes, but I doubt that error message comes from Nim directly |
11:00:17 | gokr | Araq: I am using Jester and HttpClient basically. |
11:01:16 | FromGitter | <Araq> yeah, but that sound more like the underlying C library |
11:01:34 | * | jackv quit (Quit: WeeChat 1.9) |
11:02:41 | FromGitter | <Araq> https://github.com/ninja-build/ninja/issues/1252 |
11:02:58 | gokr | Araq: Aha, interesting. |
11:03:42 | FromGitter | <Araq> could still be caused by your Nim program, of course |
11:04:12 | gokr | yeah, it runs as a service under systemd - this is shown in journalctl, and it then restarts. |
11:05:52 | gokr | Ok, yes, it's libc spitting out that. |
11:06:11 | gokr | Perhaps I would need to run a debug build to get a trace (hopefully) |
11:07:09 | FromGitter | <Araq> --debugInfo is enough, you can stick to the release build |
11:07:21 | FromGitter | <Araq> or maybe --debugger:native -d:release |
11:07:47 | * | Vladar joined #nim |
11:16:33 | * | yglukhov joined #nim |
11:18:35 | * | yglukhov quit (Read error: Connection reset by peer) |
11:20:03 | * | yglukhov joined #nim |
11:29:55 | * | Yardanico joined #nim |
11:29:57 | * | PMunch quit (Quit: Leaving) |
11:33:57 | * | MJCaley joined #nim |
11:43:43 | * | MJCaley quit (Quit: MJCaley) |
11:47:40 | * | gangstacat quit (Quit: Ĝis!) |
11:50:59 | * | gangstacat joined #nim |
11:52:28 | * | zahary quit (Quit: Leaving.) |
11:53:45 | * | yglukhov quit () |
11:55:37 | * | zahary joined #nim |
12:04:20 | * | yglukhov joined #nim |
12:25:52 | dom96 | andreaferretti: IMO += shouldn't be used for adding elements, ever. |
12:27:24 | dom96 | miran: are you the author of that video? |
12:29:33 | Yardanico | miran, how old are you? :) |
12:30:38 | * | dddddd quit (Read error: Connection reset by peer) |
12:31:49 | * | PMunch joined #nim |
12:33:29 | * | vivus joined #nim |
12:44:31 | * | zahary quit (Quit: Leaving.) |
12:45:18 | * | zahary joined #nim |
12:47:27 | * | dddddd joined #nim |
12:50:33 | miran | that's not me |
12:50:37 | miran | i'm 31 btw |
12:51:58 | miran | how old you were thinking i was? :) |
12:52:13 | * | PMunch quit (Quit: Leaving) |
12:52:13 | dom96 | is the author of that video here? |
12:52:22 | dom96 | Just want to tell them: Nice job :) |
12:53:20 | miran | livcd: i'm too camera-shy to have any kind of screencast, let alone about nim where i just started using it couple of months ago |
12:57:46 | * | zahary quit (Quit: Leaving.) |
13:02:21 | * | Snircle joined #nim |
13:03:50 | livcd | miran: i just thought it was you :) |
13:04:12 | miran | i just added a disclaimer on reddit :) |
13:06:15 | * | zahary joined #nim |
13:18:41 | * | yglukhov quit (Remote host closed the connection) |
13:19:15 | * | yglukhov joined #nim |
13:21:46 | * | azur_kind joined #nim |
13:23:40 | * | yglukhov quit (Ping timeout: 260 seconds) |
13:26:19 | vivus | miran: if the content is solid, programmers won't care for your appearance, which is why you can screencast without showing yourself also |
13:27:46 | dom96 | yep, I do livestreams without showing myself :) |
13:27:57 | miran | vivus: i'm thinking about maybe *writing* some articles about nim for complete beginners (this was a request on reddit recently), but that is as far as i'm willing to do |
13:28:17 | vivus | I wrote a nim article on my blog last year. |
13:28:17 | dom96 | miran: do it! |
13:30:06 | * | endragor quit (Read error: Connection reset by peer) |
13:30:08 | miran | dom96: i will, once i find out how a day can have at least 30 hours |
13:30:10 | * | yglukhov joined #nim |
13:30:57 | * | endragor joined #nim |
13:31:08 | miran | no seriously, i might find some time to do it relatively soon. but i won't promise anything |
13:32:14 | miran | i know that github offers personal pages, but i never tried to make one. hopefully this isn't too complicated (for a person who has never done anything web-based) |
13:33:27 | * | yglukhov quit (Remote host closed the connection) |
13:34:00 | * | yglukhov joined #nim |
13:34:29 | * | zahary quit (Quit: Leaving.) |
13:35:08 | * | zahary joined #nim |
13:38:45 | * | yglukhov quit (Ping timeout: 264 seconds) |
13:41:24 | * | floppydh quit (Quit: WeeChat 2.0.1) |
13:45:37 | * | gokr quit (Ping timeout: 248 seconds) |
13:47:31 | * | rokups quit (Quit: Connection closed for inactivity) |
13:53:23 | * | yglukhov joined #nim |
13:58:02 | * | yglukhov quit (Remote host closed the connection) |
13:58:03 | * | Jesin quit (Quit: Leaving) |
13:59:37 | * | yglukhov_ joined #nim |
14:14:18 | * | yglukhov_ quit (Remote host closed the connection) |
14:22:39 | FromGitter | <RedBeard0531> @alehander42 depending on what you are trying to do, you may want to look into gcc's -finstrument-functions flag |
14:41:41 | * | yglukhov joined #nim |
14:42:55 | * | yglukhov quit (Remote host closed the connection) |
14:45:38 | * | gokr joined #nim |
14:49:37 | * | deech quit (Ping timeout: 248 seconds) |
15:00:12 | * | marenz__ joined #nim |
15:00:21 | * | yglukhov joined #nim |
15:02:11 | * | dom96 wonders what the typical t-shirt size distribution is at a conference like FOSDEM |
15:04:25 | FromGitter | <RedBeard0531> bimodal? inverse bell curve? |
15:04:55 | abeaumont | dom96: not too different from any other (generalist) tech conf I'd say, maybe someone has published some stats by chance |
15:05:39 | abeaumont | I can thing it's a quite common question, since there tends to be lots of tshirts in conferences =) |
15:05:55 | dom96 | hmmm https://www.geeksaresexy.net/2013/10/16/t-shirt-size-distribution-at-a-linux-conference-1999-vs-2008/ |
15:06:23 | Yardanico | sooo I guess L? |
15:06:48 | dom96 | This has some better answers I guess https://www.quora.com/What-is-a-good-split-of-S-M-L-XL-quantities-when-ordering-t-shirts |
15:07:53 | dom96 | Advice seems to be 1-2-2-1 (s-m-l-xl), that makes sense |
15:08:18 | FromGitter | <RedBeard0531> If it would be helpful I can find out the distribution for mongo conferences |
15:08:36 | abeaumont | apparently none include women in their research, or they don't bother to do women tshirts at all |
15:08:49 | * | jxv joined #nim |
15:08:50 | dom96 | RedBeard0531: certainly wouldn't hurt, although I would like to buy these t-shirts within the next hour or so |
15:09:00 | FromGitter | <RedBeard0531> Actually now I'm curious how the distribution differs around the world |
15:09:02 | abeaumont | which are usually only a fraction of them and probably 1 size less |
15:09:25 | dom96 | abeaumont: According to my SO female t-shirts ala https://uktshirtprinting.com/product/custom-product-5a567443181b91-26950756 suck |
15:12:01 | abeaumont | unsurprising I'd say, yet having a few would be nice |
15:12:14 | * | Serenitor joined #nim |
15:12:31 | abeaumont | I'm still tempted to buy one, maybe I should do +) |
15:12:48 | dom96 | I also have to decide which ratio of colours to get |
15:16:12 | dom96 | Any opinions? |
15:16:30 | dom96 | Different colours listed here: https://irclogs.nim-lang.org/11-01-2018.html#22:40:12 |
15:18:05 | miran | denim blue + gray (first two options) |
15:19:05 | dom96 | heh, I like those the most as well, but so far all the requests I got were for navy blue and black |
15:22:14 | abeaumont | put one of those blacks into gray, I thought there were only black... |
15:22:29 | abeaumont | but I've bought a gray otherwise |
15:22:43 | abeaumont | *I'd have |
15:23:32 | dom96 | hrm, what do you mean? They all look black to you? :) |
15:27:22 | abeaumont | I bought it from teespring, only saw black, should I'd known there were different colors, I'd had chosen gray |
15:27:37 | dom96 | oh. Yeah, the teespring ones were only black |
15:30:46 | * | arnetheduck quit (Remote host closed the connection) |
15:43:50 | FromGitter | <ervinbosenbacher> quick question |
15:44:19 | FromGitter | <ervinbosenbacher> i guess i should be easy to build something in nim, shared lib and load it back to C |
15:44:56 | FromGitter | <ervinbosenbacher> but how about linking back the generated C code |
15:54:28 | miran | btw, irclogs is looking poorly on mobile |
15:56:40 | * | miran quit (Quit: Page closed) |
15:57:09 | Araq | linking back? |
15:57:29 | FromGitter | <ervinbosenbacher> Sorry :) |
15:57:40 | FromGitter | <ervinbosenbacher> output is C then link that |
15:57:51 | FromGitter | <ervinbosenbacher> as a static lib |
15:58:25 | dom96 | miran: PRs welcome ;) |
15:58:36 | dom96 | Maybe I should put that on our t-shirt :P |
15:59:40 | FromGitter | <nitely> more unicode love https://github.com/nitely/nim-unicodeplus |
15:59:49 | * | Jesin joined #nim |
16:00:35 | FromGitter | <ervinbosenbacher> okay never mind, although successfully managed to port some of our code to Nim then use it as a dybamic lib in python |
16:01:19 | dom96 | nitely: nice, regex coming soon? :) |
16:01:42 | FromGitter | <nitely> in a bit :) |
16:06:14 | * | natrys joined #nim |
16:07:11 | dom96 | hah, I found this: https://dashboard.fosdem.org/dashboard/db/swag |
16:16:50 | FromGitter | <RedBeard0531> @dom96 apparently tshirt sizes skew larger in US than the rest of the world (unsurprisingly :( ). I'm waiting for the guy to get back to me with the actual %s we use in europe. |
16:17:11 | dom96 | Yeah, makes sense :\ |
16:17:29 | dom96 | I think that dashboard I found is what I will base this on |
16:17:39 | dom96 | Since it shows exactly how much was actually sold |
16:18:33 | FromGitter | <RedBeard0531> makes sense |
16:18:52 | dom96 | thanks for asking though |
16:18:58 | dom96 | I'll still be interested in the answer :) |
16:19:25 | FromGitter | <RedBeard0531> np, just a few messages on slack |
16:20:09 | * | zahary quit (Quit: Leaving.) |
16:27:57 | * | gokr quit (Ping timeout: 256 seconds) |
16:28:30 | * | zahary joined #nim |
16:36:51 | FromGitter | <cabhishek> @alehander42 what do think of creating a python to nim translator side - by -side like this http://coffeescript.org/#try ? |
16:37:26 | * | acidx quit (*.net *.split) |
16:37:26 | * | odc quit (*.net *.split) |
16:37:26 | * | pydsigner quit (*.net *.split) |
16:37:27 | * | Shoozza quit (*.net *.split) |
16:37:36 | * | pydsigner joined #nim |
16:37:54 | FromGitter | <cabhishek> ^ might help people coming from python learn nim |
16:38:09 | * | odc joined #nim |
16:38:12 | * | acidx joined #nim |
16:43:43 | * | Jesin quit (Quit: Leaving) |
16:45:04 | Yardanico | it will be possible in the future of course |
16:45:08 | Yardanico | but you need a server for that |
16:45:15 | Yardanico | and decent performance |
16:45:45 | * | dddddd quit (Ping timeout: 246 seconds) |
16:45:52 | Yardanico | since nim has much more differences with python than coffeescript with js :) |
16:46:03 | dom96 | A c2nim version might be doable today |
16:46:28 | dom96 | although I guess c2nim only handles function/struct defintions |
16:46:34 | * | endragor quit (Remote host closed the connection) |
16:46:48 | FromGitter | <andreaferretti> turns out it doens't |
16:46:56 | FromGitter | <andreaferretti> it handles their body as well! |
16:46:58 | FromGitter | <andreaferretti> :-) |
16:47:08 | FromGitter | <andreaferretti> Although this was a surpries to me |
16:47:35 | Yardanico | dom96, it does handle bodies as well |
16:47:41 | Yardanico | but it doesn't translate any C idioms |
16:48:18 | Yardanico | and py2nim for example can translate python's if isistance(object, other): a elif isistance(object, b): b to actual different procedures |
16:48:36 | Yardanico | well it wouldn't work out of the box most of the time, but it will be not hard to correct it by hand |
16:48:53 | * | endragor_ joined #nim |
16:50:22 | Yardanico | also py2nim can translate python dict/list comprehensions |
16:51:03 | * | endrago__ joined #nim |
16:52:38 | dom96 | I think creating a document showing prepared Nim/Python side-by-side examples would be good nonetheless |
16:53:27 | * | endragor_ quit (Ping timeout: 240 seconds) |
16:53:53 | dom96 | If one of you is up for that I'll happily include that on nim-lang.org |
16:55:03 | FromGitter | <cabhishek> @ Yardanico yeah, not necessarily a "one to one" translation but more like this is how its done in Nim |
16:55:19 | * | azur_kind quit (Remote host closed the connection) |
16:55:31 | * | endrago__ quit (Ping timeout: 240 seconds) |
16:55:32 | FromGitter | <cabhishek> @ dom96 I'll take a stab at it |
16:56:43 | dom96 | cabhishek: great, as far as I can see there are two approaches: creating a page similar to the current features page or writing an article. Up to you how you do it |
16:58:07 | FromGitter | <cabhishek> @dom96 I was thinking of first creating a simple UI like coffeescript backed by a server to do the actual translation |
16:58:23 | dom96 | oh, you're talking about the actual translation thing |
16:58:26 | * | Trustable joined #nim |
16:58:33 | dom96 | well, that's a different thing entirely |
16:59:40 | FromGitter | <cabhishek> @dom96 you send python code -> backend service returns Nim code and the UI renders it. |
17:00:00 | FromGitter | <cabhishek> Interactive playground |
17:00:13 | dom96 | yeah, I was talking about the static document |
17:01:05 | * | zahary quit (Quit: Leaving.) |
17:01:48 | FromGitter | <cabhishek> what will the static document contain? |
17:02:10 | FromGitter | <cabhishek> similar to a blog post on how to use py2nim? |
17:02:12 | dom96 | like I said above, prepared Nim/Python side-by-side examples highlighting interesting differences |
17:03:02 | Yardanico | cabhishek: It'll require a decent server :) |
17:03:18 | Yardanico | because py2nim needs to be actually ABLE to run this python script to translate it |
17:03:31 | Yardanico | so it will need all modules used by this script |
17:03:53 | * | darithorn joined #nim |
17:05:06 | dom96 | cabhishek: but if you do create what you have in mind I might be able to offer a subdomain like py2.nim-lang.org or something :) |
17:07:04 | * | jxv quit (Quit: zzz…) |
17:07:18 | * | nsf quit (Quit: WeeChat 2.0.1) |
17:08:04 | dom96 | Yardanico: think you could set up the twitch relay on the Nim VPS? |
17:08:17 | dom96 | Thinking about doing a livestream tomorrow |
17:13:41 | * | vivus quit (Quit: Leaving) |
17:17:37 | FromGitter | <cabhishek> @dom96 thanks, I'll play around with the idea and build something simple as a prototype first |
17:19:07 | * | endragor joined #nim |
17:23:43 | * | endragor quit (Ping timeout: 248 seconds) |
17:23:52 | * | claudiuinberlin quit (Quit: Textual IRC Client: www.textualapp.com) |
17:25:12 | Yardanico | dom96, yep |
17:26:17 | * | yglukhov quit (Remote host closed the connection) |
17:26:44 | * | Serenitor quit (Quit: Leaving) |
17:29:38 | FromGitter | <RedBeard0531> Could you do something crazy like compile py2nim to js and use an emscripten build of python, to push all the work to the client and avoid having a server? |
17:29:39 | * | yglukhov_ joined #nim |
17:29:42 | Yardanico | no |
17:29:50 | Yardanico | py2nim depends on a python project - python-deduckt |
17:30:11 | Yardanico | it installs some special hooks to catch all runtime stuff happening in the interpreter |
17:30:31 | Yardanico | well techically you can also compile python to JS |
17:30:32 | FromGitter | <RedBeard0531> http://pypyjs.org/ |
17:30:35 | Yardanico | I know |
17:30:39 | Yardanico | pypy js is not updated btw |
17:30:43 | Yardanico | it's abandoned :( |
17:30:46 | Yardanico | https://github.com/metacraft-labs/python-deduckt |
17:33:27 | FromGitter | <RedBeard0531> https://github.com/RunestoneInteractive/skulpt looks promising |
17:33:56 | Yardanico | but I doubt they support advanced things that python deduckt uses |
17:34:14 | Yardanico | see for yourself: https://github.com/metacraft-labs/python-deduckt/blob/master/deduckt/tracing.py |
17:34:33 | * | yglukhov_ quit (Ping timeout: 264 seconds) |
17:40:47 | * | NimBot joined #nim |
18:00:07 | * | claudiuinberlin joined #nim |
18:05:59 | * | Ven`` joined #nim |
18:06:46 | * | Trustable quit (Remote host closed the connection) |
18:13:03 | * | yglukhov joined #nim |
18:17:45 | * | yglukhov quit (Ping timeout: 264 seconds) |
18:19:10 | * | Yardanico quit (Remote host closed the connection) |
18:26:31 | * | Yardanico joined #nim |
18:28:56 | * | Ven`` quit (Ping timeout: 268 seconds) |
18:31:40 | * | miran joined #nim |
18:34:28 | * | Demos[m] quit (*.net *.split) |
18:34:29 | * | hohlerde quit (*.net *.split) |
18:34:30 | * | wishi_ quit (*.net *.split) |
18:34:32 | * | askatasuna quit (*.net *.split) |
18:34:44 | * | hohlerde joined #nim |
18:34:45 | * | Demos[m] joined #nim |
18:35:22 | * | askatasuna joined #nim |
18:35:44 | * | wishi joined #nim |
18:35:49 | * | nsf joined #nim |
18:48:12 | * | devdri joined #nim |
18:49:20 | * | Shoozza joined #nim |
18:59:14 | * | dddddd joined #nim |
19:21:15 | * | yglukhov joined #nim |
19:21:56 | * | Yardanico quit (Remote host closed the connection) |
19:22:15 | * | Yardanico joined #nim |
19:59:14 | * | yglukhov quit (Read error: Connection reset by peer) |
20:00:00 | * | yglukhov joined #nim |
20:02:15 | * | vlad1777d joined #nim |
20:08:09 | * | gokr joined #nim |
20:10:18 | * | yglukhov quit (Remote host closed the connection) |
20:10:59 | * | jxv joined #nim |
20:27:33 | FromGitter | <nitely> @dom96 https://github.com/nitely/nim-regex |
20:27:59 | dom96 | yay, awesome |
20:28:20 | dom96 | omg, somebody needs to fix highlighting on GitHub |
20:28:45 | FromGitter | <nitely> haha the red |
20:30:45 | dom96 | The code is beautiful |
20:30:48 | * | Yardanico quit (Remote host closed the connection) |
20:30:57 | * | dom96 cloned it and opened it in VS Code |
20:33:04 | dom96 | Nice job :) |
20:33:08 | * | wastedone_ joined #nim |
20:33:13 | FromGitter | <nitely> thanks :) |
20:49:19 | * | yglukhov joined #nim |
21:13:22 | dom96 | T-shirts ordered :D |
21:15:43 | FromGitter | <data-man> @nitely: Nice! Some benchmarks? :-) |
21:21:23 | * | kivyion joined #nim |
21:23:43 | FromGitter | <nitely> Not yet. I'm sure it's faster than pcre for patological cases (the exponential ones) though :p |
21:24:05 | * | sz0_ joined #nim |
21:25:10 | * | sz0_ quit (Client Quit) |
21:25:41 | * | sz0 joined #nim |
21:31:26 | * | nsf quit (Quit: WeeChat 2.0.1) |
21:38:13 | Araq | nitely: do you use the non-backtracking variant? |
21:40:11 | miran | dom96: maybe you can answer this: https://www.reddit.com/r/programming/comments/7pwwxb/c_will_live_for_another_45_years_and_heres_why/dsl61n0/ ? |
21:50:43 | dom96 | Araq should answer that :) |
21:51:02 | miran | i thought he doesn't have a reddit account |
21:51:24 | miran | btw, nice to see i'm not the only one in that thread mentioning nim |
21:56:18 | * | Vladar quit (Quit: Leaving) |
21:56:45 | * | BitPuffin quit (Remote host closed the connection) |
21:57:56 | * | jxv quit (Quit: zzz…) |
21:59:27 | * | miran quit (Ping timeout: 256 seconds) |
21:59:29 | * | jxv joined #nim |
21:59:58 | FromGitter | <nitely> @Araq: yes! |
22:05:05 | FromGitter | <zetashift> There's alot about GC's in that thread |
22:07:13 | FromGitter | <zetashift> and with that I mean seems some people really really don't want a GC |
22:09:06 | Araq | including me... :-/ |
22:13:49 | FromGitter | <zetashift> You should try rust then Araq hehe....please don't ban me for this joke |
22:14:44 | Araq | come on, I hardly ban anybody here |
22:16:06 | livcd | are there some companies that are in touch with you Araq that are interested in getting rid of gc ? :D |
22:16:29 | Araq | actually no. |
22:17:06 | Araq | but I see way to often "program crashes under extremely hard to reproduce conditions when it's full moon" |
22:17:28 | FromGitter | <zetashift> Last ban on this gitter was in march so that's indeed great. |
22:18:08 | FromGitter | <zetashift> I hope the transistion to a gc-less Nim runtime(does Nim have one?)/stdlib goes better than in D |
22:18:24 | shashlick | so what is the state of the stdlib when gc is off? I keep seeing that statement in comments |
22:18:27 | shashlick | haven't ever tried it though |
22:18:45 | Araq | it's fine, your programs leak then :-) |
22:19:05 | Araq | --gc:none makes Nim produce warnings when you use the GC |
22:20:01 | FromGitter | <data-man> I never used the nimsuggest. All a lexical/semantical information is keep in memory? |
22:20:55 | shashlick | araq: okay ya, it is my responsibility to make sure my code doesn't leak, but can I trust that all libs that I use (at least stdlib) don't leak because they are written with that discipline? |
22:21:44 | Araq | shashlick: I think you're misunderstanding me |
22:25:57 | Araq | data-man: quite, yes. |
22:26:33 | Araq | zetashift: well the plan is to make the GC precise wrt stack roots and work well with the destructors |
22:27:54 | FromGitter | <data-man> @Araq: Why not keep a data about modules in DB (sqlite or key-value DBs)? |
22:28:13 | shashlick | Warning: '&(a, " world")' uses GC'ed memory [GcMem] |
22:28:39 | shashlick | I just did var a = "hello"; a = a & " world" with --gc:none |
22:29:12 | shashlick | so basically I cannot use the stdlib functions with the confidence that it will handle w/gc or w/o gc the same way |
22:42:36 | * | natrys quit (Quit: natrys) |
22:46:22 | * | yglukhov quit (Remote host closed the connection) |
22:52:03 | GitDisc | <treeform> I think some GC or RC is ok. Its when everything is GC and you can't get out of it and its hard to control etc... Like Java GC is really bad for some reason, maybe too many classes/too many abstractions? But python GC/RC is seems ok if it was not for the GIL issues. My best experiences is with the JavaScript GC, probably because you have quality tools to debug it and you are not trying to manage gigabyte heaps. Do you consider reference countin |
22:52:03 | GitDisc | <treeform> a garbage collection method? There seems to be tons of emotion around GC or not GC. I just want it to work™. Most of the time GC just works even in Java. |
22:53:31 | GitDisc | <treeform> I just want GC out of critical sections, but you can do that with most languages by pre allocation and not allocating anything there. Maybe a way to mark these sections. There is usually just N hot paths in a program. |
22:54:57 | * | gokr quit (Ping timeout: 240 seconds) |
22:55:24 | * | yglukhov joined #nim |
22:58:02 | GitDisc | <treeform> Just having vectors and short lived objects and stuff allocated on the stack and packed contagious arrays are enough for me. Just saying... I just want stuff to work and I don't want to think much about it. |
23:01:26 | shashlick | I guess what I'm saying is that I don't expect to ever use --gc:none since I am happy with nim performance for my projects |
23:01:44 | shashlick | i also understand and can benefit from turning off the GC for specific sections |
23:02:25 | shashlick | I just don't understand the benefit of --gc:none if the stdlib is written with the assumption that gc = on |
23:02:52 | shashlick | but that's from someone who doesn't expect to use --gc:none so perhaps I don't get it :) |
23:06:31 | GitDisc | <treeform> Yeah I guess I don't get `--gc:none` too then. |
23:07:08 | shashlick | even the documentation doesn't mention it - https://nim-lang.org/docs/gc.html |
23:07:39 | GitDisc | <treeform> I guess only useful for OS writing or some thing? |
23:07:48 | shashlick | there too, it's talking about option 2 where you can get control over when gc runs and for how long if you need that |
23:09:41 | * | darithorn quit (Remote host closed the connection) |
23:10:00 | * | darithorn joined #nim |
23:14:04 | shashlick | ya, if there was some doc that described what --gc:none is and when/how to use it, it might clear these types of questions |
23:18:21 | * | dddddd quit (Remote host closed the connection) |
23:22:02 | shashlick | this thread provides some early guidance: https://forum.nim-lang.org/t/2489 |
23:23:38 | shashlick | so basically, if you want to use --gc:none, you can only use a subset of Nim to do what you want. if you end up using a GC dependent stdlib call or other library, you have to rewrite that code with manual memory management |
23:23:52 | shashlick | or use the --gc:regions method and separate the manual memory management from portions that require GC as described in the thread |
23:24:03 | shashlick | hope @araq can clarify if this is the right way to do things |
23:26:56 | * | wastedone_ quit (Quit: wastedone_) |
23:28:14 | * | vivus joined #nim |
23:33:13 | * | arnetheduck joined #nim |
23:38:53 | * | devdri quit () |
23:42:24 | FromGitter | <RedBeard0531> --gc:none is also potentially useful for short-lived but frequently run programs when letting the OS collect your garbage is an acceptable solution. |
23:43:11 | FromGitter | <RedBeard0531> Also there are definitely people who will disagree with the statement that you need to disable the GC in order to write an OS. |
23:47:32 | * | endragor joined #nim |
23:51:51 | * | endragor quit (Ping timeout: 256 seconds) |
23:55:02 | * | jxv quit (Ping timeout: 276 seconds) |