00:12:21 | * | arnetheduck joined #nim |
01:04:52 | * | HakanD_ quit (Quit: Be back later ...) |
01:07:35 | * | HakanD_ joined #nim |
01:08:05 | * | HakanD_ quit (Client Quit) |
01:08:38 | * | HakanD_ joined #nim |
01:11:59 | * | yglukhov joined #nim |
01:13:07 | * | HakanD_ quit (Ping timeout: 265 seconds) |
01:15:53 | * | sp33der89 quit (Ping timeout: 245 seconds) |
01:16:36 | * | yglukhov quit (Ping timeout: 256 seconds) |
01:21:23 | * | Jesin quit (Quit: Leaving) |
01:22:23 | * | chemist69 quit (Ping timeout: 256 seconds) |
01:25:55 | * | Jesin joined #nim |
01:36:39 | * | chemist69 joined #nim |
01:51:36 | * | pregressive quit (Remote host closed the connection) |
02:16:06 | * | avp joined #nim |
02:16:11 | * | avp left #nim ("WeeChat 1.5") |
03:13:41 | * | yglukhov joined #nim |
03:17:59 | * | yglukhov quit (Ping timeout: 256 seconds) |
03:36:42 | * | kulelu88 quit (Quit: Leaving) |
03:41:22 | * | rtr_ joined #nim |
03:52:31 | * | mitai quit (Ping timeout: 276 seconds) |
04:21:08 | * | arnetheduck_ joined #nim |
04:21:08 | * | arnetheduck quit (Read error: Connection reset by peer) |
04:42:33 | * | rtr_ quit (Remote host closed the connection) |
04:43:07 | * | rtr_ joined #nim |
04:43:08 | * | bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
04:47:45 | * | rtr_ quit (Ping timeout: 260 seconds) |
04:58:30 | * | cheatfate quit (Read error: Connection reset by peer) |
04:59:10 | * | cheatfate joined #nim |
05:05:13 | * | yglukhov joined #nim |
05:08:20 | * | bjz joined #nim |
05:09:34 | * | yglukhov quit (Ping timeout: 250 seconds) |
05:10:15 | * | bjz quit (Client Quit) |
05:26:43 | * | chemist69 quit (Ping timeout: 245 seconds) |
05:31:22 | * | chemist69 joined #nim |
05:37:10 | * | yglukhov joined #nim |
05:37:51 | * | bjz joined #nim |
05:39:49 | * | bjz quit (Client Quit) |
05:40:06 | * | rtr_ joined #nim |
05:41:53 | * | yglukhov quit (Ping timeout: 260 seconds) |
05:46:39 | * | Snircle quit (Quit: Textual IRC Client: www.textualapp.com) |
05:56:36 | * | bjz joined #nim |
06:01:23 | * | yglukhov joined #nim |
06:05:44 | * | yglukhov quit (Ping timeout: 250 seconds) |
06:13:06 | * | GustavoLapasta joined #nim |
06:13:09 | * | bjz quit (Ping timeout: 260 seconds) |
06:13:41 | * | bjz joined #nim |
06:25:37 | * | yglukhov joined #nim |
06:30:08 | * | yglukhov quit (Ping timeout: 260 seconds) |
06:51:52 | * | rtr_ quit (Remote host closed the connection) |
06:52:35 | * | rtr_ joined #nim |
06:53:34 | * | Demon_Fox quit (Ping timeout: 250 seconds) |
06:55:21 | * | Demon_Fox joined #nim |
07:16:37 | * | nsf joined #nim |
07:57:42 | * | enthus1ast quit (Ping timeout: 250 seconds) |
08:02:00 | * | yglukhov joined #nim |
08:11:31 | * | gokr joined #nim |
08:16:54 | * | enthus1ast joined #nim |
08:19:21 | * | irrequietus joined #nim |
08:24:45 | * | irrequietus quit (Remote host closed the connection) |
08:25:56 | * | irrequietus joined #nim |
08:32:28 | * | enthus1ast quit (Ping timeout: 265 seconds) |
08:52:41 | * | gokr quit (Ping timeout: 252 seconds) |
08:59:03 | * | yglukhov quit (Remote host closed the connection) |
09:05:52 | * | nsf quit (Quit: WeeChat 1.5) |
09:07:30 | * | gokr joined #nim |
09:10:39 | * | yglukhov joined #nim |
09:23:41 | * | yglukhov quit (Remote host closed the connection) |
09:34:07 | gokr | It is just me who fail "nimble install python"? |
09:34:30 | gokr | It seems there are no tags for that git repo either so I can't ... use an older one I think. |
09:35:38 | Araq | fails for me too |
09:36:29 | Araq | yeah, the nimble file is broken |
09:36:47 | Araq | let me fix it, damn |
09:38:44 | Araq | tada |
09:38:55 | * | vendethiel- joined #nim |
09:39:58 | * | vendethiel quit (Ping timeout: 250 seconds) |
09:40:33 | gokr | Aha, worked for me though when I ... did "nimble install nimble@#head" |
09:41:42 | gokr | Araq: So ... not sure what is going on there. |
09:42:14 | Araq | I think 'nimble install @#head' avoids parsing the .nimble file :-) |
09:42:24 | * | enthus1ast joined #nim |
09:42:26 | Araq | because the .nimble file clearly was broken |
09:42:30 | Araq | I just fixed it. |
09:42:46 | gokr | Do note that I mean... that "nimble install python" works after I did "nimble install nimble@#head" (<- note "nimble") |
09:43:15 | gokr | But ok, perhaps it was you. |
09:43:18 | gokr | duh. |
09:43:21 | Araq | yes |
09:43:35 | dom96 | I think 'nimble install @#head' avoids parsing the .nimble file :-) |
09:43:37 | dom96 | Nope |
09:43:48 | dom96 | 'install' always parses the .nimble file |
09:43:50 | Araq | ok, so it was just me. |
09:44:39 | gokr | Ah (just looked at your commit) |
09:46:02 | gokr | Araq: I dropped that book thing, def talked me out of it ;) |
09:47:21 | Araq | what? why? |
09:47:23 | gokr | But if anyone else here is interested in writing a book on Nim - for a pulishing house - check with me. |
09:47:35 | gokr | I don't have the time simply. |
09:48:13 | gokr | But if you together with some others want to do it - I can forward you. |
09:48:19 | Araq | how about def-, gokr and araq write the book together? everybody submits a chapter |
09:49:08 | Araq | we only need to reword some blog posts of ours *cough* |
09:49:13 | gokr | Mmm. |
09:49:54 | dom96 | you'd likely need to submit more than one chapter each :) |
09:50:10 | gokr | I might try to chip in something of course - but if you want to do this (and not self publish simply) - then you should grab it and talk to those guys. |
09:50:34 | gokr | def was mainly thinking of writing a small one, and self pub it. |
09:56:04 | * | rtr_ quit (Remote host closed the connection) |
09:56:24 | * | gokr quit (Ping timeout: 260 seconds) |
10:01:40 | * | Demon_Fox quit (Quit: Leaving) |
10:18:46 | * | desophos quit (Read error: Connection reset by peer) |
10:19:02 | * | rtr_ joined #nim |
10:31:51 | * | elrood joined #nim |
10:50:00 | * | bjz quit (Ping timeout: 250 seconds) |
10:50:55 | * | bjz joined #nim |
10:55:19 | * | xet7 quit (Quit: Leaving) |
11:02:04 | * | Snircle joined #nim |
11:02:32 | * | irrequietus quit (Ping timeout: 256 seconds) |
11:07:15 | * | sp33der89 joined #nim |
11:08:58 | * | GustavoLapasta quit (Quit: Leaving) |
11:13:42 | cheatfate | so, 0.15.2 released? |
11:19:57 | arnetheduck_ | btw, looks like the clang optimizer breaks nim gc (m&s at least) when compiling with lto.. nim c --gc:markandsweep -c gcemscriptem.nim, then clang -flto -O2 the c files causes the test to fail.. anyone seen this before? |
11:25:58 | * | gangstacat quit (Ping timeout: 250 seconds) |
11:26:09 | * | gangstacat joined #nim |
11:29:51 | FromGitter | <endragor> @Araq Is it safe to use a global variable from multiple threads if the variable gets initialized at the beginning of the program and is never changed later? |
11:30:22 | Araq | no. |
11:31:00 | FromGitter | <endragor> what can happen? |
11:33:01 | Araq | subtle data races due to the unprotected write barrier |
11:33:20 | Araq | and no, "reading" doesn't mean the write barrier is not run. |
11:35:36 | * | Ven joined #nim |
11:38:35 | * | irrequietus joined #nim |
11:45:49 | * | Ven quit (Read error: Connection reset by peer) |
11:46:03 | * | Ven joined #nim |
11:47:24 | * | irrequietus quit (Ping timeout: 260 seconds) |
11:55:56 | FromGitter | <endragor> where can I read about that? I was pretty sure in C/C++ and if you don’t change certain piece of memory after thread is created, you’re fine reading it. And write barriers in code that only reads sounds odd. barriers should not be “run” automatically at all - they are invoked explicitly, aren’t they? |
11:57:23 | FromGitter | <endragor> well they are run “automatically" for volatile and other special stuff, but outside of that it’s an explicit thing that tells compiler/cpu to avoid certain reorderings |
11:57:42 | Araq | that's a CPU memory barrier |
11:57:51 | Araq | very different from a GC barrier. |
11:58:19 | FromGitter | <endragor> ok, so that’s specifics of GC, I see |
11:58:26 | Araq | but assuming naive C++ refcounting can give you an idea: |
11:58:56 | Araq | auto tmp = some_shared_pointer(); |
11:59:10 | Araq | printf(tmp->bar); // only used tmp for reading |
11:59:39 | Araq | // RC ops still performed though |
12:03:16 | * | Ven_ joined #nim |
12:03:51 | FromGitter | <endragor> I don’t think C++ shared ptrs change internal state when you dereference them :-P only construction/assignment/destruction affect refcounting. |
12:04:18 | * | Ven quit (Ping timeout: 256 seconds) |
12:04:29 | Araq | auto tmp = some_shared_pointer(); was meant to be an assignment |
12:04:50 | * | HakanD_ joined #nim |
12:05:10 | * | kunev quit (Quit: е те!) |
12:05:11 | FromGitter | <endragor> ah alright. but no problem if no assignment ever happens after threads are created, right? |
12:07:01 | Araq | strictly speaking the compiler is allowed to introduce assignments :P |
12:07:18 | Araq | you'll likely get lucky though with the current compiler |
12:10:47 | * | fredrik92 joined #nim |
12:11:37 | * | fredrik92 quit (Client Quit) |
12:12:26 | * | fredrik92 joined #nim |
12:13:28 | FromGitter | <endragor> ok, I don’t want to temporarily get lucky :) but not sure how to solve my problem some other way. a pragma like {.copyMeWhenThreadIsCreated.} would be nice. ⏎ Basically I have a library module that has an immutable variable (a table) that gets initialized as a result of macro invocations. Then it’s only read, without any writing. The library doesn’t control thread creation, so there is no obvious way to pass that table to other |
12:13:28 | FromGitter | ... threads, so that everything is GC-safe. |
12:15:30 | * | Ven_ quit (Read error: Connection reset by peer) |
12:15:43 | Araq | ah that's a tough nut. A shared table would work but cannot be constructed at compile time |
12:15:49 | * | Ven joined #nim |
12:16:07 | Araq | but you can copy into the shared table at runtime. |
12:16:54 | Araq | or you dump the data as json at compile-time and read it back at runtime |
12:23:40 | * | kunev joined #nim |
12:24:04 | FromGitter | <endragor> I’m fine with runtime, the initialization is at runtime at the moment. I actually forgot about existence of SharedTable. The problem is that the table data itself is GCed, too :/ The easiest and generic solution would be to copy the table (or any other object) automatically when a thread is created with the help of some compiler pragma. Otherwise I guess I have to implement my own non-GC data structure. |
12:29:24 | * | bjz quit (Ping timeout: 260 seconds) |
12:29:59 | Araq | copy to what? |
12:30:54 | FromGitter | <endragor> basically make it .threadvar that gets copied from the thread that creates the new thread. |
12:31:59 | * | dom96 quit (Changing host) |
12:32:00 | * | dom96 joined #nim |
12:32:02 | * | bjz joined #nim |
12:36:55 | * | xet7 joined #nim |
12:42:29 | * | rtr__ joined #nim |
12:43:39 | Araq | cheatfate: now. v0.15.2 is out. |
12:45:47 | * | rtr_ quit (Ping timeout: 256 seconds) |
12:47:08 | * | Ven quit (Ping timeout: 244 seconds) |
12:47:27 | * | Ven joined #nim |
12:49:52 | * | rtr_ joined #nim |
12:51:56 | * | rtr__ quit (Ping timeout: 250 seconds) |
12:52:42 | * | rtr__ joined #nim |
12:54:23 | * | mitai joined #nim |
12:54:58 | * | rtr_ quit (Ping timeout: 250 seconds) |
13:01:29 | * | Ven quit (Read error: Connection reset by peer) |
13:01:43 | * | Ven joined #nim |
13:10:35 | * | rtr__ quit (Quit: Leaving...) |
13:17:15 | * | Ven_ joined #nim |
13:17:45 | * | Ven quit (Read error: Connection reset by peer) |
13:24:02 | * | pie_ joined #nim |
13:25:02 | cheatfate | Araq, but `Nim build is failed` with release... |
13:30:58 | Araq | what? |
13:32:05 | Araq | ah hmm, that's the niminst change |
13:32:11 | Araq | strange I got no email for this |
13:36:21 | Araq | argh -.- |
13:48:35 | * | Ven_ quit (Ping timeout: 252 seconds) |
13:50:29 | * | Ven joined #nim |
13:52:47 | * | HakanD_ quit (Quit: Be back later ...) |
13:53:21 | * | HakanD_ joined #nim |
13:54:16 | * | stisa joined #nim |
13:55:15 | * | vxn joined #nim |
13:55:16 | * | mitai quit (Ping timeout: 260 seconds) |
13:56:42 | * | HakanD__ joined #nim |
13:57:38 | * | HakanD_ quit (Ping timeout: 250 seconds) |
14:01:31 | * | elrood quit (Quit: Leaving) |
14:08:53 | * | bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
14:11:43 | * | HakanD__ quit (Quit: Be back later ...) |
14:17:33 | * | enthus1ast quit (Ping timeout: 245 seconds) |
14:24:07 | FromGitter | <nigredo-tori> Is there a good way to get a unique `NimIdent` in a macro? I've got something along these lines: ⏎ ```Error: type expected``` ⏎ I guess the root of the problem is `genSym` in an untyped tree? Am I wrong? [https://gitter.im/nim-lang/Nim?at=580cc807b6fc192f5631924e] |
14:24:51 | * | Trustable joined #nim |
14:29:56 | * | HakanD__ joined #nim |
14:32:57 | * | stisa quit (Quit: Leaving) |
14:33:17 | * | enthus1ast joined #nim |
14:47:06 | * | Ven quit (Read error: Connection reset by peer) |
14:47:12 | * | Ven_ joined #nim |
15:05:34 | * | nsf joined #nim |
15:07:18 | arnetheduck_ | * exports a symbol from a module, is there a pragma to do the same? such that it can be conditionally controlled? |
15:14:22 | FromGitter | <nigredo-tori> @arnetheduck_, in what context? Do you want to export a symbol defined elsewhere? In this case I don't think there is such thing. |
15:16:05 | arnetheduck_ | I want something to the effect of: when defined(exportmyfuncs): proc x*() else: x() |
15:19:36 | Araq | arnetheduck_: ah no. interesting idea thouhg |
15:20:09 | FromGitter | <nigredo-tori> The simplest I can think of is with forward declarations: ⏎ ```when exportMyProcs: ⏎ proc foo* ⏎ proc foo = discard``` [https://gitter.im/nim-lang/Nim?at=580cd529fb138dce65ef71d1] |
15:21:31 | arnetheduck_ | if there was such a pragma, I think it should be possible to do something like when defined(xxx) {.pragma: exportmaybe, export.} else: {.pragma: exportmaybe .} |
15:22:38 | arnetheduck_ | nigredo-tori, not a fan of forward declarations - it's 2016 after all ;) |
15:24:51 | FromGitter | <nigredo-tori> @arnetheduck_, you can use macros as pragmas. And you can definitely add/remove export postfix from a declaration in a macro. So it shouldn't be hard to define exportmaybe the way you want it to behave. |
15:25:04 | * | elrood joined #nim |
15:26:41 | * | desophos joined #nim |
15:26:58 | * | desophos quit (Read error: Connection reset by peer) |
15:27:26 | * | desophos joined #nim |
15:28:05 | Araq | that's true. a macro can do it. |
15:28:17 | FromGitter | <nigredo-tori> Also, speaking of macros: @Araq, while you're here, could you please answer my question from hour ago? |
15:30:07 | Araq | dunno, looks like it should work? |
15:30:11 | Araq | patch the compiler |
15:30:53 | FromGitter | <nigredo-tori> =) Ok, I'll start an issue. |
15:31:56 | arnetheduck_ | Araq, btw, rtti seems to be used mainly for the gc and deepcopy - so why does it include field names? |
15:32:21 | Araq | so that marshal knows about the field names? |
15:32:55 | arnetheduck_ | aah, used by marshal.. |
15:33:28 | arnetheduck_ | sucks to grep for "name" ;) |
15:37:52 | * | HakanD___ joined #nim |
15:41:11 | * | StarBrilliant joined #nim |
15:41:15 | * | HakanD__ quit (Ping timeout: 244 seconds) |
15:41:15 | * | HakanD___ is now known as HakanD |
15:42:00 | * | Matthias247 joined #nim |
15:49:33 | * | stefantalpalaru joined #nim |
15:50:31 | stefantalpalaru | I'm getting a "./koch install" error with 0.15.2 |
15:50:34 | stefantalpalaru | Error: unhandled exception: format string: key not found: NIMINSTDEPS [ValueError] |
15:50:34 | stefantalpalaru | Error: execution of an external program failed: './tools/niminst/niminst --var:version=0.15.2 --var:mingw=none --main:compiler/nim.nim scripts compiler/installer.ini' |
15:52:00 | Araq | yeah that's pretty bad -.- |
15:52:28 | Araq | workaround: create a NIMINSTDEPS environment variable with some dummy value |
15:53:25 | Araq | good thing we made niminst more picky ... |
15:54:05 | Araq | you shouldn't use 'koch install' btw |
15:54:32 | stefantalpalaru | what's the preferred installation method? |
15:55:33 | Araq | use your package manager to mess with /usr/bin or just add it to your path like we clearly document in ten billion places |
15:56:41 | stefantalpalaru | I don't want a separate tree. I'm packaging it for Gentoo (non-official overlay) and "koch install" did what I wanted until now |
15:58:05 | Araq | for packagers we now have 'koch distrohelper' |
15:58:28 | Araq | which generates the install.sh for you |
15:58:52 | Araq | koch install means "generate and run install.sh" |
15:59:39 | stefantalpalaru | OK. The env var workaround works. I'll give 'koch distrohelper' a try. |
16:00:39 | Araq | thanks. |
16:01:26 | * | Ven_ quit (Read error: Connection reset by peer) |
16:01:59 | * | Ven joined #nim |
16:25:22 | arnetheduck_ | Araq, if I have a type A = object, B = A, is there any way to find out in the AST that B is an alias for A? from what I can tell, the TType instance for B is a copy of A, with no trivial way to follow back to A |
16:26:47 | Araq | both typ.sym fields point to the same sym? |
16:28:02 | * | nsf quit (Quit: WeeChat 1.5) |
16:32:51 | * | nsf joined #nim |
16:33:37 | arnetheduck_ | no, they point to copies.. |
16:34:12 | arnetheduck_ | and the copies have different name fields, as expected.. |
16:35:09 | arnetheduck_ | the two types get different id:s as well |
16:35:46 | * | Andris_zbx joined #nim |
16:36:38 | Araq | arnetheduck_: sounds bad. how does the compiler type check these things then? |
16:36:50 | arnetheduck_ | in the c generator, a single type is generated because the c gen compares the layout of the two types |
16:38:34 | Araq | I asked about the type checking, not codegen |
16:39:19 | arnetheduck_ | no idea, that's what I was hoping you would remember ;) not familiar with those parts |
16:39:30 | * | HakanD quit (Quit: Be back later ...) |
16:48:11 | arnetheduck_ | ok, I think I found it.. in types.nim, it looks like it compares the sym id's of the children of every field in the type |
16:49:09 | arnetheduck_ | proc sameObjectTree |
16:58:22 | dom96 | https://www.reddit.com/r/programming/comments/58yf7s/nim_0152_released/ |
17:00:04 | * | yglukhov joined #nim |
17:04:39 | * | HakanD joined #nim |
17:06:08 | * | baabelfish quit (Quit: WeeChat 1.0) |
17:07:13 | * | yglukhov quit (Remote host closed the connection) |
17:08:09 | * | libman joined #nim |
17:11:10 | * | yglukhov joined #nim |
17:14:23 | * | Andris_zbx quit (Ping timeout: 256 seconds) |
17:15:47 | federico3 | dom96: heh, "productivity/performance ratio" is indeed quite odd |
17:18:39 | dom96 | Really? I still don't see how |
17:20:16 | flyx | someone reported an error on acquiring NimYAML containing „Cannot find nimscriptapi.nim. [NimbleError]“ |
17:20:29 | flyx | hasn't that been fixed some time ago |
17:20:33 | federico3 | dom96: to some picky commenters the ratio would be very high on very productive and very *slow* language like Python or Ruby |
17:21:23 | dom96 | so what should we change it to? |
17:22:25 | federico3 | well, personally I'd say "excellent productivity and performance" |
17:24:14 | dom96 | Araq: can I change it? |
17:30:19 | Araq | sure |
17:31:27 | Araq | dom96: we also need to decide if the niminst issue means we should release 0.15.4 ... -.- |
17:31:52 | * | Ven quit (Read error: Connection reset by peer) |
17:32:06 | elrood | dom96, while you are at it, a bit more modesty and less tooting one's own horn wouldn't hurt either. some might view *excellent* as a bit inadequate and pretentious |
17:32:11 | * | Ven joined #nim |
17:32:46 | federico3 | s/excellent/good/ ? :) |
17:33:33 | dom96 | done |
17:33:39 | dom96 | I just removed that phrase |
17:33:46 | dom96 | sounds good now? |
17:33:54 | federico3 | "Nim provides." |
17:38:46 | federico3 | dom96: are you usually enabling security flags for Nimble e.g. https://github.com/nim-lang/Nim/wiki/Security |
17:38:50 | federico3 | ..? |
17:39:52 | dom96 | nope, why? |
17:41:04 | federico3 | Nimble is doing Internet traffic and pulling sources... |
17:48:08 | * | Andris_zbx joined #nim |
17:48:55 | * | yglukhov quit (Remote host closed the connection) |
17:49:23 | * | Ven quit (Ping timeout: 244 seconds) |
17:51:21 | * | Ven joined #nim |
17:51:56 | * | HakanD quit (Quit: Be back later ...) |
17:52:30 | * | HakanD joined #nim |
17:53:44 | * | enthus1ast quit (Read error: Connection reset by peer) |
17:54:24 | * | enthus1ast joined #nim |
17:58:55 | * | yglukhov joined #nim |
18:00:12 | dom96 | federico3: feel free to compile Nimble with those flags |
18:04:53 | * | Sentreen quit (Ping timeout: 252 seconds) |
18:12:51 | elrood | btw, what was the rationale behind using open instead of half-open ranges, with inclusive lower and exclusive upper bound? |
18:18:03 | * | Sentreen joined #nim |
18:19:24 | cheatfate | elrood, i think this question is like question about `why spaces and not tabs`... |
18:21:07 | Araq | I don't see these flags having any meaningful effects on Nim |
18:21:33 | Araq | elrood: half-open ranges do not even work. |
18:21:58 | Araq | low(myEnum)..high(myEnum) |
18:22:40 | Araq | exclusive upper bounds only work when you actually have a value that shouldn't be part of the interval. |
18:22:56 | elrood | cheatfate, actually, it's not really bikeshedding, there are logical reasons behind using half-open intervals as a convention. you might just want to read dijkstra's ewd831 for a concise argument. and even if it was just a question of opinions, there must have been reasons to decide on the way it is |
18:23:10 | Araq | dijkstra is wrong. |
18:23:16 | Araq | can happen to the best of us. |
18:23:30 | elrood | he usually is, yep ;) or at least it's fun to disagree with him |
18:24:19 | elrood | while i don't agree with your reasoning here, thanks for your explanation and insight into your way of thought |
18:24:39 | Araq | as I said, it's not enough to disagree |
18:24:51 | Araq | you also have to be unable to explain your reasoning. |
18:25:18 | Araq | you cannot disagree about objective facts. |
18:25:42 | Araq | fact: exclusive intervals do not work. In fact, they are not even constructive. |
18:25:44 | elrood | i haven't even tried, so unable is a bit harsh, but okay. how would you denote an empty range, for example? but sure, it's not something that can be changed at this stage anymore, even if you wanted |
18:26:12 | Araq | empty range: 0 .. -1 |
18:27:04 | * | yglukhov quit (Remote host closed the connection) |
18:27:18 | elrood | doesn't go quite that well with nim's credo of being elegant if you have to dive into the realm of unnatural numbers for that, but it's fine, not really an issue |
18:27:43 | Araq | on the contrary, negative numbers are inherently elegant |
18:27:55 | cheatfate | empty range in such way looks ugly |
18:27:59 | Araq | 0 .. len - 3 iterates 0 times when len == 0 |
18:28:17 | Araq | with unsigned you get overflows instead, how useful. |
18:29:02 | Araq | alternatively you can abandon subtractions |
18:29:12 | cheatfate | it looks ugly just because 1st > 2nd |
18:29:36 | cheatfate | and of course doesnt work for unsigned integers... |
18:30:09 | Araq | unsigned integers are inherently broken anyway. |
18:30:27 | cheatfate | unsigned integers broken only in Nim |
18:30:59 | Araq | for (unsigned int i = 0; i < length-3; i++) // broken in C, C++ |
18:31:09 | Araq | broken everywhere. |
18:31:33 | Araq | but nice try. |
18:31:44 | cheatfate | not broken because you will get warning about ^^^ |
18:31:59 | Araq | and how do you fix the warning? |
18:32:18 | Araq | countup(a, b) # let's reverse this loop |
18:32:37 | Araq | countdown(b, a) # easy peasy, because both are inclusive. |
18:33:36 | elrood | your way additionally blocks the path to a more intuitive notation of end-relative indexes as we have in python, by the way. but as said, it's not something really worth discussing about at this stage of nim's development. i was just asking for curiosities sake, not for a change |
18:33:45 | cheatfate | we can always dispute in such way, but nim uses c as backend and c has unsigned types... |
18:34:23 | Araq | elrood: ..< exists in Nim and is perfectly natural |
18:34:27 | cheatfate | even cpu has unsigned and signed operations |
18:34:32 | elrood | ugly ;P |
18:34:40 | * | irrequietus joined #nim |
18:34:42 | elrood | just as ^1 |
18:34:53 | Araq | .. vs ..< is more betautiful than Python's : |
18:35:06 | Araq | just as ^1 is more beautiful than -1 |
18:35:22 | elrood | nah, now that's *real* bikeshedding we're delving into. but we can agree to disagree here |
18:36:02 | * | GustavoLapasta joined #nim |
18:36:12 | cheatfate | -1 is normal notation which everybody can understand, but for me ^1 looks like `xor 1`... and what does it mean? need to read documentation... and so on |
18:37:00 | Araq | a[-1] is not obvious to non-Python-programmers |
18:37:14 | Araq | Java/C# have no such concept |
18:37:51 | * | irrequietus quit (Client Quit) |
18:38:00 | cheatfate | Araq, i have enough python experience and know about [-1] # and i dont think its a great idea... but anyway when you are learning python some of things happens which you not like... |
18:38:03 | * | irrequietus joined #nim |
18:38:48 | cheatfate | `double space` was also a problem for me when i have started with nim... but i have already adapted |
18:38:59 | Araq | congrats. :P |
18:39:37 | * | enthus1ast quit (Read error: Connection reset by peer) |
18:39:58 | * | enthus1ast joined #nim |
18:40:20 | cheatfate | so its why elrood question ~ `space vs tabs` question... it depends on chaos in Araq's head :) |
18:41:42 | Araq | except my reasons are always reasonable whereas yours amount to "I disagree because it's different" |
18:42:17 | * | irrequietus quit (Read error: Connection reset by peer) |
18:42:22 | Araq | spaces vs tabs is another topic. Hint: tabs do not work ;-) |
18:42:29 | * | irrequietus joined #nim |
18:43:17 | cheatfate | Araq, your reasons are subjective |
18:44:52 | cheatfate | and some people can agree with you and continue to use your language, but there always present amount of people which disagree... but its your language and your rules |
18:46:23 | elrood | hint: tabs do work, if used correctly for indentation only and not for alignment within code. but aye, it's a different topic, and one that's been discussed to death and back superoversufficiently |
18:47:36 | Araq | C has a concept of an addressable but not dereferencable memory location. a[L] has an address but you cannot deref the pointer. All thanks to exclusive ranges. |
18:47:40 | cheatfate | no, this is same topic... some people likes '{}' some people likes spaces and some people like spaces with tabs |
18:48:35 | cheatfate | some people likes signed integers only, some people likes signed + unsigned integers |
18:48:43 | Araq | That's a subtle corner case. Hardly elegant. |
18:49:20 | cheatfate | some people likes exclusive ranges and some people likes inclusive ranges... |
18:49:36 | cheatfate | So we need to stop dispute on `colors`... |
18:49:42 | Araq | and some people actually understand the implications. |
18:50:12 | federico3 | cheatfate: I like invisible green |
18:54:23 | cheatfate | does anybody know how to implement pseudoterminal (pty) on windows? |
18:54:36 | cheatfate | i dont mean escape sequences |
18:55:07 | cheatfate | i mean what i can use to make behavior equal to unix pty |
18:55:52 | * | irrequietus quit (Read error: Connection reset by peer) |
18:56:00 | * | irrequietus joined #nim |
18:56:59 | elrood | github.com/rprichard probably does |
18:59:01 | * | Jesin quit (Quit: Leaving) |
19:02:07 | cheatfate | elrood, yeah its my working idea but it has a problems... because i need to pass name of my brand new pty console to other program |
19:02:15 | * | Ven quit (Read error: Connection reset by peer) |
19:02:37 | * | Ven joined #nim |
19:03:20 | cheatfate | but looks like its only way |
19:07:34 | * | gokr joined #nim |
19:07:34 | * | Jesin joined #nim |
19:15:11 | * | Andris_zbx quit (Quit: Leaving) |
19:19:40 | * | yglukhov joined #nim |
19:27:48 | * | PMunch joined #nim |
19:35:04 | * | Ven quit (Ping timeout: 260 seconds) |
19:36:48 | * | Ven joined #nim |
19:49:38 | * | Ven quit (Ping timeout: 245 seconds) |
19:52:25 | * | Ven joined #nim |
19:54:29 | * | bjz joined #nim |
19:54:46 | * | stefantalpalaru quit (Quit: Leaving) |
19:58:32 | * | yglukhov quit (Remote host closed the connection) |
20:01:34 | * | Jesin quit (Quit: Leaving) |
20:03:49 | * | chemist69 quit (Ping timeout: 260 seconds) |
20:05:20 | libman | Reminder: if you're on Facebook, please join https://www.facebook.com/groups/2344484792356933/ and share Nim-related posts (especially to programming groups). |
20:10:40 | * | stisa joined #nim |
20:11:10 | flyx | there are programming groups on facebook? |
20:19:41 | * | Ven quit (Ping timeout: 260 seconds) |
20:19:43 | * | kulelu88 joined #nim |
20:20:40 | Calinou | http://libman.org/img/bak/20160806-Nim-StarGazers.jpg |
20:20:43 | Calinou | hey, I see my avatar |
20:20:53 | Calinou | top left, just to the left of the 2nd "spike" of the crown starting from the left |
20:20:57 | Calinou | the grey and green pixel one |
20:22:11 | * | Ven joined #nim |
20:22:51 | Calinou | libman: btw I made a 64-bit AppImage of Godot |
20:23:30 | libman | I'm not familiar with AppImage. |
20:24:03 | Calinou | libman: http://appimage.org/ |
20:24:06 | Calinou | portable Linux applications |
20:24:08 | libman | Wait, actually I am, but it's outside my field of interests. |
20:24:29 | * | yglukhov joined #nim |
20:25:07 | libman | My long-term goal (aside from studies in many fields outside CS) is a pure-Copyfree Unix distro. Nothing that's restrictively licensed or married to Linux is interesting to me. |
20:26:01 | libman | flyx: Facebook sucks, but it has over a billion users. It's a good way of reaching people for my other projects, so I put my dev-related projects on FB as well. |
20:26:44 | libman | A Nim wrapper over Godot C++ would be very interesting for pure-Copyfree apps though. |
20:28:40 | * | yglukhov quit (Ping timeout: 250 seconds) |
20:30:44 | * | chemist69 joined #nim |
20:31:41 | * | jh32 quit (Remote host closed the connection) |
20:43:59 | * | GustavoLapasta quit (Quit: Leaving) |
20:49:29 | libman | https://archive.is/ON2L9 - To Boldly Share Where No Nim Was Shared Before! :P |
20:52:55 | cheatfate | dom96, what do you think about function in asyncdispatch to get handle of windows completion port? something like `getSystemHandle(p: PDispatcher): Handle =`? |
20:53:06 | * | libman quit (Quit: Leaving.) |
20:59:17 | dom96 | cheatfate: sounds good |
21:00:59 | sp33der89 | @def-, any new blogposts coming up? |
21:01:03 | sp33der89 | on the hookrace blog |
21:01:30 | def- | sp33der89: yes, i think i wrote one 2 days ago :D |
21:01:41 | sp33der89 | sweet!! looking forward to it |
21:01:51 | def- | i mean i put it online 2 days ago |
21:01:57 | def- | but it's about nim anyway |
21:02:45 | def- | it's not* |
21:03:07 | sp33der89 | it's about haskell! |
21:03:08 | sp33der89 | woop |
21:08:40 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
21:11:02 | sp33der89 | @def-, still like the post, always can enjoy articles like these |
21:11:07 | * | bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
21:12:02 | * | Demon_Fox joined #nim |
21:13:38 | * | HakanD quit (Quit: Be back later ...) |
21:14:13 | * | HakanD joined #nim |
21:15:40 | * | dddddd joined #nim |
21:15:45 | def- | thanks sp33der89 |
21:23:15 | * | Sentreen quit (Ping timeout: 252 seconds) |
21:24:02 | * | Jesin joined #nim |
21:36:14 | * | Sentreen joined #nim |
21:37:28 | * | bjz joined #nim |
21:52:06 | * | bjz quit (Read error: Connection reset by peer) |
22:00:10 | * | elrood quit (Quit: Leaving) |
22:07:44 | * | chemist69 quit (Ping timeout: 250 seconds) |
22:08:55 | cheatfate | dom96, https://github.com/nim-lang/Nim/pull/4941#issuecomment-255617857 |
22:10:12 | * | chemist69 joined #nim |
22:19:36 | * | HakanD quit (Quit: Be back later ...) |
22:20:45 | * | stisa quit (Quit: Leaving) |
22:21:26 | * | HakanD joined #nim |
22:25:56 | * | HakanD quit (Ping timeout: 256 seconds) |
22:26:21 | * | yglukhov joined #nim |
22:30:43 | * | yglukhov quit (Ping timeout: 252 seconds) |
22:33:00 | * | Trustable quit (Remote host closed the connection) |
22:36:08 | * | gokr quit (Ping timeout: 244 seconds) |
22:36:34 | * | PMunch quit (Quit: leaving) |
22:48:25 | * | nsf quit (Quit: WeeChat 1.6) |
23:04:34 | * | Matthias247 quit (Read error: Connection reset by peer) |
23:13:30 | * | irrequietus quit () |
23:16:58 | * | mitai joined #nim |
23:59:36 | * | mitai quit (Ping timeout: 260 seconds) |