00:06:03 | * | benwbooth quit (Ping timeout: 240 seconds) |
00:08:02 | * | benwbooth joined #nim |
00:20:26 | * | desophos quit (Remote host closed the connection) |
00:22:49 | * | desophos joined #nim |
00:27:28 | * | desophos quit (Ping timeout: 264 seconds) |
00:33:59 | * | yglukhov joined #nim |
00:38:18 | * | yglukhov quit (Ping timeout: 244 seconds) |
00:57:20 | * | Demon_Fox joined #nim |
01:03:45 | * | brson quit (Quit: leaving) |
01:08:39 | * | chemist69_ joined #nim |
01:11:57 | * | chemist69 quit (Ping timeout: 276 seconds) |
01:12:29 | * | yglukhov joined #nim |
01:17:03 | * | yglukhov quit (Ping timeout: 250 seconds) |
01:26:38 | * | desophos joined #nim |
02:01:25 | * | yglukhov joined #nim |
02:06:04 | * | yglukhov quit (Ping timeout: 272 seconds) |
02:12:25 | * | der-landgraf joined #nim |
02:19:40 | * | LowLifePerv quit (Quit: thinking about getting a znc) |
02:26:02 | * | yglukhov joined #nim |
02:30:40 | * | yglukhov quit (Ping timeout: 252 seconds) |
02:57:22 | mcc | What is the definition of the "mod" operator |
02:57:30 | mcc | By which I mean: How does "mod" handle differently-signed integers |
02:59:08 | mcc | I might be missing something but I can't find specific definitions of either % (string%) or mod in the manual, although both are referenced. (%% is defined.) |
03:02:35 | * | yglukhov joined #nim |
03:07:25 | * | yglukhov quit (Ping timeout: 260 seconds) |
03:11:24 | * | |meta quit (Quit: Connection closed for inactivity) |
03:27:14 | * | yglukhov joined #nim |
03:31:49 | * | yglukhov quit (Ping timeout: 260 seconds) |
03:47:22 | * | LowLifePerv joined #nim |
03:54:28 | * | GangstaCat quit (Read error: Connection reset by peer) |
04:03:17 | * | yglukhov joined #nim |
04:07:32 | * | yglukhov quit (Ping timeout: 244 seconds) |
04:09:09 | * | GangstaCat joined #nim |
04:09:13 | * | desophos quit (Read error: Connection reset by peer) |
04:15:16 | * | Sembei quit (Ping timeout: 272 seconds) |
04:30:29 | * | endragor joined #nim |
04:51:06 | * | yglukhov joined #nim |
04:55:35 | * | yglukhov quit (Ping timeout: 244 seconds) |
05:06:19 | * | Xe quit (Ping timeout: 260 seconds) |
05:19:59 | * | gokr joined #nim |
05:21:28 | * | kseg joined #nim |
05:21:55 | kseg | Any workarounds to https://github.com/nim-lang/Nim/issues/2722 ? It’s a pretty annoying issue that I seem to continously run into. |
05:24:44 | * | s4 joined #nim |
05:26:30 | * | mcc quit (Quit: Connection closed for inactivity) |
05:27:12 | * | yglukhov joined #nim |
05:31:57 | * | yglukhov quit (Ping timeout: 276 seconds) |
05:32:54 | * | desophos joined #nim |
05:37:49 | * | desophos quit (Ping timeout: 260 seconds) |
05:40:27 | * | yglukhov joined #nim |
05:44:48 | * | yglukhov quit (Ping timeout: 246 seconds) |
05:55:31 | * | woadwarrior joined #nim |
06:04:17 | * | zodiak joined #nim |
06:04:51 | * | yglukhov joined #nim |
06:06:41 | * | zodiak_ quit (Ping timeout: 240 seconds) |
06:09:39 | * | yglukhov quit (Ping timeout: 276 seconds) |
06:16:31 | * | endragor_ joined #nim |
06:19:48 | * | endragor quit (Ping timeout: 244 seconds) |
06:20:07 | * | Xe joined #nim |
06:32:23 | * | endragor_ quit (Remote host closed the connection) |
06:32:52 | * | endragor joined #nim |
06:33:11 | * | yglukhov joined #nim |
06:34:53 | * | yglukhov quit (Remote host closed the connection) |
06:53:24 | * | girvo joined #nim |
06:53:32 | girvo | Hey all |
06:54:01 | girvo | quick question: best way of writing a {.packed.} and padded object out as a series of bytes to a file? :) |
06:58:26 | girvo | Actually, looking up the Rosetta Code results show that because my packed object is just a series of char arrays anyway, I should be able to just write them out with f.write? |
06:58:42 | girvo | as per http://rosettacode.org/wiki/Bitmap/Write_a_PPM_file#Nim |
07:00:40 | * | vendethiel quit (Quit: q+) |
07:01:35 | * | Demon_Fox quit (Quit: Leaving) |
07:03:08 | * | Trustable joined #nim |
07:13:49 | * | girvo quit (Remote host closed the connection) |
07:14:45 | * | girvo joined #nim |
07:19:33 | * | girvo quit (Ping timeout: 260 seconds) |
07:23:07 | Araq | kseg: works for me |
07:23:49 | Araq | use nim devel or wait for the new release |
07:28:44 | * | yglukhov joined #nim |
07:29:29 | Araq | yglukhov: no problems with the new path handling? |
07:33:33 | yglukhov | Araq: haven't noticed. should there be any? |
07:34:03 | Araq | well I had to patch test cases and even Nimble... |
07:34:17 | Araq | but it depends on your coding style I guess |
07:35:24 | yglukhov | ok, then my coding style is good i guess =) |
07:50:44 | * | xet7 quit (Quit: Leaving) |
07:52:43 | * | xet7 joined #nim |
07:55:30 | * | fastrom joined #nim |
07:55:49 | * | girvo joined #nim |
07:59:26 | cheatfate_ | Araq, i know why in lwan posts all is so easy :) lwan not using shared/ref memory :) |
07:59:42 | cheatfate_ | and lwan coroutines dont support floats preserving |
07:59:57 | * | desophos joined #nim |
08:00:15 | * | girvo quit (Ping timeout: 246 seconds) |
08:00:32 | Araq | well we use continuations rather than coroutines, and we better keep using them, they are faster (in theory...) |
08:01:21 | cheatfate_ | let me read about `continuations` |
08:01:44 | cheatfate_ | and now i understand that we need Futures to be in shared memory space... |
08:02:36 | cheatfate_ | ^^^ but this is not a way, just because this causes to move all library to be threadsafe |
08:04:32 | * | desophos quit (Ping timeout: 244 seconds) |
08:05:33 | cheatfate_ | so we need to have future callback dispatcher to take care about threads |
08:06:33 | Araq | don't move Futures from one thread to another (we can attempt that in some later version) |
08:06:46 | Araq | for a start I would simply pass the socket as an int to a worker thread |
08:06:46 | * | Sembei joined #nim |
08:07:03 | Araq | and the worker thread does all the Future stuff and has its own dispatcher |
08:07:39 | Araq | we only need a primitive way to feed the worker threads some work |
08:07:51 | cheatfate_ | Araq, this mean all threads calling asyncdispatch.poll() |
08:08:11 | Araq | all threads calling their own 'poll' |
08:08:22 | Araq | which operates on thread local storage |
08:09:46 | cheatfate_ | Araq, then we dont need this `acceptor thread` like lwan has |
08:10:03 | Araq | we don't? |
08:11:40 | * | Arrrr joined #nim |
08:11:45 | cheatfate_ | currently asyncdispatch uses getGlobalDispatcher() to obtain OS specific `selector` |
08:13:52 | cheatfate_ | so we can just start N threads which will use their own getThreadDispatcher(), so there will be N OS specific selectors allocated |
08:14:15 | cheatfate_ | and after that thread can accept&process connections |
08:14:58 | cheatfate_ | but i dont think it give us speed benefits because its a userspace threads |
08:15:29 | * | LowLifePerv is now known as Bruh |
08:18:16 | Araq | well try it and benchmark it |
08:23:48 | * | endragor quit (Remote host closed the connection) |
08:27:54 | * | fredrik92 joined #nim |
08:31:55 | * | Sembei quit (Ping timeout: 244 seconds) |
08:48:57 | * | endragor joined #nim |
08:57:18 | * | girvo joined #nim |
09:01:19 | cheatfate_ | Araq, hah, `thing` which i always missing is that i need to modify current asynchttpserver, not asyncdispatch :) |
09:01:31 | * | girvo quit (Ping timeout: 244 seconds) |
09:03:25 | cheatfate_ | Araq, that work i'm always talking about is not pushed out :) https://github.com/nim-lang/Nim/pull/4259 |
09:03:38 | cheatfate_ | is now* pushed out |
09:04:49 | * | S1_p joined #nim |
09:11:12 | * | fastrom quit (Quit: Leaving.) |
09:13:31 | yglukhov | cheatfate, wow thats a big pr. could you add some description please? |
09:13:53 | * | Bruh quit (Quit: thinking about getting a znc) |
09:14:44 | Araq | hmm I have visions again. about path handling |
09:15:02 | Araq | maybe I should consult a doctor. or maybe you like to hear them? |
09:15:23 | yglukhov | oh yeah! path handling is interesting! |
09:18:23 | Araq | I like to get rid of nimble paths and the ordinary search path altogether and replace it by a translation table |
09:18:39 | Araq | something like: |
09:19:01 | Araq | strutils: $stdlib/strutils # import strutils refers to the stdlib |
09:19:28 | Araq | random: $nimble/random # use the random from nimble package |
09:20:04 | Araq | my/strutils: foo/bar/strutils # but if I import "my/strutils" then use the one in foo/bar/ |
09:20:23 | Araq | so the table uses "Longest suffix match" for its operation |
09:20:49 | yglukhov | where should this table be configured? |
09:20:59 | Araq | in the project specific config |
09:21:24 | Araq | but: every package gets its own config |
09:21:43 | Araq | and they are all processed by the compiler. |
09:22:08 | yglukhov | yeah so the compiler would have to keep every source-to-its-config correspondance |
09:22:09 | Araq | currently only the project config is processed by the compiler. and I'm not so sure people are aware of that. |
09:24:02 | yglukhov | tbh i cant see the benefit. what do you think of qulified imports? import std.math, std.random? from std import math, random? import std.{math, random}? etc? |
09:25:04 | yglukhov | nimble packages already have unique names, quaranteed by packages.json |
09:25:12 | yglukhov | * guarantted |
09:25:12 | Araq | I don't wanna type 'import std.math' |
09:25:38 | Araq | and what does the 'std' mean? is that the package name? |
09:27:30 | yglukhov | no, std is "reserved" package name. and qualification could be optional i guess |
09:28:40 | Araq | people like to override parts of the stdlib though, my translation table enables that |
09:30:18 | * | woadwarrior quit (Quit: My Mac has gone to sleep. ZZZzzz…) |
09:32:17 | yglukhov | on the other hand, the current state is pretty ok i guess. author of "random" package was just not lucky enough. isnt it what python does with this problem? nothing? |
09:32:56 | * | woadwarrior joined #nim |
09:33:49 | Araq | I'm a happy man. |
09:34:09 | Araq | I know nothing of Python's package management complexity. |
09:34:35 | Araq | with its import hooks, eggs, distutils and PYTHON_PATH |
09:35:05 | * | r4vi joined #nim |
09:36:17 | cheatfate_ | yglukhov, description updated |
09:36:31 | yglukhov | reading it already =) |
09:38:03 | * | cheatfate_ is now known as cheatfate |
09:38:12 | yglukhov | cheatfate: looks cool! do you by any chance know how to process ui events through nim selectors? |
09:39:22 | * | S1_p left #nim (#nim) |
09:39:34 | cheatfate | yglukhov, its very easy for x11 or xcb because they are using network, but the problem is with windows and maybe macos |
09:40:55 | cheatfate | but i think i can adopt windows |
09:41:26 | cheatfate | but i'm completely noob in macos ui |
09:41:26 | yglukhov | doesn't windows selector break upon windows msgs? if yes, it should be pretty easy as well. but yeah, macos is harder. |
09:41:59 | cheatfate | windows selector is useless staff because it can handle only SOCKETs |
09:42:17 | yglukhov | no, i mean waitformultipleblabla stuff |
09:42:38 | yglukhov | isnt it what nim selector uses on windows? |
09:43:14 | cheatfate | yglukhov, current selectors.nim is not used on windows while you using asyncdispatch |
09:43:37 | cheatfate | asyncdispatch uses Windows Completion ports |
09:43:41 | cheatfate | IOCP |
09:43:54 | yglukhov | ahhh ok |
09:44:29 | cheatfate | and i think i can add notification on UI events for windows |
09:45:20 | cheatfate | is macos has something like `IsThereAnyUIEventsAvailable`? |
09:45:42 | * | kseg quit (Quit: kseg) |
09:46:28 | cheatfate | on windows i can start a thread which will do GetMessage() in while(true) and fire events to iocp port |
09:46:59 | cheatfate | for pure x11 or xcb i can do the same |
09:51:25 | cheatfate | Araq, is there any problems why my code breaks `tastoverload1.nim` |
09:51:41 | cheatfate | Araq, or maybe it was done by you? :) |
09:56:24 | * | fredrik92 quit (Read error: Connection reset by peer) |
09:57:26 | * | girvo joined #nim |
10:00:31 | cheatfate | Ahh i forgot i'm failing next test not this one |
10:01:33 | * | girvo quit (Ping timeout: 240 seconds) |
10:06:55 | * | shodan45 joined #nim |
10:16:26 | cheatfate | Araq, what do you think on using processes not threads on unix systems? |
10:16:56 | Araq | not allowed in benchmarks. |
10:17:39 | Araq | what do I think about it? I think it shows how stupid benchmarks are. |
10:20:24 | cheatfate | lol :) |
10:21:10 | * | tautologico quit (Quit: Connection closed for inactivity) |
10:23:17 | yglukhov | cheatfate: there's a slight problem with your recent callSoon impl. |
10:23:34 | cheatfate | yglukhov, which one? |
10:25:03 | cheatfate | Araq, maybe its why in all of this benchmarks java frameworks got first places... looks like java advertising... |
10:25:10 | yglukhov | reading from socket may result in immediate completion, so that the handler is added to callSoon queue. but the socket itself may no longer produce events in select. and so we will sleep in select. it will select nothing and return upon its timeout. |
10:25:21 | yglukhov | and callsoon queue will be processed only after it returns. |
10:25:53 | yglukhov | the simple fix is to add processPendingQueue before select, as well as after it. |
10:25:55 | cheatfate | yglukhov, which OS? |
10:26:02 | yglukhov | mac and linux |
10:26:35 | cheatfate | you are wrong because there not callSoon() in read/send functions for posix systems |
10:26:41 | cheatfate | there no* |
10:26:56 | * | desophos joined #nim |
10:26:59 | cheatfate | on this systems we always make addRead/addWrite before doing read/write |
10:27:21 | cheatfate | so there no "immediate completion"... |
10:27:39 | cheatfate | only connect uses `callSoon` |
10:31:40 | * | desophos quit (Ping timeout: 264 seconds) |
10:33:17 | cheatfate | Looking for name for multithreaded asynchttpserver :) |
10:36:58 | dom96 | Araq: Explain this path handling change to me that you made please |
10:43:20 | dom96 | cheatfate: just skimmed through your PR: please fix your editor so that it doesn't add leading whitespace. |
10:44:17 | * | endragor quit (Remote host closed the connection) |
10:45:34 | dom96 | Also, you will need to convince me why *completely rewriting* selectors is necessary. Do you have benchmarks to back all these changes up? |
10:47:18 | * | krolik joined #nim |
10:48:03 | * | krolik quit (Client Quit) |
10:48:24 | * | SSPkrolik joined #nim |
10:49:02 | cheatfate | dom96, i have not rewrited your selectors.nim, i have made new one |
10:49:13 | yglukhov | cheatfate: how about recvLineInto? |
10:50:02 | cheatfate | yglukhov, recvLineInto -> recvInto -> addRead() |
10:50:28 | dom96 | cheatfate: Yes, but you have replaced its usage in asyncdispatch |
10:50:59 | yglukhov | ok, what i clearly see is callSoon gets called after processPengingQueue and before select |
10:51:50 | * | krolik joined #nim |
10:52:12 | cheatfate | yglukhov, maybe you have futures in your project which returns `already completed` futures, so they becomes callSoon'ed |
10:52:36 | yglukhov | cheatfate: i guess krolik can tell you more about it |
10:52:44 | * | SSPkrolik quit (Ping timeout: 250 seconds) |
10:53:35 | cheatfate | yglukhov, i think you have "immediate completion" in your project not inside asyncdispatch |
10:54:07 | cheatfate | yglukhov, this why you can fall into callSoon() |
10:55:06 | * | arnetheduck joined #nim |
10:56:30 | cheatfate | dom96, ioselectors.nim is faster by design (it not uses tables.nim, and it not allocating sequences in every select() call), and in my `synthetic` benchmarks is like 50% faster |
10:57:21 | * | girvo joined #nim |
10:57:52 | * | bjz joined #nim |
11:02:15 | * | girvo quit (Ping timeout: 260 seconds) |
11:03:21 | * | shodan45 quit (Quit: Konversation terminated!) |
11:10:06 | dom96 | cheatfate: Right. I'm going to have to review it thoroughly then. I don't think it's wise to merge it in before the next release though. |
11:10:42 | Araq | dom96: $projectDir is not added to --path automatically anymore. |
11:11:27 | dom96 | what does that fix? |
11:12:28 | Araq | https://github.com/nim-lang/Nim/issues/546 |
11:19:33 | * | nsf quit (Quit: WeeChat 1.4) |
11:25:09 | * | endragor joined #nim |
11:30:24 | yglukhov | cheatfate: here's the bug. https://github.com/nim-lang/Nim/issues/4262 |
11:44:03 | dom96 | Araq: shouldn't that break importing local modules then? |
11:45:26 | Araq | module lookup rules are these: |
11:46:29 | Araq | (assuming 'import "foo" ') |
11:46:47 | dom96 | I think the fact that I can't write: import nimblepkg/foo in a file that is beside a directory called 'nimblepkg' containing a 'foo' module is extremely unexpected. |
11:47:15 | Araq | if fileExists(path(currentModule) / "foo") then use that |
11:47:24 | Araq | otherwise consult the --path |
11:48:08 | Araq | and afterwards the --nimblepath |
11:49:14 | dom96 | with those rules `import nimblepkg/blah` should work |
11:50:07 | Araq | it does if you do --path:"$projectDir" but that's not done for you implicitly anymore |
11:50:56 | dom96 | for: import "nimblepkg/config" |
11:51:20 | dom96 | fileExists(./nimblepkg/config) -> true |
11:51:27 | dom96 | I don't understand |
11:51:32 | dom96 | what you changed it to shouldn't work |
11:51:33 | cheatfate | yglukhov, but `call processPendingCallbacks()` before select() and after will not resolve #4262 |
11:51:52 | dom96 | unless you added 'nimblepkg' to path, which isn't the case |
11:52:17 | Araq | fileExists(./nimblepkg/config) # not what is attempted. |
11:52:37 | Araq | it's always relative to the location of the *importing module* |
11:52:51 | Araq | which is the only way that makes sense, IMO. |
11:52:56 | cheatfate | yglukhov, as for me poll for 500ms is not needed, and default value must be 0ms |
11:53:04 | dom96 | right, and the *importing module* is in the same directory as 'nimblepkg'! |
11:53:24 | Araq | so you end up with nimblepkg/nimblepkg/foo |
11:53:37 | dom96 | oh |
11:53:45 | dom96 | you changed it in nimblepkg/options |
11:53:48 | dom96 | not nimble.nim |
11:54:11 | dom96 | ok, that does make sense |
11:55:10 | dom96 | but yeah, we need a $local/$stdlib magic keywords for the import statement |
11:55:20 | * | dom96 has already said this a long time ago :P |
11:55:58 | dom96 | and perhaps $nimble too |
11:56:12 | dom96 | but maybe the dollar sign isn't right for this |
11:57:22 | * | girvo joined #nim |
11:57:27 | Araq | I already implemented $lib but it doesn't really do what you think it does |
11:57:41 | Araq | you need to write "$lib/pure/strutils" |
11:57:57 | Araq | "$lib/strutils" doesn't work |
11:59:18 | dom96 | yeah, that sucks |
12:01:02 | Araq | but I think I will simply make it scriptable :P |
12:01:21 | Araq | proc resolveModule(module: string): string # in your .nims config file |
12:01:38 | Araq | and then you can also monkeypatch the stdlib |
12:02:20 | * | girvo quit (Ping timeout: 260 seconds) |
12:02:44 | dom96 | no, make the default sane |
12:03:05 | dom96 | having to script it for every project would suck |
12:05:06 | dom96 | I think we should just have a trifecta of: 'local', 'stdlib' and 'nimble'. That way you can choose between those if you run into conflicts. |
12:05:22 | dom96 | import local.random (or maybe 'project'?) |
12:05:30 | dom96 | import stdlib.random |
12:05:35 | dom96 | import nimble.random |
12:06:12 | Arrrr | sounds good |
12:06:34 | dom96 | and include the $ maybe if it makes things clearer |
12:07:41 | dom96 | I think it would be a good idea to make the $ necessary as it would let people know that it's a special thing. |
12:07:57 | cheatfate | then maybe we can make `any local dir`.random too? |
12:11:27 | Araq | import local(random), stdlib(random), nimble(random) where all 3 are Nimscriptable procs :P |
12:12:14 | Arrrr | local: |
12:12:17 | Arrrr | import random |
12:13:24 | dom96 | Araq: I like it |
12:13:40 | dom96 | Araq: as long as there is a default implementation |
12:17:49 | dom96 | although I'm not sure how overriding in nimscript can work :P |
12:17:49 | Araq | meh, I don't really. BlaXpirit.random seems better than nimble.random |
12:21:01 | * | bjz_ joined #nim |
12:21:40 | * | bjz quit (Ping timeout: 272 seconds) |
12:23:05 | dom96 | that doesn't fix the problem of "I have a local module called random, how can I use it over the stdlib one?" |
12:23:33 | dom96 | not to mention it will break everything |
12:27:41 | * | Arrrr quit (Quit: WeeChat 1.4) |
12:29:58 | * | woadwarrior quit (Quit: My Mac has gone to sleep. ZZZzzz…) |
12:30:58 | dom96 | but, vendoring is likely the way to go in the future. |
12:33:27 | Araq | that problem you describe doesn't exist. |
12:33:56 | Araq | if it's relative to the importing module, it will be picked first, I told you the algorithm. |
12:35:16 | Araq | monkeypatching is about "I want every module to use my random rather than $stdlib.random" |
12:35:16 | * | woadwarrior joined #nim |
12:42:08 | dom96 | oh ok |
12:44:27 | dom96 | if the vendor name is `import` or some other keyword, `import import.module` will still work, right? |
12:45:35 | Araq | no. |
12:46:57 | Araq | but import `import`.module works |
12:47:03 | Araq | or will work |
12:49:28 | Araq | I think we should do this: import pkg.blah is not the same as import "pkg/blah" |
12:49:40 | Araq | the first is about packages |
12:49:45 | Araq | the second about paths |
12:50:02 | dom96 | oh yeah, that's a problem too I guess. |
12:50:04 | Araq | paths stay as they are now |
12:50:14 | Araq | dot notation gets reinterpreted |
12:50:14 | dom96 | but I disagree |
12:50:20 | dom96 | nim doesn't need to do anything |
12:50:30 | dom96 | nimble needs to install packages into a vendor path |
12:51:31 | dom96 | although I'm not sure how we can get a nice deprecation path that way |
12:51:33 | * | nsf joined #nim |
12:56:09 | dom96 | also I see you fixed an asynchttpserver regression |
12:56:19 | dom96 | or rather "attempt" to |
12:56:25 | dom96 | I assume it fixed the problem? |
12:57:22 | * | girvo joined #nim |
13:01:47 | * | girvo quit (Ping timeout: 244 seconds) |
13:07:35 | * | fastrom joined #nim |
13:07:37 | * | krolik_ joined #nim |
13:07:56 | * | krolik quit (Ping timeout: 250 seconds) |
13:08:36 | * | fastrom quit (Client Quit) |
13:33:05 | cheatfate | dom96, to be fair i'm not using nimble at all... |
13:35:23 | dom96 | can you test it please? |
13:41:24 | cheatfate | dom96, this is not fix, this is just `patch` for fixing we need to teach asynchttpserver to handle chunked-encoding in request body and "transfer-encoding" header |
13:42:59 | dom96 | sure |
13:43:07 | dom96 | but it's better than nothing for now |
13:44:17 | cheatfate | dom96, about nimble issue, i need something to reproduce without installing gtk2, qt or any other graphical libraries |
13:45:08 | dom96 | just install anything |
13:45:13 | dom96 | it shouldn't matter |
13:45:27 | dom96 | you can install gtk2 even if your system doesn't support it |
13:45:47 | dom96 | it only downloads the wrapper and copies it into ~/.nimble |
13:47:07 | cheatfate | https://gist.github.com/cheatfate/2bb7e34d466114b98d7e308ad8506ae1 |
13:47:10 | cheatfate | dom96, https://gist.github.com/cheatfate/2bb7e34d466114b98d7e308ad8506ae1 |
13:47:55 | cheatfate | is it enough? or you want me to install particular package? |
13:48:43 | dom96 | can you try `nimble install cairo`? |
13:50:50 | cheatfate | https://gist.github.com/cheatfate/33a24894b704c1a20f7ed35e0e727443 |
13:52:47 | * | s4 quit (Quit: Konversation terminated!) |
13:52:51 | * | fastrom joined #nim |
13:55:52 | dom96 | cheatfate: okay, thanks. Please comment on that issue that it works on FreeBSD for you. |
13:57:27 | * | girvo joined #nim |
14:00:02 | cheatfate | dom96, commented |
14:01:49 | * | girvo quit (Ping timeout: 258 seconds) |
14:05:37 | dom96 | thanks |
14:10:22 | * | _stowa joined #nim |
14:12:12 | * | |meta joined #nim |
14:18:25 | * | _stowa quit (K-Lined) |
14:24:35 | cheatfate | dom96, please check one more idea https://github.com/nim-lang/Nim/issues/4262 |
14:28:51 | * | xet7 quit (Quit: Leaving) |
14:30:35 | * | xet7 joined #nim |
14:33:57 | * | woadwarrior quit (Ping timeout: 250 seconds) |
14:38:30 | * | krolik_ quit (Ping timeout: 250 seconds) |
14:40:55 | * | pregressive joined #nim |
14:41:18 | Araq | how about we deprecate foo.bar in imports for the upcoming release? |
14:41:55 | * | girvo joined #nim |
14:42:16 | Araq | import nimblepkg.bar just makes sense, IMO and who needs the dot to be an alias for / ? |
14:45:08 | dom96 | so then will it be 'import nimblepkg.bar/foo'? |
14:45:44 | Araq | no, import jester.foo |
14:45:52 | Araq | import BlaXpirit.random |
14:46:27 | Araq | import vendor.module |
14:46:42 | * | girvo quit (Ping timeout: 272 seconds) |
14:48:06 | BlaXpirit | :| |
14:48:25 | * | krolik joined #nim |
14:48:33 | dom96 | yeah, maybe stop highlighting BlaXpirit :P |
14:49:11 | dom96 | Araq: what if the module is in a subdirectory? |
14:50:11 | Araq | import vendor.bar/foo ? meh. |
14:50:29 | Araq | maybe let's stick to import "$vendor/bar/foo" |
14:50:40 | Araq | no deprecation path necessary then |
14:51:44 | dom96 | but then Nim needs to know about the vendors |
14:52:20 | * | brson joined #nim |
14:52:40 | * | arnetheduck quit (Ping timeout: 264 seconds) |
14:52:54 | * | gokr quit (Ping timeout: 276 seconds) |
14:55:47 | BlaXpirit | not that I care much but this sounds like a bad idea |
14:56:24 | BlaXpirit | just disallow 3rd party libs to use names from standard library |
14:57:36 | dom96 | BlaXpirit: why do you think it's a bad idea? |
14:58:12 | BlaXpirit | sometimes a library doesn't even have a "vendor", you'll end up with $lib.$lib |
14:58:19 | BlaXpirit | it's annoying |
14:58:46 | BlaXpirit | and vendors change names muuuuch more often than a lib changes names |
15:00:26 | dom96 | hrm, true regarding first point. |
15:00:33 | dom96 | If I install a local Nimble package then its vendor is unclear |
15:01:20 | BlaXpirit | what does it matter if it's local? I hope you weren't considering github as the sole source of packages..? |
15:03:46 | BlaXpirit | anyhow, these pings reminded me that I needed to fix something in nim-random. now it's in great shape. |
15:05:47 | dom96 | Indeed, if I download a package from somewhere else, or even from Github, manually. Then I try to install from my local filesystem then there is no vendor information attached to it. |
15:06:01 | dom96 | That's what I meant by a 'local package' |
15:06:39 | dom96 | GitHub/BitBucket are the sole sources of packages as of right now. |
15:06:57 | dom96 | And they both contain vendor info |
15:07:47 | * | Sembei joined #nim |
15:09:08 | dom96 | but there will surely be people that will download a zipped nimble package and expect the installation to work |
15:10:35 | dom96 | So I guess the Nimble files will need to specify the vendor |
15:17:10 | * | Pisuke quit (Ping timeout: 260 seconds) |
15:17:16 | * | Sembei quit (Ping timeout: 264 seconds) |
15:18:21 | * | Parashurama joined #nim |
15:24:49 | Araq | with my translation table idea you can teach Nim what $vendor means |
15:25:19 | * | Sembei joined #nim |
15:25:26 | Araq | likewise with my resolvePath nimscript idea |
15:25:37 | Parashurama | all: Is test(@["foo"]) or test(["foo"]) supposed to match: proc test(path: varargs[string]) ? |
15:25:53 | Parashurama | I find find that surprising. |
15:28:00 | Araq | yeah it's supposed to match, but maybe you're right |
15:29:31 | Parashurama | I'm not saying its wrong. It can be useful for chaining varargs proc, kind of like vararg in C <stdarg.h> |
15:30:13 | Parashurama | But yeah surprising. It definitely need to be documented. |
15:32:03 | dom96 | Araq: I think it should always mean the same thing |
15:32:22 | Parashurama | Rereading the entry in the Manual, http://nim-lang.org/docs/manual.html#types-varargs, it is implied but very clear. |
15:32:30 | Parashurama | *not very clear |
15:32:41 | Araq | Parashurama: https://github.com/nim-lang/Nim/issues/1798 |
15:32:54 | Araq | we have a bug report for everything :P |
15:33:24 | Parashurama | I can see that. |
15:34:14 | Parashurama | We should also give an error on two varargs parameter in one proc. It is currently allowed and duplicate the arguments. |
15:37:15 | flyx | regarding the path discussion, what if the nimble package name does not equal the main module? my nimble package is named "nimyaml" but the main module is named "yaml". how could this be imported? import flyx.nimyaml.yaml ? |
15:38:36 | dom96 | flyx: your package name must match the main module name |
15:38:47 | dom96 | this will be enforced by nimble soon |
15:38:57 | flyx | um well that's unfortunate |
15:39:48 | flyx | I cannot name my module yaml then because that's already taken |
15:39:59 | * | PMunch-mobile joined #nim |
15:41:17 | dom96 | flyx: maybe you could ask the owner of that package to rename it? |
15:41:41 | dom96 | yours presumably has more features |
15:41:47 | dom96 | and so should get the better name |
15:42:02 | flyx | that's theduke. I queried hime once about it, but he didn't react and I haven't seen him around here for a while |
15:42:27 | PMunch-mobile | Hi, I was wondering if/how it's possible to write an extensible program in Nim. I'm looking to start a new project and one of the things I'd like to incorporate are plugins. |
15:43:24 | * | AndChat|265524 joined #nim |
15:43:24 | * | PMunch-mobile quit (Read error: Connection reset by peer) |
15:43:48 | AndChat|265524 | Sorry for dropping.. Network change |
15:44:05 | * | girvo joined #nim |
15:44:11 | dom96 | flyx: Please create an issue in his repo |
15:44:24 | flyx | I'll do |
15:44:24 | * | AndChat|265524 is now known as PMunch-mobile |
15:44:27 | dom96 | I might just force the rename if he doesn't reply |
15:44:51 | PMunch-mobile | Which package? |
15:45:25 | dom96 | yaml |
15:46:29 | flyx | I am not sure whether forcing is a good thing to do. at least without having a proper, written policy regarding names in the package repo |
15:47:04 | dom96 | yeah. Unfortunately that's true. |
15:48:46 | * | girvo quit (Ping timeout: 258 seconds) |
15:51:59 | * | fastrom quit (Quit: Leaving.) |
15:54:30 | flyx | I've dropped an issue, let's see if he reacts |
15:57:48 | * | krolik quit (Ping timeout: 250 seconds) |
15:58:16 | dom96 | flyx: brilliant, thanks |
15:58:22 | * | MyMind joined #nim |
16:03:44 | * | bjz_ quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
16:04:04 | * | bjz joined #nim |
16:04:19 | * | yglukhov quit (Ping timeout: 260 seconds) |
16:13:04 | * | PMunch-mobile quit (Quit: Bye) |
16:14:10 | * | filcuc joined #nim |
16:16:34 | * | Sembei quit (Ping timeout: 244 seconds) |
16:25:04 | * | endragor quit (Remote host closed the connection) |
16:26:01 | * | pregressive quit (Remote host closed the connection) |
16:26:21 | * | pregressive joined #nim |
16:29:42 | * | Sembei joined #nim |
16:38:45 | * | fastrom joined #nim |
16:44:12 | * | girvo joined #nim |
16:48:35 | * | yglukhov joined #nim |
16:48:45 | * | girvo quit (Ping timeout: 260 seconds) |
16:50:14 | * | yglukhov quit (Remote host closed the connection) |
16:50:28 | * | yglukhov joined #nim |
16:54:13 | * | pregressive quit (Remote host closed the connection) |
16:59:38 | * | pregressive joined #nim |
17:04:47 | * | benwbooth quit (Quit: Textual IRC Client: www.textualapp.com) |
17:05:05 | * | benwbooth joined #nim |
17:08:15 | dom96 | strtabs.getOrDefault returns "" when a value isn't found, whereas tables.getOrDefault returns `nil` :\ |
17:15:32 | dom96 | Araq: Should it be possible to export converters? |
17:15:40 | dom96 | it doesn't appear to be working |
17:18:19 | * | pregressive quit (Remote host closed the connection) |
17:18:47 | * | nsf quit (Quit: WeeChat 1.4) |
17:24:14 | * | pregressive joined #nim |
17:27:29 | * | Jesin quit (Quit: Leaving) |
17:30:14 | * | Jesin joined #nim |
17:31:50 | * | Parashurama quit (Quit: ChatZilla 0.9.92 [Firefox 46.0.1/20160511224154]) |
17:40:09 | * | fastrom quit (Quit: Leaving.) |
17:40:51 | dom96 | Araq: also, is this meant to work? https://github.com/nim-lang/Nim/blob/devel/lib/pure/httpclient.nim#L87 |
17:43:08 | * | girvo joined #nim |
17:47:29 | * | girvo quit (Ping timeout: 244 seconds) |
17:48:40 | * | yglukhov quit (Remote host closed the connection) |
17:55:53 | Araq | dom96: I don't think I implemented that |
18:11:19 | * | yglukhov joined #nim |
18:12:11 | * | yglukhov quit (Remote host closed the connection) |
18:12:26 | * | yglukhov joined #nim |
18:26:32 | * | nsf joined #nim |
18:27:05 | * | chemist69_ quit (Ping timeout: 258 seconds) |
18:28:27 | flyx | seems like a user named gradha removed some repos that are referenced in packages.json: https://travis-ci.org/nim-lang/packages/builds/134813299 |
18:28:54 | flyx | now my pull request breaks. should I remove those repos to have it passing? |
18:32:47 | dom96 | nah |
18:32:50 | dom96 | I'll remove them later |
18:33:04 | dom96 | see my comment on what you should change |
18:34:03 | flyx | can I put an array on "name", like ["yaml", "nimyaml"] ? |
18:34:41 | dom96 | no |
18:37:19 | flyx | okay, re-added nimyaml |
18:37:50 | * | StarBrilliant quit (Ping timeout: 260 seconds) |
18:40:27 | dom96 | you sure? I don't see it |
18:42:37 | * | Sembei quit (Ping timeout: 260 seconds) |
18:43:07 | * | girvo joined #nim |
18:44:14 | * | chemist69_ joined #nim |
18:48:12 | * | girvo quit (Ping timeout: 276 seconds) |
18:52:42 | * | desophos joined #nim |
18:54:40 | dom96 | flyx: ^ |
18:55:18 | flyx | that's my change: https://github.com/nim-lang/packages/pull/359/commits/18216fe3d1c9021d47cc51d67166a796791b514f |
18:57:10 | dom96 | Why is it not shown here? https://github.com/nim-lang/packages/pull/359/files |
18:57:18 | * | PMunch joined #nim |
18:57:30 | * | yglukhov quit (Ping timeout: 272 seconds) |
18:59:26 | * | yglukhov joined #nim |
18:59:32 | * | pregressive quit (Remote host closed the connection) |
19:01:50 | * | TheLemonMan joined #nim |
19:04:41 | * | yglukhov quit (Ping timeout: 240 seconds) |
19:04:54 | * | yglukhov joined #nim |
19:08:12 | * | GangstaCat quit (Quit: Leaving) |
19:12:12 | flyx | dom96: because I first „moved“ it to yaml, then I added it again as nimyaml. therefore, the original nimyaml part is unmodified and the diff only shows that I replaced the old yaml with NimYAML |
19:15:04 | dom96 | oh of course |
19:15:06 | dom96 | merged |
19:15:55 | Araq | dom96: lib/pure/httpclient.nim(83, 17) Error: cannot open 'httpcore' |
19:16:00 | Araq | still a problem |
19:16:11 | Araq | I fixed my regression, now I think it's yours. |
19:16:38 | dom96 | yep. Fixed |
19:21:15 | * | GangstaCat joined #nim |
19:35:05 | * | Bruh joined #nim |
19:35:19 | * | benwbooth quit (Ping timeout: 252 seconds) |
19:38:21 | * | benwbooth joined #nim |
19:43:04 | * | girvo joined #nim |
19:43:09 | * | gokr joined #nim |
19:43:15 | * | benwbooth quit (Ping timeout: 244 seconds) |
19:46:33 | * | benwbooth joined #nim |
19:47:52 | * | girvo quit (Ping timeout: 264 seconds) |
19:49:01 | * | desophos quit (Read error: Connection reset by peer) |
19:49:40 | * | desophos joined #nim |
19:52:45 | * | gokr quit (Quit: Leaving.) |
19:53:06 | * | gokr joined #nim |
19:55:05 | fowl | Why would gradha remove his packages |
20:07:01 | * | Matthias247 joined #nim |
20:12:27 | * | benwbooth quit (Ping timeout: 246 seconds) |
20:15:04 | * | benwbooth joined #nim |
20:38:01 | * | Demon_Fox joined #nim |
20:43:05 | * | girvo joined #nim |
20:47:27 | * | girvo quit (Ping timeout: 246 seconds) |
21:07:47 | * | tautologico joined #nim |
21:20:15 | * | TheLemonMan quit (Quit: "It's now safe to turn off your computer.") |
21:43:03 | * | girvo joined #nim |
21:47:54 | * | girvo quit (Ping timeout: 260 seconds) |
21:55:38 | onionhammer | not something a rational person would do |
21:59:05 | * | PMunch quit (Quit: leaving) |
21:59:42 | * | desophos_ joined #nim |
22:00:36 | * | desophos quit (Ping timeout: 276 seconds) |
22:01:53 | * | filcuc quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/) |
22:02:54 | * | ivan joined #nim |
22:03:44 | tautologico | any efforts already to create nim bindings to libui? https://github.com/andlabs/libui |
22:04:18 | * | desophos_ quit (Ping timeout: 244 seconds) |
22:15:23 | cheatfate | dom96, could you please explain my problem with my editor... i'm not sure i'm fully understand |
22:18:58 | def- | tautologico: haven't seen anything, but on a related note, there's https://github.com/yglukhov/nimx |
22:20:35 | dom96 | cheatfate: http://stackoverflow.com/questions/21410075/what-is-trailing-whitespace-and-how-can-i-handle-this |
22:23:11 | * | girvo joined #nim |
22:23:37 | * | desophos joined #nim |
22:26:14 | cheatfate | dom96, thanks |
22:26:24 | * | gokr quit (Ping timeout: 260 seconds) |
22:27:32 | * | girvo quit (Ping timeout: 244 seconds) |
22:27:53 | * | desophos quit (Ping timeout: 244 seconds) |
22:32:28 | * | girvo joined #nim |
22:43:09 | * | girvo quit (Ping timeout: 258 seconds) |
22:43:27 | * | Demon_Fox quit (Quit: Leaving) |
22:43:45 | * | desophos joined #nim |
22:50:43 | * | Trustable quit (Remote host closed the connection) |
23:04:58 | * | yglukhov quit (Remote host closed the connection) |
23:22:24 | * | yglukhov joined #nim |
23:22:34 | Araq | tautologico: tried to c2nim it? should be easy enough. |
23:23:31 | tautologico | Araq: didn't try it, I'm hoping someone will create a lib for me :) |
23:23:41 | * | Matthias247 quit (Read error: Connection reset by peer) |
23:26:42 | * | Bruh quit (Quit: nah. no need for znc) |
23:26:57 | * | yglukhov quit (Ping timeout: 244 seconds) |
23:28:07 | Araq | hmmm, maybe I will port NimEdit to use that... |
23:30:53 | cheatfate | Araq, i really dont understand why libui uses cpp... most of code is C only |
23:32:52 | def- | cheatfate: easier interaction with Windows API probably |
23:32:59 | Araq | I don't understand you. it doesn't use C++. |
23:33:18 | cheatfate | Araq, look at windows directory |
23:33:46 | cheatfate | def-, Windows API is not using classes, only MFC using classes |
23:34:10 | def- | cheatfate: from what I heard new Windows API functions are C++ only and difficult and buggy to access through C |
23:34:34 | Araq | it doesn't use C++ afaict. |
23:34:44 | Araq | it uses the .cpp file extension though. |
23:34:49 | cheatfate | Araq, and .hpp |
23:34:52 | Araq | perhaps for Visual Studio |
23:35:19 | Araq | they also use Objective-C for Mac OS X :P |
23:35:42 | Araq | so what, they expose a primitive C library and that's all that matters |
23:35:54 | def- | cheatfate: google leads me here: https://www.reddit.com/r/programming/comments/4k6x5h/libui_crossplatform_gui_library_in_c/d3cnwq0 |
23:36:39 | def- | where pgandlabs, the author, responds |
23:37:06 | cheatfate | DirectWrite is not windows API its DirectX 2D API |
23:37:33 | cheatfate | and even so, its possible to use it without CPP |
23:39:22 | * | girvo joined #nim |
23:41:28 | Araq | so? What's wrong with C++? |
23:43:56 | cheatfate | Its very strange why he is using DirectWrite for font rendering... |
23:44:05 | * | girvo quit (Ping timeout: 260 seconds) |
23:47:47 | Araq | because it kicks ass for font rendering |
23:47:56 | Araq | and is what Microsoft suggests to use |
23:48:09 | tautologico | DirectWrite seems to be the current recommended way to render text on windows |
23:48:15 | tautologico | it's not Direct2D only anymore |
23:49:18 | Araq | seriously. very interesting for NimEdit, I'm wrapping it now. |
23:54:48 | * | yglukhov joined #nim |
23:58:04 | Araq | hmm, that was easy. |
23:58:12 | Araq | now how do I install this thing? |
23:59:12 | * | girvo joined #nim |
23:59:26 | * | yglukhov quit (Ping timeout: 258 seconds) |