00:02:09 | * | Lord_Nightmare quit (Ping timeout: 264 seconds) |
00:06:41 | * | Lord_Nightmare joined #nim |
00:29:40 | * | jrbrt quit (Quit: jrbrt) |
00:41:57 | * | CodeVance quit (Read error: Connection reset by peer) |
00:47:44 | * | CodeVance joined #nim |
01:14:37 | CodeVance | I'm trying to run opengl/glfw in nim |
01:19:58 | * | athenot joined #nim |
01:22:11 | * | athenot_ joined #nim |
01:25:02 | * | athenot quit (Ping timeout: 276 seconds) |
02:00:17 | * | CodeVance quit (Quit: Leaving) |
02:01:28 | * | leorize quit (Quit: WeeChat 2.1) |
02:18:31 | * | skrylar joined #nim |
02:32:08 | * | vivus quit (Quit: Leaving) |
02:41:46 | * | skrylar quit (Quit: Leaving) |
03:02:52 | * | BitPuffin quit (Remote host closed the connection) |
03:08:57 | * | GaveUp quit (Ping timeout: 240 seconds) |
03:21:38 | * | GaveUp joined #nim |
03:26:26 | * | Lord_Nightmare2 joined #nim |
03:29:05 | * | Lord_Nightmare quit (Ping timeout: 248 seconds) |
03:30:17 | * | gangstacat quit (Quit: Ĝis!) |
03:31:47 | * | skrylar joined #nim |
03:33:21 | * | Lord_Nightmare2 quit (Ping timeout: 264 seconds) |
03:37:58 | * | Lord_Nightmare joined #nim |
03:45:01 | * | skrylar quit (Remote host closed the connection) |
03:48:13 | * | dddddd quit (Remote host closed the connection) |
03:48:40 | * | darithorn quit (Quit: Leaving) |
03:51:47 | * | gangstacat joined #nim |
03:54:28 | * | Lord_Nightmare2 joined #nim |
03:55:45 | * | Lord_Nightmare quit (Ping timeout: 248 seconds) |
03:55:46 | * | Lord_Nightmare2 is now known as Lord_Nightmare |
04:07:21 | FromDiscord | <2vg> Is there something to get the display width of multibyte characters with Nim? Does anyone know? |
04:31:46 | * | CodeVance joined #nim |
04:34:16 | * | CodeVance quit (Client Quit) |
05:20:21 | * | athenot_ quit (Ping timeout: 240 seconds) |
05:24:49 | * | arecaceae quit (Remote host closed the connection) |
05:25:13 | * | arecaceae joined #nim |
05:31:27 | * | Cthalupa quit (Ping timeout: 240 seconds) |
05:37:44 | * | athenot joined #nim |
05:38:25 | * | Cthalupa joined #nim |
06:01:40 | * | miran joined #nim |
06:02:04 | * | nc-x joined #nim |
06:02:08 | nc-x | xmonader, |
06:02:36 | nc-x | look at the error message |
06:03:05 | nc-x | it shows that it is trying to #include the .so file, i.e. it is trying to load it as a header file |
06:04:58 | nc-x | hmm.. looks like the bridge is still down? |
06:09:20 | * | nc-x quit (Ping timeout: 260 seconds) |
06:15:05 | * | FromGitter joined #nim |
06:19:11 | FromGitter | <nc-x> 1st example means that there is a dynamic library which contains a function named SDL_Init that we have to call |
06:20:26 | FromGitter | <nc-x> 2nd example means that we are not directly linking to libc but using the header file `stdio.h`. As nim compiles to C, it means that the example when compiled will use the C printf function. |
06:21:18 | FromGitter | <xmonader> crystal thanks! :) |
06:22:32 | FromGitter | <nc-x> We can use header for SDL also but it is convenient to share dynlibs 😄 |
06:22:59 | FromGitter | <nc-x> It is mostly personal preference or whether you have access to the source code or only the dynlib |
06:25:52 | * | NimBot joined #nim |
06:27:27 | Araq | actually the .header way will never work with NLVM and produces dependencies to the atrocious -dev Linux packages |
06:27:56 | Araq | that's not personal preference. |
06:32:36 | FromGitter | <xmonader> dynamic linking all the way then |
06:32:45 | FromGitter | <xmonader> cstring(nil) is the only representation to NULL in c? |
06:37:44 | * | yglukhov joined #nim |
06:38:58 | FromGitter | <xmonader> ```proc magic_file(p:MagicPtr, filepath: cstring): cstring {.importc, dynlib: libName.} ``` ⏎ ⏎ in this case i mean, to pass a NULL for filepath u would do cstring(nil) [https://gitter.im/nim-lang/Nim?at=5ae80b82dea1b95c10f1c797] |
06:39:35 | * | sz0 quit (Quit: Connection closed for inactivity) |
06:39:47 | * | xkapastel quit (Quit: Connection closed for inactivity) |
06:40:18 | Araq | well you can just write 'nil' without the cstring type conversion |
06:40:43 | FromGitter | <xmonader> yep It worked thanks @Araq :) |
06:45:11 | * | Lord_Nightmare2 joined #nim |
06:45:53 | * | Lord_Nightmare quit (Ping timeout: 248 seconds) |
06:46:05 | * | Lord_Nightmare2 is now known as Lord_Nightmare |
06:49:41 | * | Lord_Nightmare2 joined #nim |
06:52:04 | * | Trustable joined #nim |
06:52:17 | * | Lord_Nightmare quit (Ping timeout: 248 seconds) |
06:55:29 | * | Lord_Nightmare2 quit (Ping timeout: 248 seconds) |
06:59:16 | * | Lord_Nightmare joined #nim |
07:06:33 | * | yglukhov_ joined #nim |
07:06:34 | * | yglukhov quit (Read error: Connection reset by peer) |
07:26:43 | FromGitter | <xmonader> https://github.com/xmonader/nim-magic binding with a simple tutorial on what i learned today |
07:32:45 | FromGitter | <nc-x> @xmonader Why are you `import system`? https://nim-lang.org/docs/lib.html#pure-libraries-core -> `It is imported implicitly by the compiler. Do not import it directly. It relies on compiler magic to work.` |
07:34:14 | FromGitter | <xmonader> @nc-x you're correct, i thought i saw an error while using cstring or something but when removed now and retried it's workign fine thanks :) |
08:06:19 | * | yglukhov joined #nim |
08:06:20 | * | yglukhov_ quit (Read error: Connection reset by peer) |
08:24:49 | * | Lord_Nightmare2 joined #nim |
08:27:45 | * | Lord_Nightmare quit (Ping timeout: 248 seconds) |
08:28:11 | * | Lord_Nightmare2 is now known as Lord_Nightmare |
08:33:19 | * | Lord_Nightmare2 joined #nim |
08:33:24 | * | Lord_Nightmare quit (Ping timeout: 268 seconds) |
08:34:08 | * | Lord_Nightmare2 is now known as Lord_Nightmare |
08:42:26 | FromGitter | <xmonader> @zacharycarter I'm not able to install deps for your nim playground project |
08:47:16 | * | miran quit (Quit: Konversation terminated!) |
08:55:06 | * | xet7 joined #nim |
09:09:52 | * | noonien joined #nim |
09:10:37 | * | nsf joined #nim |
09:11:59 | * | Vladar joined #nim |
09:52:28 | * | Ven`` joined #nim |
09:52:29 | * | Ven`` quit (Client Quit) |
09:53:03 | * | Ven`` joined #nim |
10:02:53 | * | Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
10:03:18 | * | Ven`` joined #nim |
10:28:38 | * | alehander42 joined #nim |
10:29:10 | alehander42 | hm it seems gitter is down (or only for me?) |
10:31:46 | * | nc-x joined #nim |
10:48:51 | * | nc-x quit (Quit: Page closed) |
10:54:57 | * | CodeVance joined #nim |
10:56:56 | * | yglukhov quit (Remote host closed the connection) |
10:57:46 | * | yglukhov joined #nim |
11:02:05 | * | nc-x joined #nim |
11:02:25 | * | yglukhov quit (Ping timeout: 248 seconds) |
11:08:52 | * | alehander42 quit (Quit: Page closed) |
11:15:06 | * | PMunch joined #nim |
11:19:26 | * | nc-x quit (Quit: Page closed) |
11:41:17 | dom96 | alehander42: yeah, there are issues with it. |
11:45:46 | * | yglukhov joined #nim |
11:50:09 | * | yglukhov quit (Ping timeout: 260 seconds) |
11:55:11 | * | yglukhov joined #nim |
12:11:23 | * | BitPuffin joined #nim |
12:15:39 | * | krux02 joined #nim |
12:16:05 | krux02 | hmm, gitter is on "maintenance" (down). |
12:16:18 | krux02 | seems like I have to use irc today. |
12:29:55 | yglukhov | just found that nim allows return in finally, and it is somewhat strange. is there any reasoning? Araq? |
12:30:27 | Araq | yglukhov: Python allows it :P |
12:31:08 | Araq | it's can be a lie though outer finallys are still run |
12:31:27 | yglukhov | yes, java allows it as well. but it was a surprise to me that you can stop exception propagation if you return in finally |
12:31:41 | Araq | well |
12:31:51 | Araq | it should stop the propagation |
12:31:55 | Araq | *should not |
12:32:12 | yglukhov | java works similarly |
12:32:33 | Araq | well yeah, just do what java/Python does here |
12:32:40 | yglukhov | newer java emits a warning on return-in-finally. but has to keep it for backwards compat |
12:33:04 | yglukhov | so i wonder, maybe it is a good time to disallow return in finally now? |
12:33:12 | Araq | that would be an argument against exceptions fwiw, unclear rules. |
12:33:15 | yglukhov | to not make java mistake |
12:33:33 | Araq | Python allows it and nobody ever complained |
12:33:55 | Araq | that would require an RFC, I'm afraid. it's subtle. |
12:34:17 | yglukhov | i don't think anyone really thinks about it. it came to me only when i tried to figure how the transformation should work |
12:37:02 | yglukhov | Araq: python return in finally stops exception propagation, lol |
12:37:55 | yglukhov | isn't it a nice argument that even you don't understand how that works? =) |
12:39:11 | yglukhov | but hey, nim has surely copied python and java behavior correctly :D |
12:39:52 | Araq | good, because back then I looked at how Python does it. |
12:40:28 | Araq | the fact that I misremember is not a particularly good argument given that I don't use exceptions often :P |
12:41:35 | yglukhov | hrm, actually, now that i'm googling, newer java seems to disallow returns-in-finally. and it looks like c# has never allowed them from day 0 |
12:41:51 | Araq | we can play some political games now. Like: "you are allowed to deprecate 'return' in 'finally' when I get to deprecate 'defer' |
12:41:56 | Araq | " |
12:42:03 | Araq | :P |
12:42:42 | yglukhov | ah, return in defer needs to be deprecated, yeah. but why deprecate defer? |
12:42:54 | Araq | because I don't like it. |
12:43:34 | yglukhov | it allows cool things. what's the alternative? |
12:43:54 | Araq | the only reason that it "Kind of" works is that the other control flow constructs are block-structured |
12:44:34 | Araq | try to replace 'try finally' with 'defer' and 'if' with a new block-less 'unless' construct and see how well that works out |
12:45:28 | yglukhov | what is "new block-less 'unless'"? |
12:47:21 | Araq | I don't know. :-) |
12:47:55 | Araq | like |
12:48:09 | Araq | foo; unless cond: bar; baz # --> |
12:48:22 | Araq | if not cond: bar |
12:48:26 | Araq | foo; baz |
12:48:33 | Araq | like 'defer' works. |
12:52:07 | yglukhov | sorry, i'm lost |
12:52:30 | dom96 | I'd be okay with 'defer' being removed, it still holds a sense of fragility to me and so I never use it. |
12:52:38 | Araq | never mind then |
12:53:18 | dom96 | And I do tend to agree with Araq's desire to remove features, others seem to agree too: https://www.reddit.com/r/nim/comments/8fwu36/what_needs_nim_to_grow_up_more_the_community/dy8ed8e/ |
12:53:20 | Araq | 'defer' is not Nim. Nim is "language constructs we couldn't use macros for and then macros" |
12:53:39 | dom96 | indeed |
12:53:49 | dom96 | destructors will work much better than 'defer' anyway |
12:54:11 | dom96 | Is it too late to make destructors work well enough to be used in the stdlib and to remove the need for worrying about 'close'ing things? |
12:54:24 | Araq | dom96: no. :-) |
12:54:44 | dom96 | Then I vote for that direction :) |
12:55:12 | dom96 | Araq: also yay, you answered the guy on Reddit |
12:56:05 | Araq | also Python added a 'with' statement, not 'defer' |
12:56:18 | Araq | and Nim can do 'with' easily too. |
13:02:33 | yglukhov | destructors will likely remove the need for defer indeed. |
13:02:40 | yglukhov | with is not an option, imo |
13:02:42 | CodeVance | I like pythons with block. Most boilerplate is removed with it? |
13:02:45 | * | smt` quit (Ping timeout: 264 seconds) |
13:03:00 | CodeVance | Ya we need an official with macro |
13:03:50 | * | nixfreak joined #nim |
13:06:01 | * | yglukhov quit (Remote host closed the connection) |
13:07:13 | CodeVance | Destructors is a proc that is called when a variable goes out of scope, right? |
13:07:15 | * | Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
13:11:07 | * | krux02 quit (Remote host closed the connection) |
13:17:10 | * | xkapastel joined #nim |
13:20:20 | * | dddddd joined #nim |
13:22:49 | euantor | I'm happy with defer going, I prefer not to use it as I like to be clear where something is closed/disposed of |
13:23:23 | euantor | SOmehting like `with` or C#'s `using` is easy to do with a macro, and looks much nicer IMO |
13:27:49 | PMunch | Hmm, where does choosenim pull it's versions from |
13:28:03 | euantor | Git tags I believe |
13:28:29 | PMunch | I'm updating the parsetoml package to be up to 0.4.0 spec (and adding validation stuff), but it's nimble file says nim >= 0.10.2 so I wanted to see if that still works :P |
13:29:19 | PMunch | Hmm, 0.10.2 is a tag though |
13:29:44 | * | smt joined #nim |
13:30:17 | PMunch | Hmm, it appears to try and download from http://nim-lang.org/download/nim-0.10.2.tar.xz |
13:30:55 | PMunch | But I don't have list rights on http://nim-lang.org/download so I can't simply look for valid ones.. |
13:32:52 | CodeVance | Github releases? |
13:33:23 | PMunch | It seems 0.11.0 is the oldest I can get |
13:33:54 | PMunch | CodeVance, 0.10.2 is a GitHub release though |
13:34:15 | PMunch | I think it just tried to grab it from http://nim-lang.org/download/nim-<version number>.tar.xz |
13:34:31 | nixfreak | I see the domain "learnnimthehardway" is taken now |
13:34:51 | CodeVance | Bad! |
13:34:58 | PMunch | Haha, who registered that? :P |
13:35:05 | nixfreak | why bad ? |
13:35:05 | CodeVance | Dont go that route T_T |
13:35:17 | CodeVance | Hard way is stupid ay |
13:35:19 | CodeVance | Way |
13:36:01 | nixfreak | hmm interesting , what do you think , in your opinion is a better way to learn nim ? |
13:36:39 | shashlick | the way I started was to port a python script I had already written into Nim |
13:37:07 | nixfreak | I was thinking porting (trying to ) port security tools to nim |
13:37:10 | nixfreak | just to learn |
13:37:22 | CodeVance | First idiomatic nim with only inbuilt macros. Learning to use the compiler, and the c compiler, learning wrappers, ... |
13:38:50 | nixfreak | Thats what I am learning now, question does nim support LLVM debugger ? |
13:39:10 | CodeVance | How to program the nim way, procedural oriented programming, procs (all the different ones), types, refs and ptrs, var let const, casting, code flow |
13:40:27 | PMunch | nixfreak, the LLVM debugger? Nim outputs C code, so it supports C debuggers like GDB |
13:42:43 | nixfreak | yep but running on osx using clang |
13:42:48 | nixfreak | so its lldb then |
13:46:40 | euantor | lldb should work, yeah. I've never tried it though |
13:47:39 | nixfreak | https://github.com/arnetheduck/nlvm |
13:51:11 | Araq | what does it take to make 'master' the default branch? |
13:51:52 | shashlick | you go into settings and change it under branches |
13:53:20 | Araq | hmm ok thanks |
13:54:15 | CodeVance | Nixfreak, programming is hard, and i agree with that. But i dont believe repitition is equal to learning when it comes to programming. |
13:56:13 | nixfreak | I agree thinking like a computer scientist is a must if you truly want to know how to program |
13:57:29 | * | nc-x joined #nim |
14:00:19 | CodeVance | Well since learn nim the hard way is taken (i think the lpthw author was the one who took it btw) why not "computer science with nim" |
14:06:32 | nixfreak | good point; probably because its "fad name" |
14:08:01 | * | Pisuke quit (Ping timeout: 248 seconds) |
14:08:32 | CodeVance | Or he doesnt want others to move into his turf |
14:20:40 | PMunch | https://github.com/ziotom78/parsetoml/pull/9 |
14:20:50 | PMunch | Added v0.4.0 support to parsetoml :) |
14:30:32 | * | lxdong joined #nim |
14:32:07 | lxdong | Is there any SignPKCS1v15 library in Nim? |
14:35:56 | nc-x | Are there any plans to add an option to the docs that hide all the deprecated procs? Right now, it is pretty much irritating because CTRL+F finds deprecated procs and with the overloading there are many procs of same name but half of which are deprecated. |
14:36:26 | nc-x | Therefore, even the index at the side becomes useless because of overloaded procs. |
14:39:09 | * | nixfreak quit (Ping timeout: 260 seconds) |
14:39:18 | Araq | nc-x: good idea but for 0.19 we want to remove deprecated procs |
14:40:06 | nc-x | Great. But IMO the option should still be added (if someone has time), who knows how much more deprecation to come in the future. |
14:40:29 | PMunch | Or in other libraries |
14:41:30 | nc-x | I will open a "Wish" ticket on nim repo. |
14:42:46 | Araq | sure, it is a good thing |
14:43:04 | * | lxdong quit (Quit: Page closed) |
14:45:33 | nc-x | Done https://github.com/nim-lang/Nim/issues/7744 |
14:46:23 | * | nixfreak joined #nim |
14:47:29 | nc-x | BTW Araq, is nimpretty coming for 0.19? Looking at the repo for zig lang, the most recent commits there are regarding the comment handling for `zig fmt`. |
14:49:13 | nc-x | It would be good if the tools get some love for 1.0rc1 |
14:51:38 | Araq | not sure, somebody else can also work on nimpretty |
14:52:32 | Araq | import the lexer, copy parser.nim and edit it to output a token stream |
14:53:54 | Araq | but hey, that would be "work", better let the guy do it who does all the other work already anyway |
14:55:16 | * | nc-x quit (Quit: Page closed) |
14:56:30 | * | PMunch quit (Quit: leaving) |
14:56:31 | CodeVance | Araq delegate |
14:57:10 | * | nixfreak quit (Quit: Page closed) |
14:57:45 | Araq | CodeVance: ok, do it. |
14:58:12 | * | nc-x joined #nim |
14:58:31 | * | pigmej quit (Ping timeout: 265 seconds) |
14:58:57 | CodeVance | Heh, what do i have to do. Or who do i ask |
15:00:22 | nc-x | Well, I would say it also has to do with the fact that the majority of the nim tooling source code has no docs at all. For a newbie to nim's source code, it is difficult to understand the code without much trial-error. |
15:01:35 | CodeVance | A nim dev doc? |
15:02:38 | CodeVance | Yeah, thats not gonna happen for a while |
15:03:11 | CodeVance | Maybe if everyone pitched in to make notes |
15:03:15 | * | Ven`` joined #nim |
15:03:19 | Araq | https://nim-lang.org/docs/intern.html#the-compiler-s-architecture |
15:03:21 | * | vegax87 quit (Remote host closed the connection) |
15:04:56 | Araq | it's still suprisingly up-to-date. |
15:06:08 | CodeVance | Ok |
15:06:38 | * | yglukhov joined #nim |
15:06:51 | * | Ven`` quit (Client Quit) |
15:08:39 | * | pigmej joined #nim |
15:10:57 | * | yglukhov quit (Ping timeout: 256 seconds) |
15:11:49 | * | nc-x quit (Ping timeout: 260 seconds) |
15:12:57 | * | vegax87 joined #nim |
15:16:52 | * | CodeVance quit (Quit: Yaaic - Yet another Android IRC client - http://www.yaaic.org) |
15:17:21 | * | vegax87 quit (Ping timeout: 240 seconds) |
15:17:25 | * | CodeVance joined #nim |
15:17:51 | * | pigmej quit (Ping timeout: 240 seconds) |
15:19:15 | CodeVance | is the gitter bridge working? |
15:22:45 | * | pigmej joined #nim |
15:24:01 | * | CodeVance quit (Read error: Connection reset by peer) |
15:28:05 | * | pigmej quit (Ping timeout: 276 seconds) |
15:28:47 | * | Guest59116 joined #nim |
15:32:19 | * | leorize joined #nim |
15:37:29 | * | CodeVance joined #nim |
15:38:21 | * | CodeVance quit (Client Quit) |
15:40:48 | * | darithorn joined #nim |
15:42:49 | * | miran joined #nim |
15:44:25 | * | natrys joined #nim |
15:48:06 | * | CodeVance joined #nim |
15:52:13 | FromGitter | <krux02> I think there is a common unreadability in things that were invented so long ago. |
15:52:22 | FromGitter | <krux02> regex, printf format string, APL |
15:52:47 | FromGitter | <krux02> now we realized that inventing operators for everything isn't a good idea |
15:52:58 | FromGitter | <krux02> making everything is compact as possible, neither |
15:53:14 | FromGitter | <geotre> Like this? :) ```(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:a-z0-9 (?:[a-z0-9-]*[a-z0-9])?\.)+a-z0-9 (?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f |
15:53:14 | FromGitter | ... \x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])``` |
15:53:15 | FromGitter | <krux02> things should be readable and predictable. |
15:53:30 | FromGitter | <krux02> well I can read that :P |
15:53:59 | FromGitter | <krux02> but that is not because it is very readable, but because I just wrote a lot of regular expressions |
15:54:35 | FromGitter | <krux02> but trust me in rx, it doesn't become much clearer |
15:54:52 | FromGitter | <krux02> but `rx` allows you to put indentation in the regular expression |
15:55:05 | FromGitter | <krux02> and comments |
15:55:16 | FromGitter | <krux02> so you can comment of parts of that expression |
15:55:21 | FromGitter | <krux02> that makes it readable |
15:55:32 | FromGitter | <geotre> That sounds useful |
15:56:28 | FromGitter | <krux02> here is an example |
15:56:28 | FromGitter | <krux02> https://github.com/nim-lang/nim-mode/blob/master/nim-rx.el#L62 |
15:56:57 | FromGitter | <krux02> just ignore the , for a while |
15:57:08 | FromGitter | <krux02> what is in the (rx ...) is important |
15:57:24 | FromGitter | <krux02> it compiles to a regular expression in a macro |
15:58:36 | FromGitter | <krux02> and you can compose the regular expression |
16:00:41 | FromGitter | <mratsim> Obviously you never tried the J language :P https://en.wikipedia.org/wiki/J_(programming_language) |
16:00:56 | FromGitter | <mratsim> quicksort=: (($:@(<#[), (=#[), $:@(>#[)) ({~ ?@#)) ^: (1<#) |
16:01:18 | FromGitter | <krux02> that is true I never tried the J language |
16:01:28 | FromGitter | <krux02> I kind of don't like languages that start with a J |
16:02:29 | CodeVance | what happened to nimio.us? |
16:04:56 | FromGitter | <krux02> well I mentioned APL, J reminds me of it, but I haven't programmed in APL either |
16:05:01 | FromGitter | <krux02> I just know it exists |
16:09:37 | * | leorize quit (Ping timeout: 260 seconds) |
16:10:05 | * | leorize joined #nim |
16:10:57 | * | Ven`` joined #nim |
16:11:37 | * | Sembei joined #nim |
16:11:46 | FromGitter | <data-man> Gitter works now! :) |
16:12:36 | * | Sembei quit (Client Quit) |
16:12:41 | CodeVance | i saw |
16:13:00 | * | Sembei joined #nim |
16:17:50 | * | vegax87 joined #nim |
16:19:14 | * | jrbrt joined #nim |
16:27:34 | * | jrbrt quit (Quit: jrbrt) |
16:36:36 | * | xkapastel quit (Quit: Connection closed for inactivity) |
16:37:58 | * | Sembei quit (Quit: WeeChat 2.2-dev) |
16:38:42 | shashlick | sudden surge in activity, was wondering why it's so quiet |
16:38:46 | * | Sembei joined #nim |
16:39:09 | FromGitter | <krux02> @data-man I think it is funny that you and me had the same idea for a PR. |
16:39:23 | FromGitter | <krux02> do you agree that "smart..." is always a stupid name for something? |
16:40:07 | * | jrbrt joined #nim |
16:40:13 | FromGitter | <mratsim> smart contracts say hi ;) |
16:40:20 | FromGitter | <mratsim> smartmontools too |
16:40:45 | FromGitter | <krux02> what are those? |
16:40:52 | * | Sembei quit (Client Quit) |
16:40:56 | FromGitter | <mratsim> smartcontrats: blockchain |
16:41:04 | FromGitter | <mratsim> smartmontools is HDD health monitoring |
16:41:17 | FromGitter | <mratsim> Also when Iwas kid we had a lot of smarties: https://en.wikipedia.org/wiki/Smarties |
16:41:19 | * | Sembei joined #nim |
16:41:36 | FromGitter | <krux02> smart constracts are an oxymoron. |
16:41:52 | * | xkapastel joined #nim |
16:42:03 | * | jrbrt quit (Client Quit) |
16:42:04 | FromGitter | <krux02> hdd like in hard disk drive? |
16:42:09 | FromGitter | <mratsim> yes |
16:42:21 | FromGitter | <mratsim> https://en.wikipedia.org/wiki/S.M.A.R.T. |
16:42:32 | FromGitter | <krux02> health monitoring on a hard disk, or of a hard disk? |
16:43:02 | FromGitter | <mratsim> S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology; often written as SMART) is a monitoring system included in computer hard disk drives (HDDs), solid-state drives (SSDs)[1], and eMMC drives. |
16:43:27 | FromGitter | <mratsim> smartmontools is a unix tool to query the HDD about its smart info |
16:44:44 | FromGitter | <krux02> how is the info smart? |
16:44:48 | FromGitter | <krux02> can the info think? |
16:44:52 | FromGitter | <krux02> and make smart decisions? |
16:45:15 | FromGitter | <mratsim> I didn’t want to capitalize smart that’s all ;) |
16:46:23 | FromGitter | <krux02> Dunning–Kruger effect |
16:46:35 | FromGitter | <krux02> on algorithms |
16:56:01 | shashlick | trying a fresh nim install on Windows based on instructions |
16:56:30 | * | yglukhov joined #nim |
16:57:41 | shashlick | already found first issue - finish crash since there's no PATH variable in the registry |
16:57:49 | * | yglukhov_ joined #nim |
16:58:03 | FromGitter | <data-man> @krux02: "smart..." is always a stupid name for something?" ⏎ Yes. |
16:58:23 | * | yglukhov quit (Read error: Connection reset by peer) |
16:58:51 | miran | shashlick: i have recently istalled nim on windows and it was surprisingly easy and problem-free.... |
16:59:11 | shashlick | i know the tricks to get it working but am trying like a lay user to see what the challenges can be |
16:59:13 | * | athenot quit (Remote host closed the connection) |
16:59:42 | CodeVance | Are there any working opengl nim packages ? |
16:59:55 | * | athenot joined #nim |
16:59:56 | FromGitter | <krux02> Araq: I really like that nil seq/string is now just equivalent of the emtpy seq. |
17:00:08 | FromGitter | <krux02> no more = @[] anymore |
17:00:11 | miran | +1 |
17:00:34 | FromGitter | <krux02> it doesn't work on the vm yet, though. |
17:00:43 | FromGitter | <krux02> CodeVance: yes there are |
17:01:05 | * | jrbrt joined #nim |
17:01:21 | CodeVance | krux02 please be so kind as to direct me to a package that I can use that doesn't have errors in it :) |
17:01:37 | FromGitter | <krux02> I use glad |
17:01:49 | FromGitter | <krux02> it generates bindings |
17:01:57 | FromGitter | <krux02> and just those bindings that you want |
17:02:20 | FromGitter | <krux02> CodeVance: http://glad.dav1d.de/ |
17:02:30 | FromGitter | <krux02> it's not perfect though |
17:02:40 | FromGitter | <krux02> but much better than the official bindings (imho) |
17:02:57 | FromGitter | <krux02> you just generate the binding and then add the generated file to your project. |
17:03:07 | FromGitter | <krux02> no external nimble package. |
17:04:40 | FromGitter | <krux02> to load the functions use doAssert gladLoadGL(glGetProcAddress) |
17:04:52 | FromGitter | <krux02> glGetProcAddress is from sdl2 btw. |
17:05:01 | FromGitter | <krux02> so you don't need the other wrappers. |
17:05:15 | FromGitter | <krux02> glfw has an equivalent I guess. |
17:05:38 | CodeVance | thanx krux :) |
17:05:38 | * | yglukhov_ quit (Read error: Connection reset by peer) |
17:05:47 | FromGitter | <krux02> you are welcome |
17:05:54 | CodeVance | are we going to get a nim 0.19? |
17:06:05 | FromGitter | <krux02> CodeVance maybe soon you will be able to write the shaders in nim :P |
17:06:05 | * | yglukhov joined #nim |
17:06:07 | CodeVance | since the non-nil thing is in |
17:06:29 | CodeVance | Ya I just want to experiment with the basics in nim, for me graphics is basic. |
17:06:29 | FromGitter | <krux02> it feels like 18 just released, so I don't know |
17:06:37 | FromGitter | <krux02> maybe maybe not it is not really scheduled |
17:06:53 | CodeVance | dom was talking about CI for nim |
17:06:55 | FromGitter | <krux02> I show you want I want to support |
17:06:59 | CodeVance | or CD |
17:07:22 | FromGitter | <krux02> http://ix.io/19aH |
17:07:36 | FromGitter | <krux02> CD? |
17:07:40 | FromGitter | <krux02> compact disc? |
17:07:50 | miran | CodeVance: i asked the same question (because of the same reason) few days ago |
17:08:08 | FromGitter | <data-man> CD = Change Directory :) |
17:08:08 | miran | and i didn't like the answer i've got from our BDFL ;) |
17:08:20 | CodeVance | Continuous Deployment |
17:08:37 | FromGitter | <krux02> ah, ok |
17:08:38 | CodeVance | basically always latest |
17:08:55 | FromGitter | <krux02> I guess a compact disc is not continuous deployment :P |
17:09:21 | CodeVance | miran what he say? |
17:09:36 | CodeVance | oh I think I read it already |
17:09:50 | CodeVance | He not want to add new features before RC1? |
17:09:51 | * | jrbrt quit (Quit: jrbrt) |
17:10:03 | miran | he wants to release RC1 |
17:10:33 | FromGitter | <krux02> CodeVance, I would like to know if you would like to work with something I am working on. And when not what the reasons are. |
17:10:38 | miran | no, i asked if RC1 means no new features, but there was no answer on that queston.... |
17:10:59 | FromGitter | <krux02> RC1 normally means no new features |
17:11:08 | miran | 'normally' ;) |
17:11:11 | * | jrbrt joined #nim |
17:11:20 | CodeVance | krux02 go ahead |
17:11:56 | FromGitter | <krux02> it normally means, I think we are done, this is version 1.0 but experience shows that version 1.0 always has bugs, so just lets call it RC1 and expect there to be several others |
17:12:05 | CodeVance | I can wait for features. Iron out bugs first. I think we shouldn't put too much pressure on bdfl |
17:12:12 | FromGitter | <krux02> CodeVance: this is the code I just posted http://ix.io/19aH |
17:12:16 | FromGitter | <krux02> you see a render call |
17:12:23 | miran | it would be nice if we would have 0.19 before RC1 - there are some nice new features, and it would be nice to have a stable version including them |
17:13:04 | FromGitter | <krux02> basically everything in that block will be translated to GLSL. accessing symbols from outside of that block will trigger the gererations of attributes/uniforms |
17:13:31 | CodeVance | krux02 you need some macro wizardry? |
17:13:41 | FromGitter | <krux02> I am doing some macro wizardry |
17:13:53 | FromGitter | <krux02> I am doing a lot of macro wizardry I guess |
17:14:07 | FromGitter | <krux02> but I want it to work and to be as frictionless as possible. |
17:14:17 | CodeVance | krux why not just generate all attributes/uniforms possible. Is there a limit in gl? |
17:14:55 | FromGitter | <krux02> yes there is a limit |
17:14:56 | CodeVance | or ... no |
17:14:57 | CodeVance | T_T |
17:15:15 | FromGitter | <krux02> but apart from that it is like saying generate all possible `let` sections. |
17:15:42 | FromGitter | <krux02> I guess you just realized. |
17:15:46 | CodeVance | wouldn't it be easier to declare the attributes beforehand |
17:15:58 | CodeVance | I think its easier AND more descriptive |
17:16:04 | FromGitter | <krux02> they are declared beforehand |
17:16:11 | FromGitter | <krux02> but not in the shader |
17:16:34 | CodeVance | make a block say... shader: then put all attributes inside it |
17:16:36 | dom96 | krux02: no, it means there is no breaking changes, not no new features |
17:16:39 | FromGitter | <krux02> in that example I do it via vertex |
17:17:25 | CodeVance | krux add the P, V, M to the do block |
17:17:29 | FromGitter | <krux02> dom96: I would disagree on that. When an RC detects a critical bug that requires a breaking change it is gonna happen. |
17:17:31 | * | athenot_ joined #nim |
17:17:33 | CodeVance | do call |
17:17:53 | FromGitter | <krux02> what do you mean? |
17:18:04 | dom96 | krux02: Yes, well, it's a release candidate |
17:18:07 | dom96 | Presumably for v1.0.0 |
17:18:35 | dom96 | It's a chance to ensure we haven't missed anything |
17:18:36 | CodeVance | krux don't try to get the attributes from the context it is declared in, rather make it explicit |
17:18:57 | * | athenot_ quit (Remote host closed the connection) |
17:19:01 | CodeVance | dom can't you just call it v1.0.0-rc1? |
17:19:19 | * | athenot_ joined #nim |
17:19:21 | * | athenot quit (Ping timeout: 240 seconds) |
17:19:30 | CodeVance | semantic versioning |
17:19:31 | dom96 | CodeVance: indeed, I would call it that |
17:20:16 | CodeVance | it is v1 for all intents, until a desasterous bug is discovered |
17:20:18 | CodeVance | but sorta beta |
17:20:41 | CodeVance | and if a week goes by without new bugs rc2 then release? |
17:20:48 | * | jrbrt quit (Quit: jrbrt) |
17:21:22 | miran | i'm afraid that we would have to wait for a long long time until 1.0.0-rc1, and releasing 0.19 would happen much quicker because of less pressure because of its name.... |
17:21:51 | CodeVance | I think we shouldn't put so much attention to the name |
17:22:05 | CodeVance | But v1 will still mean a new start |
17:22:14 | CodeVance | v1 should do away with the old |
17:22:29 | miran | our BDFL puts 'so much attention to the name' ;) |
17:22:30 | FromGitter | <krux02> hey people there won't be a v1 RC very soon. |
17:22:46 | FromGitter | <krux02> There are still some breaking changes on the TODO list and they have to be done before 1.0 |
17:22:54 | FromGitter | <krux02> even a 1.0-RC1 |
17:23:02 | CodeVance | miran, its publicity. v1 would recieve more attention (both good and bad) |
17:23:14 | miran | that's why i'm proposing 0.19 once notNil strings/seqs work - to get it out sooner |
17:24:11 | CodeVance | There's no reason for nim official to have to make a releae. Building nim only takes a small time. Someone can make their own build |
17:24:15 | FromGitter | <krux02> CodeVance, I am not automacically gathering attributes, attributes are defined by the VertexType of the mesh |
17:24:56 | miran | CodeVance: nim beginners will not build nim manually. and having notNil as default will be great for them |
17:25:42 | FromGitter | <krux02> miran: tutorials should stop suggesting all the beginners to use ref typas for everything. |
17:25:53 | FromGitter | <krux02> that would fix the problem. |
17:26:04 | FromGitter | <krux02> not using ref == not nil |
17:26:06 | FromGitter | <krux02> done |
17:26:18 | FromGitter | <krux02> problem solved once and for all. |
17:26:26 | CodeVance | krux, to be honest, I was wholly unfamiliar with ptr and ref. So I don't really know which to use. ref sounds safer |
17:26:38 | FromGitter | <krux02> neither |
17:26:55 | FromGitter | <krux02> just use object without ref or ptr |
17:27:06 | CodeVance | what about MyObjType = ref object of RootObj |
17:27:19 | FromGitter | <krux02> nope |
17:27:32 | FromGitter | <krux02> just use object |
17:27:38 | CodeVance | how then ? just MyObjType = object? |
17:27:42 | FromGitter | <krux02> yes |
17:27:58 | FromGitter | <krux02> don't ask "how do I do inheritance then?" |
17:27:58 | CodeVance | But then the compiler complains I think |
17:28:11 | dom96 | You should prefer 'object' but there are cases when 'ref object' is useful |
17:28:12 | FromGitter | <krux02> no that part is completely fine |
17:28:30 | miran | krux02: how do i stop suggest them not to use "result = @[]", if they have to do that in the latest stable version? |
17:28:45 | CodeVance | And what about people having a "Ref type" and a "normal type" |
17:28:45 | miran | (too many negations there) |
17:28:52 | FromGitter | <krux02> dom96: yes, if you want to create arbitrary graph structures. |
17:29:20 | dom96 | or if you want to avoid writing 'var T' everywhere :P |
17:29:36 | FromGitter | <krux02> CodeVance, you never need both the ref type and the normal type. |
17:29:42 | FromGitter | <krux02> or better said almost never |
17:29:52 | CodeVance | as I understand it ref referes to a variable (Cause it won't work if I don't declare a variable and just create an object) |
17:29:55 | FromGitter | <krux02> so it is bad design to provide both "just to be sure" |
17:30:16 | FromGitter | <krux02> ref is basically a pointer |
17:30:23 | FromGitter | <krux02> it has pointer indirection |
17:30:27 | dom96 | Reference objects are allocated on the heap, normal objects on the stack. That's the difference. |
17:30:30 | FromGitter | <krux02> the object needs to be allocated on the heap |
17:30:34 | CodeVance | krux02 I think it would be easier to not have "ref type" aliases. Should we go through nim-by-example and remove those? |
17:30:53 | FromGitter | <krux02> dom96: well that is not really that simple |
17:31:07 | FromGitter | <krux02> CodeVance: yes |
17:31:11 | FromGitter | <krux02> I would agree on that |
17:31:39 | FromGitter | <krux02> I don't see anything wrong with using ref types, but I personally would prefer it if they are explicit |
17:31:43 | CodeVance | cause you can always just use ref NormalType but getting the opposite is difficult |
17:31:49 | dom96 | Ehh no |
17:31:54 | FromGitter | <krux02> the type is without `ref` and when you need it, you jupt put it there |
17:32:09 | FromGitter | <krux02> dom96: Ehh yes |
17:32:33 | CodeVance | dom96 how would you get the NormalType from RefType |
17:32:40 | dom96 | If a library expects a type to be used as a ref what's the point in having the user explicitly write 'ref' everywhere? |
17:32:45 | dom96 | You wouldn't |
17:32:49 | dom96 | Because you shouldn't |
17:32:57 | CodeVance | C would expect it though XD |
17:33:07 | CodeVance | And I understand |
17:33:15 | FromGitter | <krux02> dom96: I library shouldn't expect ref types if it can avoid it. |
17:33:41 | CodeVance | But maybe like declaring the RefType = ref NormalType; NormalType = object is a bad example for beginners? |
17:33:53 | FromGitter | <krux02> and unless a library stores away a reference to that object (which a library shouldn't do), a ref type isn't required. |
17:35:02 | * | Sembei quit (Quit: WeeChat 2.2-dev) |
17:35:30 | CodeVance | https://nim-by-example.github.io/oop/ can I change this to not use `ref object of RootObj` and such |
17:35:49 | dom96 | That would break the example |
17:35:55 | CodeVance | Or is this the right place |
17:35:59 | CodeVance | to use it |
17:35:59 | * | Sembei joined #nim |
17:36:07 | CodeVance | for multi methods |
17:36:41 | FromGitter | <krux02> unref a type: http://ix.io/19aP |
17:37:11 | FromGitter | <krux02> CodeVance: multi methods are unloved |
17:37:26 | * | nixfreak joined #nim |
17:37:30 | CodeVance | Cause they are hard to follow |
17:37:46 | CodeVance | I want to know exactely which proc is used |
17:39:22 | FromGitter | <krux02> CodeVance: that example is exactly the right example to show ref types. So you shouldn't change it |
17:39:29 | FromGitter | <krux02> but for actual code I would change it |
17:39:45 | dom96 | The only places with ref types in there are to explain what a ref type is |
17:39:50 | dom96 | unless I'm missing something |
17:40:03 | CodeVance | Can't this be a inbuilt library? https://nim-by-example.github.io/oop_macro/ |
17:40:28 | CodeVance | no it was to explain oop with nim |
17:42:07 | miran | CodeVance: read pmunch's reddit post about ref types, if you didn't already |
17:42:19 | miran | https://peterme.net/nim-types-originally-a-reddit-reply.html |
17:42:42 | CodeVance | miran, I'm new |
17:43:05 | miran | that post was very helpful to me. |
17:43:18 | CodeVance | Let us add this to my list of nim links |
17:43:31 | miran | it took me couple of readings and experimenting until i understood it clearly |
17:43:33 | FromGitter | <krux02> CodeVance: please no to all the OO crap |
17:43:46 | FromGitter | <krux02> Nim is great because it isn't OO |
17:44:02 | CodeVance | krux02 I don't really care as long as it works |
17:44:09 | CodeVance | Either way is fine |
17:44:17 | CodeVance | But you still need data |
17:44:42 | FromGitter | <mratsim> I think I have a use case for multi method: dealing with the mess of addressing modes (Immediate, indexed) + the various operations (ADD, SUB …) for an super nes emulator. |
17:45:29 | dom96 | krux02: To continue the old discussion: if a library does have to use 'ref' types, it should just define them as 'ref' types, instead of writing 'ref' for every damn proc and expecting the user of the library to do the same. |
17:45:32 | FromGitter | <mratsim> there are 12 adressing modes and a bit more than a hundred of ops and dealing with that with case statement or even a table is tedious |
17:46:14 | FromGitter | <mratsim> with multi method you can deal with that elegantly by dispatching on both the adressing mode and the operation involved |
17:46:15 | dom96 | mratsim: That sounds like it would make your emulator significantly slower. |
17:46:29 | CodeVance | mratsim, remember that methods are procs with a method pragma attached, at least that's what I read |
17:46:34 | * | nixfreak quit (Quit: Page closed) |
17:46:36 | dom96 | That probably doesn't matter too much, but I played around with creating a macro to program these opcodes. |
17:47:21 | FromGitter | <krux02> CodeVance: tada without ref types: http://ix.io/19aS |
17:47:30 | dom96 | def-'s SNES emulator uses metaprogramming too IIRC |
17:47:34 | FromGitter | <krux02> and yes ther isn't a common "animals" seq anymore |
17:47:52 | FromGitter | <mratsim> @dom96 what is important is not having a single point of dispatch, so after each opcode you need to read, preload the next opcode and dispatch directly. Instead of looping and dispatching in a huge case statement which will trigger cache miss 99.9% of the time. |
17:48:17 | FromGitter | <mratsim> it just uses templates and a function table, iirc |
17:50:14 | FromGitter | <mratsim> I’ve added about half of my resources on interpreter optimization here: https://github.com/mratsim/super-nim/blob/master/resources/internet-resources.md, the Bochs interpreter (x86 interpeter) is also very interesting to read. |
17:51:25 | CodeVance | krux, you can't solve oop by taking out the object |
17:52:36 | FromGitter | <mratsim> anyway, when I was looking to use methods for neural networks, I’ve benched them vs pure proc and found them only 3x slower: https://github.com/mratsim/Arraymancer/blob/master/benchmarks/implementation/proc_method_closure_bench.nim (well they are not in the critical path for neural net compared to interpreter so I was ok with that) |
17:53:28 | * | jrbrt joined #nim |
17:53:33 | dom96 | mratsim: I basically spent most of my emulator development trying to get the thing to work, never mind optimising it. Never could get it completed, but I blame the JS implementation I was using as a reference and the overall lack of material for GB emulators. |
17:54:13 | dom96 | mratsim: I guess you're planning to hook the neural net into the internals of the emulator? |
17:54:22 | FromGitter | <krux02> dom96: why did you develop for the JS backend? |
17:54:34 | dom96 | krux02: I didn't. I used a JS implementation as a reference. |
17:54:43 | FromGitter | <krux02> ah |
17:54:44 | FromGitter | <krux02> ok |
17:54:44 | FromGitter | <mratsim> For emulators switch vs table vs something else is the core part so I think it’s necessary to spent time on design |
17:55:12 | * | athenot_ quit (Remote host closed the connection) |
17:55:41 | * | athenot joined #nim |
17:55:50 | FromGitter | <mratsim> Emulator was interesting because of Nimbus (since we have to write a Ethereum VM at Status), and also because I could reused it to demo/train neural nets yes. |
17:56:35 | FromGitter | <mratsim> but for now I’d rather move on directly on Arraymancer because both are quite time consuming. |
17:59:03 | * | athenot quit (Remote host closed the connection) |
17:59:41 | * | athenot joined #nim |
18:07:07 | * | yglukhov_ joined #nim |
18:10:29 | * | yglukhov quit (Ping timeout: 255 seconds) |
18:13:25 | shashlick | is there a case insensitive == for strings? |
18:14:05 | FromGitter | <krux02> in strutils I think |
18:14:23 | FromGitter | <krux02> (do not cmpIgnoreStyle it is wrong) |
18:17:07 | shashlick | cmpIgnoreCase() <= thanks krux02 |
18:19:53 | * | nsf quit (Quit: WeeChat 2.0.1) |
18:20:07 | shashlick | is there a neater way to `let a = 213` in a try/except without having to make the let a var outside? |
18:21:25 | CodeVance | Why isn't str.lower automatically imported? it shouldn't be something you'd have to import on your own... Or rather is there a way to add strutils to be automatically included with your code? |
18:22:36 | CodeVance | krux the nim binding is somewhat buggy. Sometimes it makes empty variables |
18:24:33 | FromGitter | <krux02> CodeVance: what do you mean? |
18:25:01 | FromGitter | <krux02> CodeVanced the strutils package is quite limited it only works on ASCII |
18:25:08 | CodeVance | was `proc findExtensionsGL() =` changed it to `proc findExtensionsGL() = discard` |
18:25:14 | FromGitter | <krux02> so ÜÖÄ to üöä conversion doesn't work |
18:25:26 | CodeVance | # # Extensions |
18:25:26 | CodeVance | # var |
18:25:29 | CodeVance | I had to comment it out |
18:25:39 | FromGitter | <krux02> ah yea |
18:25:50 | FromGitter | <krux02> wasn't that supposed to be fixed? |
18:26:02 | FromGitter | <krux02> yea I told you it's not perfect |
18:26:26 | CodeVance | It's good enough if you just want your own |
18:28:17 | * | miran quit (Quit: Konversation terminated!) |
18:28:35 | FromGitter | <krux02> https://github.com/Dav1dde/glad/issues/136 |
18:28:44 | FromGitter | <krux02> i thought it was fixed |
18:32:04 | * | Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
18:34:43 | shashlick | do you think it is cool to add GUI popup dialogs for finish.exe? |
18:34:52 | shashlick | versus the current CLI mode |
18:35:54 | dom96 | CodeVance: include prelude |
18:36:00 | livcd | shashlick: what are you going to use for the gui interface ? |
18:36:11 | * | Ven`` joined #nim |
18:36:39 | shashlick | just win32 api |
18:36:55 | shashlick | just need yes/no questions answered |
18:36:59 | CodeVance | shashlick, it actually doesn't matter. |
18:37:08 | CodeVance | But it is cool |
18:37:44 | livcd | shashlick: ahh i have no opinion about the installer. Just curious about what are you going to use to develop it. |
18:38:24 | shashlick | i'm making some bug fixes in finish.exe so might as well add some simple enhancements |
18:38:59 | * | jrbrt quit (Quit: jrbrt) |
18:39:24 | dom96 | shashlick: Be sure to make separate PRs for this though. |
18:39:41 | shashlick | makes sense |
18:43:03 | livcd | looking forward to see your installer |
18:43:05 | * | Guest59116 quit (Ping timeout: 276 seconds) |
18:43:08 | * | vegax87 quit (Ping timeout: 256 seconds) |
18:43:13 | shashlick | well, i'm still taking baby steps |
18:43:31 | shashlick | i don't want to get rid of finish or choosenim without a fair test |
18:43:52 | shashlick | i'd love to make a new one but will simply end up with installer #3 that is half ass too |
18:44:12 | shashlick | so am making some fixes in finish and choosenim as I go and then build towards a better overall solution that merges all this into one |
18:46:19 | shashlick | one problem with finish.exe is that the user has already downloaded the entire package by the time it runs, so the program has to handle an incompatible gcc vs. nim arch |
18:46:35 | shashlick | instead, you'd want to download finish by itself and it should download the right nim package for you |
18:46:36 | * | xkapastel quit (Quit: Connection closed for inactivity) |
18:47:15 | shashlick | but it has several dependencies such as 7zip, urlgrab and what not which come bundled with nim |
18:48:14 | * | pigmej joined #nim |
18:54:59 | Araq | that's not a "problem" of finish.nim, that is what it was designed to do |
18:55:13 | shashlick | well, ya it handles it no doubt, but you |
18:55:17 | Araq | it uses the mingw that might already exist and tries to play nice |
18:55:33 | shashlick | you'd rather download the full binaries after knowing about the compiler |
18:55:42 | Araq | and plenty of bugfixes went into this tool too |
18:55:54 | Araq | and it has zero valid open bugs iirc |
18:56:23 | shashlick | i'm testing finish and am going to PR some bug fixes |
18:56:36 | * | enthus1a1t joined #nim |
18:56:43 | Araq | fixes for what? |
18:56:48 | shashlick | did you have any opinion on the GUI popups vs the command line? |
18:58:40 | shashlick | Araq: it's all minor stuff - https://github.com/nim-lang/Nim/issues/7747 |
18:58:41 | * | enthus1ast quit (Ping timeout: 248 seconds) |
18:58:54 | Araq | the GUI popups are fine with me and a full UI for this tool would have been nicer |
18:59:06 | Araq | but as I said, I gave it libui based frontend |
18:59:30 | Araq | but considered the interaction of libui's event loop with Nim's async download event loop too fragile |
18:59:49 | Araq | an ugly robust installer is better than one that crashes |
18:59:52 | shashlick | what did you want to have in the GUI besides answering these questions? |
19:00:12 | shashlick | 1. add nim to path, 2. add mingw to path 3. add to start menu |
19:00:35 | Araq | nothing |
19:01:10 | shashlick | i'd like to have finish.exe pulled out of the binary package and be standalone, and use choosenim behind the scenes to handle the multi-nim setup |
19:01:36 | Araq | "Crashes when reading PATH for current user if it doesn't exist in registry" -- that should be gone long ago |
19:01:51 | livcd | I like installers that are not very talkative |
19:01:58 | Araq | "Looks for nim and mingw only in current user PATH and not global " -- what is "global"? |
19:02:00 | shashlick | ya I saw the tryGetUnicodeValue, it was just missed in one place |
19:02:12 | shashlick | local machine path |
19:02:23 | shashlick | i have the PR reay |
19:02:33 | CodeVance | shashlick then it isn't finish anymore :) |
19:02:36 | Araq | ok thanks |
19:02:45 | shashlick | like I said, all minor stuff |
19:02:47 | livcd | Be smart by default else let me try to configure everything at once not by interacting with you that much |
19:03:13 | shashlick | CodeVance: ya it'd become the official installer |
19:03:18 | CodeVance | is there a VirtualEnvironment for nim? |
19:03:26 | shashlick | choosenim does that for you |
19:03:40 | CodeVance | make a venv? |
19:03:56 | * | vegax87 joined #nim |
19:04:14 | CodeVance | shashlick, finish could remain a cli app. the official installer could just call it after intstallation with the commands already set |
19:04:16 | shashlick | Araq: I'd also like to clean up the windows install instructions on the website |
19:04:38 | Araq | oh yeah, go for it please |
19:04:50 | livcd | CodeVance: that's how it should be! |
19:05:16 | shashlick | so installation is a conversation with the user and there's multiple things to do |
19:05:25 | shashlick | I've tried to capture it here: https://gist.github.com/genotrance/534e3a49138eec2894299881f5e60105 |
19:05:58 | shashlick | finish does some of it, choosenim does other stuff, and there's some holes |
19:06:17 | shashlick | it might take time but i'd prefer step by step improvements to get there |
19:08:05 | shashlick | araq: do you still want to ask to "patch Nim's config to use this" even when mingw is in the path? |
19:08:26 | Araq | sure |
19:08:35 | shashlick | I just feel it is redundant |
19:08:47 | Araq | it nails the config to this mingw |
19:09:31 | shashlick | I've not gone into that level of detail but if there's multiple mingw detected, does the user get to choose the one they want? |
19:09:56 | Araq | I think so, it's been a while |
19:10:13 | shashlick | in that case it makes sense to patch the cfg, but in this particular case, mingw is already in the path so there's no reason to patch the cfg |
19:10:23 | shashlick | anyway, I think I need to read that code path to be sure what all it does |
19:10:27 | dom96 | I think for simplicities sake it'd just be better to always use the Nim-installed MINGW |
19:10:46 | dom96 | especially for finish.exe since that is already bundled anyway |
19:10:53 | dom96 | choosenim needs to download it, which is why the choice is there |
19:11:14 | dom96 | but I might remove that choice because it causes issues |
19:11:46 | shashlick | not sure I understand - the case we are talking of is mingw already existing, not finish downloading it |
19:11:52 | shashlick | i've not tested that code path |
19:12:05 | Araq | shashlick: the PATH can change and you might want to nail what is known to be work |
19:12:25 | Araq | "but in this particular case, mingw is already in the path so there's no reason to patch the cfg" -- that is simply not true. |
19:12:43 | CodeVance | I think the patch to nim.cfg is good for venvs |
19:13:14 | shashlick | well then it might be worth it to change the message from "Not required since it's in your PATH!" to something that encourages patching the cfg |
19:13:50 | Araq | well I don't know if we want to "encourage" it, but it makes sense to offer it |
19:14:11 | Araq | and as you noticed, this code has no tests and testing it has to be manually |
19:14:26 | Araq | which means you need to be extra careful :P |
19:14:52 | Araq | and yes. |
19:15:07 | Araq | I tested every code path (once). |
19:16:16 | livcd | the first time i installed nim it was kinda painful (due to my f.cked up environment variables)...the second time it went kinda smooth when I let it handle everything (its own mingw) |
19:16:23 | * | vivus joined #nim |
19:16:33 | CodeVance | how to get a cstringarray |
19:16:47 | dom96 | What's so bad about always using Nim's MINGW? |
19:17:02 | dom96 | If the user wants to use their own they can always manually modify the config |
19:17:12 | FromGitter | <zetashift> choosenim worked fine for me, only minus point was that (on windows) it only had 32bit version |
19:17:22 | CodeVance | dom96, I followed the instructions in install and downloaded mingw beforehand XD |
19:17:41 | livcd | dom96: i think that should be the preferred default |
19:17:52 | dom96 | CodeVance: That's bad, which instructions? We need to fix them |
19:18:05 | livcd | I honestly did not know about choosenim before and I do not mentione anyone mentioneing it on IRC oO when I was actually installing Nim and struggling |
19:18:29 | CodeVance | dom96, Installation on Windows |
19:18:32 | CodeVance | ----------------------- |
19:18:32 | CodeVance | Install Nim by downloading and unzipping the ``nim_$version.zip`` file. |
19:18:32 | CodeVance | Run ``finish.exe`` to detect and setup your MingW environment. |
19:18:32 | CodeVance | Currently, the following C compilers are supported under Windows: |
19:18:32 | CodeVance | - | Microsoft's Visual C++ |
19:18:32 | CodeVance | | http://msdn.microsoft.com/visualc |
19:18:33 | CodeVance | | (You need the SDK too - but not the full one: Only |
19:18:35 | CodeVance | the win32api header files and import libraries are essential.) |
19:18:37 | CodeVance | - | Gnu C Compiler (the mingw version; the cygwin version has not been tested!) |
19:18:41 | CodeVance | | http://www.mingw.org/download.shtml |
19:18:43 | CodeVance | - | LLVM with Clang or GNU C/C++ frontend |
19:18:45 | CodeVance | | http://llvm.org/releases/download.html |
19:18:47 | CodeVance | However, most testing is done with GCC. |
19:19:06 | Araq | yeah |
19:19:07 | CodeVance | No mention was made that it would install mingw if it wasn't detected |
19:19:23 | dom96 | CodeVance: Please don't paste so much into IRC |
19:19:36 | CodeVance | Ok sorry |
19:22:14 | * | jjido joined #nim |
19:22:30 | livcd | oh nim on chocolatey is very outdated |
19:25:10 | dom96 | CodeVance: also I'm still not sure where that is, is it install.txt? |
19:25:28 | CodeVance | yes install with the txt extention |
19:25:35 | dom96 | This is another thing we should fix, there is too many places with installation instructions |
19:25:42 | dom96 | and they all differ |
19:38:15 | shashlick | sorry had to run for a bit |
19:38:28 | CodeVance | how do you get the value of a ptr? Is it still with [] |
19:39:30 | shashlick | dom96: ya i'm going to fix the windows instructions as well, they are pretty confusing |
19:41:27 | shashlick | so what's the deal with niminst? is it still alive/used or is it dead? |
19:41:28 | Araq | dom96: I don't know if that's true on github the installations refer to "building from source", on the website it refers to the installers |
19:41:32 | * | jrbrt joined #nim |
19:42:11 | Araq | and the .zip has to have an install.txt file or something comparable |
19:42:30 | Araq | shashlick: niminst is alive and used to produces the zips/tar.xzs |
19:42:48 | dom96 | Perhaps we should remove install.txt |
19:42:54 | shashlick | okay but does it have anything to do with actual end user install? |
19:42:54 | dom96 | or remove the instructions on the website |
19:43:03 | dom96 | and tell people to "read the install.txt" |
19:43:13 | Araq | shashlick: no. niminst is an "installer generator" |
19:43:26 | shashlick | web instructions should be - download ZIP, extract to location and run finish |
19:43:27 | Araq | dom96: that's not convenient. |
19:43:32 | CodeVance | install.txt should be exactely the same as on the website |
19:43:56 | Araq | maybe. |
19:44:24 | shashlick | compiler dependencies on web site should be caveated saying they are only required if not already present, or not using finish to do the install |
19:44:28 | * | PMunch joined #nim |
19:44:37 | shashlick | other DLLs should make it clear that nim binary download doesn't need it |
19:44:38 | dom96 | We could get the website to embed install.txt |
19:45:29 | PMunch | dom96, ref my issue earlier. Why is 0.11.0 the first chooseable version with choosenim? |
19:46:21 | * | vegax87 quit (Ping timeout: 240 seconds) |
19:46:28 | dom96 | PMunch: probably because there is no .tar.gz for 0.11.0 |
19:46:34 | dom96 | er, pre-0.11.0 |
19:46:37 | PMunch | Well yeah |
19:46:42 | PMunch | But why is that? |
19:47:21 | * | sz0 joined #nim |
19:47:25 | dom96 | because I didn't create them |
19:47:32 | dom96 | default releases are in a tar.xz |
19:49:46 | shashlick | https://github.com/nim-lang/Nim/pull/7748 |
19:50:08 | dom96 | it sucks because I have to rearchive each release just for choosenim |
19:50:28 | dom96 | hrm, actually, choosenim uses the .tar.xz on Unix |
19:53:00 | * | CodeVance quit (Quit: Leaving) |
19:55:01 | dom96 | oh, Linux only https://github.com/dom96/choosenim/blob/c1c03bbcf2dea2b2fbf3890b02744fc3cfcd9769/src/choosenim/cliparams.nim#L103 |
19:55:17 | dom96 | If you're on Linux it might work |
19:57:03 | * | CodeVance joined #nim |
19:58:27 | shashlick | I thought it downloaded the git archive |
20:03:36 | * | vegax87 joined #nim |
20:08:35 | * | dddddd quit (Remote host closed the connection) |
20:11:57 | dom96 | if you ask for a git commit hash or branch then it does |
20:11:59 | * | Vladar quit (Quit: Leaving) |
20:12:40 | * | yglukhov_ quit (Ping timeout: 256 seconds) |
20:16:30 | * | jrbrt quit (Quit: jrbrt) |
20:20:27 | PMunch | dom96, I'm on Linux and it doesn't work |
20:20:35 | dom96 | What does --verbose show? |
20:20:43 | PMunch | choosenim get's a 404 trying to get it |
20:21:13 | PMunch | http://ix.io/19bB |
20:21:35 | dom96 | oh, so that one doesn't exist either |
20:21:37 | dom96 | Pity |
20:21:47 | dom96 | You can also try `choosenim #v0.10.2` :) |
20:23:12 | PMunch | Well it downloads at least |
20:23:16 | PMunch | Not that I need it anymore |
20:23:23 | PMunch | Had to bump the version to 0.15.0 |
20:25:27 | * | jrbrt joined #nim |
20:26:35 | PMunch | Oops, build failure |
20:27:14 | PMunch | http://ix.io/19bG |
20:28:05 | dom96 | Ahh, the C sources can't build it |
20:28:11 | dom96 | too new |
20:29:04 | shashlick | probably check out an older version of csources |
20:29:10 | shashlick | https://github.com/nim-lang/csources/releases |
20:31:27 | * | enthus1ast joined #nim |
20:31:44 | * | Trustable quit (Remote host closed the connection) |
20:31:56 | * | enthus1a1t quit (Ping timeout: 256 seconds) |
20:39:00 | * | jrbrt quit (Quit: jrbrt) |
20:42:21 | shashlick | araq: https://github.com/nim-lang/Nim/pull/7748 build succeeded, although I checked code only into finish |
20:45:54 | * | yglukhov joined #nim |
20:46:15 | * | noonien quit (Quit: Connection closed for inactivity) |
20:46:53 | * | jrbrt joined #nim |
20:48:45 | dom96 | Yeah, I don't think it's worth supporting such old releases. |
20:49:19 | shashlick | no I mean if PMunch wants to build an older release, he'll need to download an older csources as well |
20:49:37 | PMunch | Yeah, it's not much point |
20:50:21 | PMunch | I was updating the TOML library and it said nim >= 0.10.2 in the .nimble file so I just wanted to see if that was still possible with my changes |
20:50:54 | * | enthus1a1t joined #nim |
20:52:51 | * | enthus1ast quit (Ping timeout: 240 seconds) |
20:54:13 | FromGitter | <data-man> @dom96: Please create devel branch for c2nim. For compatibility with Nim/devel. Because of this: https://github.com/nim-lang/c2nim/commit/baa12be128d3719065248b534fec42b65332eb4a |
20:54:57 | dom96 | data-man: why do you need that? |
20:55:18 | dom96 | building c2nim via Nimble should work even on devel |
20:55:50 | FromGitter | <data-man> I'm using Nim/devel only. And c2nim depends from compiler's sources. |
20:57:13 | * | jrbrt quit (Quit: jrbrt) |
20:57:54 | dom96 | yes, you can build it via `nimble build`. |
20:58:00 | shashlick | dom96, Araq: can we make finish.exe add ~/.nimble/bin to the path as well |
20:58:15 | dom96 | It will use a pinned version of the compiler |
20:58:19 | dom96 | avoiding all issues |
20:58:45 | dom96 | shashlick: If it doesn't already do that then it's broken :) |
20:59:03 | shashlick | ok i'll push that shortly |
20:59:28 | Araq | I still hate .nimble/bin |
20:59:30 | Araq | ;-) |
21:00:18 | Araq | or rather the fact that nimble starts its directory with a dot |
21:00:37 | Araq | it's source code, don't hide it! |
21:00:49 | FromGitter | <data-man> I'm not using nimble. I still hate all package managers. |
21:01:35 | shashlick | well, on one hand there's discussions to move more stuff out of stdlib |
21:01:45 | shashlick | i'm quite happy with stdlib and nimble how they are |
21:03:24 | * | jrbrt joined #nim |
21:04:56 | shashlick | should finish just add ~/.nimble/bin to the path when nim is added or ask a separate question for that? I think former is appropriate |
21:06:48 | dom96 | data-man: why? Package managers provide a way to pin dependencies. You'll always be chasing different targets otherwise and have constant build failures for someone. |
21:07:37 | dom96 | Araq: Don't worry, it's not hidden on Windows. :) |
21:07:47 | dom96 | But I wouldn't be surprised if MS decides to adopt this hah |
21:08:03 | FromGitter | <data-man> I prefer manual control. Old school and soon. :) |
21:08:30 | Araq | dom96: try to navigate to it on OSX with VSCode |
21:08:48 | dom96 | I blame Apple for that |
21:09:11 | Araq | blame who you want, but fix it. |
21:09:36 | dom96 | Then we'll have people complaining that it's clogging up their ~ |
21:09:52 | Araq | these can change the default. |
21:10:46 | Araq | and ~ is usually messy already. |
21:11:09 | dom96 | I'm happy to have an RFC about this |
21:11:22 | Araq | I always use ~/projects and I've seen plenty of others do this too. |
21:12:00 | shashlick | meh, adding multiple changes to a single file across PRs is a pain, have to wait for merge else it'll become a mess |
21:12:13 | Araq | RFC my ass, change it or leave it, but if you leave it, it sucks and you know it. |
21:13:02 | * | CodeVance2 joined #nim |
21:13:31 | * | CodeVance quit (Quit: Yaaic - Yet another Android IRC client - http://www.yaaic.org) |
21:13:39 | * | CodeVance2 is now known as CodeVance |
21:13:57 | dom96 | I want to learn about this. Every package manager does it this way, so there must be a good reason behind it. |
21:13:58 | * | PMunch quit (Quit: leaving) |
21:14:08 | CodeVance | what is this link for git.io/gHZGCg? |
21:14:20 | dom96 | In an RFC somebody might give me an insight into this reasoning. |
21:14:52 | Araq | because it would "clutter up my ~ " |
21:14:53 | FromGitter | <data-man> Tests and https://github.com/nim-lang/c2nim/pull/130 works with compiler/devel on my PC. :( |
21:15:00 | Araq | you gave the reasoning yourself. |
21:15:24 | * | rockcavera quit (Remote host closed the connection) |
21:15:47 | * | jrbrt quit (Quit: jrbrt) |
21:16:03 | dom96 | data-man: sorry, but you can't escape package managers |
21:16:07 | federico3 | dom96: isn't the nimble path configurable? |
21:16:11 | dom96 | federico3: it is |
21:16:24 | dom96 | federico3: What are your thoughts on this? |
21:16:32 | federico3 | dom96: what's the question exactly? |
21:16:44 | dom96 | What should the default Nimble directory be? It currently is ~/.nimble |
21:16:50 | dom96 | Araq wants it to be ~/nimble |
21:17:30 | federico3 | first, it should not change unless there's a very compelling reason. |
21:17:42 | shashlick | pip, cargo, etc. all do the same thing |
21:17:44 | CodeVance | v1 is compelling |
21:17:48 | dom96 | yeah, it's a big change too |
21:17:52 | shashlick | i think the inconvenience is on macos |
21:17:58 | federico3 | CodeVance: a version is not a reason |
21:18:06 | CodeVance | . makes it a hidden folder |
21:18:12 | dom96 | It's not just a question of s/.nimble/nimble/ in Nimble's source code |
21:18:21 | CodeVance | federico3, v1 is allowed to change things |
21:18:21 | federico3 | and forcing a non-hidden directory as a default it's really odd |
21:18:28 | dom96 | CodeVance: That's... not a reason |
21:18:41 | dom96 | CodeVance: That's a situation that allows the the change to occur |
21:19:43 | dom96 | Indeed, it's a pain in macOS' file browser. You have to press Cmd+Shift+. to view the hidden files |
21:19:51 | dom96 | Every time. |
21:19:52 | * | rockcavera joined #nim |
21:20:00 | CodeVance | And Linux |
21:20:04 | federico3 | for reference, the XGD spec https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html |
21:21:01 | CodeVance | osx can use another directory. or they can just make a bookmark can't they? |
21:21:34 | CodeVance | pip is inside %appdata%/local |
21:22:06 | dom96 | That's even more annoying to find :) |
21:22:47 | federico3 | no, python's virtualenvs and ruby's rbenv are commonly created as hidden dirs at ~ |
21:23:46 | federico3 | and .nimble is used to compile Nim stuff and to run nimble-distributed tools but it's usually not a runtime dependency |
21:23:48 | CodeVance | NuGet is not prefixed with . |
21:24:13 | CodeVance | wait nuget is prefixed with . |
21:26:34 | * | Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
21:29:09 | Araq | dom96: just leave it as it is and give us "workspaces" |
21:29:36 | Araq | then I can ignore this issue altogether unless you create a dotted directory in the workspace |
21:29:53 | * | jrbrt joined #nim |
21:30:29 | CodeVance | https://www.google.com/search?q=macosx+reveal+hidden+files+permanently |
21:30:30 | dom96 | You can already get workspaces, just use --nimbleDir:./myWorkspace |
21:31:56 | dom96 | Just need a way to make that permanent for a project, somehow in the .nimble file maybe |
21:32:01 | dom96 | But I want a generic solution for this |
21:32:10 | dom96 | not yet another key in the .nimble file |
21:32:46 | Araq | ah yeah but then I get these versionized directories in my workspace that pretend DVCSs haven't yet been invented |
21:33:45 | Araq | but that's a story for another day. |
21:34:03 | dom96 | might as well just use git's subrepos then ;P |
21:34:34 | Araq | if they worked, sure. |
21:35:18 | dom96 | in what way do they not work? |
21:36:50 | shashlick | question: what are you doing in the nimble directory anyway? |
21:37:21 | shashlick | as a nim/nimble developer, okay, but as a common user? |
21:38:34 | CodeVance | What happens if a nimble package isn't maintained anymore? |
21:38:55 | federico3 | shashlick: user? You mean a developer? .nimble contains build deps |
21:39:33 | shashlick | ya regular consumer of nim, why do you have to go into the nimble directory? |
21:39:51 | dom96 | shashlick: To fix a broken package |
21:39:58 | dom96 | or to learn about a package's internals |
21:40:47 | federico3 | very rarely, so to speak |
21:40:56 | shashlick | but it's not a daily routine, similar to .vim where I had to git clone a bunch of plugins but after that, I rarely care |
21:41:01 | dom96 | not very rarely |
21:41:34 | dom96 | maybe rarely |
21:46:19 | federico3 | well, with nimble you don't even have to enter .nimble to install/list/remove packages |
21:50:38 | * | jrbrt quit (Quit: jrbrt) |
21:57:56 | * | yglukhov quit (Read error: Connection reset by peer) |
21:58:33 | * | yglukhov joined #nim |
22:07:17 | CodeVance | The nim-glfw package is out of date/broken |
22:07:32 | CodeVance | There's another repo with a fix |
22:13:29 | * | xet7 quit (Quit: Leaving) |
22:14:55 | * | Ven`` joined #nim |
22:16:41 | * | jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
22:40:57 | * | athenot_ joined #nim |
22:41:13 | * | athenot quit (Read error: Connection reset by peer) |
22:45:23 | * | leorize quit (Quit: WeeChat 2.1) |
23:18:10 | * | Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
23:34:21 | * | enthus1ast joined #nim |
23:34:51 | * | BitPuffin quit (Remote host closed the connection) |
23:36:49 | * | enthus1a1t quit (Ping timeout: 268 seconds) |
23:39:04 | * | enthus1ast quit (Ping timeout: 265 seconds) |
23:39:35 | * | enthus1ast joined #nim |
23:46:52 | FromGitter | <krux02> CodeVance: just use sdl2, it is better. |
23:47:01 | FromGitter | <krux02> but not the official one |
23:47:43 | FromGitter | <krux02> for everybody who cares, ast_pattern_matching got an operator for custom conditions. |
23:48:22 | CodeVance | sdl2_nim? |
23:50:48 | * | enthus1a1t joined #nim |
23:53:29 | * | enthus1ast quit (Ping timeout: 260 seconds) |
23:56:52 | FromGitter | <krux02> yes |
23:58:17 | CodeVance | okay, so opengl with sdl got it XD |
23:58:25 | * | enthus1a1t quit (Ping timeout: 248 seconds) |