00:11:44 | FromGitter | <awr1> closed the ptrops PR, lol |
00:13:09 | owl_000 | why it works, (last line should work instead, second last) https://play.nim-lang.org/#ix=1UiC |
00:13:20 | FromGitter | <awr1> i didn't have very strong feelings about it to begin with (i didn't have a personal use case for it) |
00:14:52 | FromGitter | <awr1> that being said, on the topic of PRs, my cpuinfo one should be ready for merge. https://github.com/nim-lang/Nim/pull/11816 |
00:20:37 | krux02_ | awr1: when you don't have a personal use case for something, then why do you propose it anyway? |
00:21:14 | krux02_ | it always feels bad to rejects pull requests. on both sides. |
00:21:33 | FromGitter | <awr1> because i saw it in the nim forum enough to feel like maybe enough people wanted it |
00:21:49 | krux02_ | yea ok. |
00:22:01 | krux02_ | then there is an indicator of a problem here. |
00:22:30 | krux02_ | So maybe you could add something to the documentation on how to do pointer arithmetics properly in nim (with `ptr UncheckedArray[T]`) |
00:23:00 | FromGitter | <awr1> i'm not offended by a rejected PR, i think the discussion was worth having. |
00:23:16 | FromGitter | <awr1> i agree with that |
00:23:31 | FromGitter | <awr1> i might do a PR for an addition to the manual |
00:24:03 | krux02_ | cool, additions to the manual are always welcome. |
00:24:37 | * | owl_000 quit (Ping timeout: 250 seconds) |
00:33:33 | FromGitter | <awr1> has anyone ever suggested making csources a submodule? |
00:34:24 | FromGitter | <awr1> oh https://github.com/nim-lang/Nim/pull/2649 |
00:45:06 | rockcavera | Is it possible for two or more threads accessing the same read-only global seq? |
01:00:02 | FromGitter | <awr1> if the global seq is not written-to while both threads are accessed, it should be safe. |
01:00:28 | FromGitter | <awr1> *are accessing it |
01:10:54 | * | endragor joined #nim |
01:27:31 | * | doesntgolf joined #nim |
01:37:59 | * | cgfuh quit (Quit: WeeChat 2.5) |
01:50:39 | * | krux02_ quit (Remote host closed the connection) |
02:30:43 | leorize | Araq: I've looked into nimsuggest's project finding, it couldn't find the project file of a simple nimble-based package... |
02:33:34 | FromDiscord_ | <Zuup> How can i quit a nim program with also garbage collecting? |
02:35:15 | leorize | call GC_fullcollect() beforehand |
02:35:28 | leorize | usually it doesn't matter, the OS would free the memory held by the program upon exit |
02:39:24 | FromDiscord_ | <Zuup> also how do i deal with recursive includes? |
02:40:16 | leorize | recursive package deps? |
02:40:46 | leorize | you put all type declarations into one file, that's the simplest way |
02:42:14 | leorize | although if you have a detailed example I might figure out something else |
02:44:52 | FromDiscord_ | <Zuup> So i have this file, environment.nim that needs to use things from type.nim |
02:44:52 | FromDiscord_ | <Zuup> https://gist.github.com/Pancakeddd/a9484a867ad168cd4ea4b373c8f65051 |
02:44:52 | FromDiscord_ | <Zuup> but i also have type.nim that needs the Environment type for ObjectFunction |
02:44:52 | FromDiscord_ | <Zuup> https://gist.github.com/Pancakeddd/b6bc4dd21755676c6fd9b0898ed39278 |
02:50:32 | * | laaron quit (Remote host closed the connection) |
02:53:24 | * | laaron joined #nim |
02:59:15 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
02:59:39 | * | laaron joined #nim |
03:06:03 | leorize | there's a way to this, but it's not recommended |
03:06:12 | leorize | import type from environment |
03:06:32 | leorize | in type.nim, import environment *after* ObjectType declaration |
03:06:56 | leorize | then it will work when you compile environment.nim |
03:07:10 | leorize | however if you compile type.nim it wouldn't work |
03:07:34 | leorize | the simpler way is to define ObjectType in environment.nim |
03:09:12 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
03:09:46 | * | laaron joined #nim |
03:10:13 | FromDiscord_ | <Zuup> I'll try that |
03:14:56 | * | Hideki_ joined #nim |
03:15:17 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
03:16:15 | * | laaron joined #nim |
03:19:13 | * | Hideki_ quit (Ping timeout: 245 seconds) |
03:21:18 | * | theelous3 quit (Ping timeout: 245 seconds) |
03:27:48 | * | snooptek joined #nim |
03:37:16 | * | chemist69 quit (Ping timeout: 264 seconds) |
03:39:08 | * | chemist69 joined #nim |
03:41:48 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
03:43:08 | * | laaron joined #nim |
04:02:50 | * | laaron quit (Remote host closed the connection) |
04:04:58 | * | laaron joined #nim |
04:14:47 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
04:15:17 | * | owl_000 joined #nim |
04:15:23 | * | laaron joined #nim |
04:17:00 | * | nif quit (Read error: Connection reset by peer) |
04:17:47 | * | nif joined #nim |
04:27:23 | * | Jjp137 quit (Read error: Connection reset by peer) |
04:28:08 | * | Jjp137 joined #nim |
04:48:59 | * | nsf joined #nim |
04:53:58 | * | doesntgolf quit (Ping timeout: 246 seconds) |
04:54:00 | * | Jjp137 quit (Read error: Connection reset by peer) |
04:54:40 | * | Jjp137 joined #nim |
05:01:35 | * | laaron quit (Remote host closed the connection) |
05:03:17 | * | laaron joined #nim |
05:05:51 | * | owl_000 quit (Ping timeout: 250 seconds) |
05:13:25 | * | narimiran joined #nim |
05:18:59 | * | fjellfras joined #nim |
05:25:41 | * | laaron quit (Remote host closed the connection) |
05:30:23 | * | laaron joined #nim |
05:31:04 | * | alexander92 joined #nim |
05:39:19 | * | absolutejam1 joined #nim |
05:44:44 | * | dddddd quit (Remote host closed the connection) |
05:53:38 | * | tiorock joined #nim |
05:53:38 | * | tiorock quit (Changing host) |
05:53:38 | * | tiorock joined #nim |
05:53:38 | * | rockcavera is now known as Guest82605 |
05:53:38 | * | Guest82605 quit (Killed (card.freenode.net (Nickname regained by services))) |
05:53:38 | * | tiorock is now known as rockcavera |
06:09:04 | * | absolutejam1 quit (Ping timeout: 268 seconds) |
06:13:03 | * | absolutejam1 joined #nim |
06:17:32 | * | absolutejam1 quit (Ping timeout: 245 seconds) |
06:27:15 | * | solitudesf joined #nim |
06:31:53 | * | Kaivo quit (Read error: Connection reset by peer) |
06:37:53 | * | Kaivo joined #nim |
06:53:53 | * | fjellfras_ joined #nim |
06:54:25 | * | fjellfras quit (Read error: Connection reset by peer) |
06:57:35 | * | krux02 joined #nim |
07:00:00 | * | gmpreussner quit (Quit: kthxbye) |
07:04:57 | * | gmpreussner joined #nim |
07:06:38 | * | absolutejam1 joined #nim |
07:16:56 | * | Hideki_ joined #nim |
07:21:18 | * | Hideki_ quit (Ping timeout: 245 seconds) |
07:36:55 | * | PMunch joined #nim |
07:41:43 | * | laaron quit (Remote host closed the connection) |
07:42:56 | * | laaron joined #nim |
07:50:10 | * | ng0 joined #nim |
07:55:19 | * | owl_000 joined #nim |
07:59:34 | owl_000 | `proc area[T](scr: Rectangle[T]):T =` is my proc, but why `Rectangle.area[int]()` produces error` but `Rectangle.area()` works fine |
08:04:39 | * | fjellfras joined #nim |
08:04:46 | * | fjellfras_ quit (Read error: Connection reset by peer) |
08:08:15 | * | NimBot joined #nim |
08:14:06 | PMunch | What error? |
08:14:12 | PMunch | owl_000 ^ |
08:16:44 | owl_000 | https://paste.ofcode.org/sZnyihRyzk4W5YxvVwnsWM this code |
08:18:08 | owl_000 | https://play.nim-lang.org/#ix=1Uke playground |
08:18:46 | PMunch | Ah, it's caused by the universal call syntax: https://play.nim-lang.org/#ix=1Ukf |
08:19:00 | PMunch | Essentially it parses it as (field.area())[int]() |
08:19:30 | PMunch | But you don't need [int] when Nim is able to infer the type :) |
08:20:56 | owl_000 | thanks, i was curious, but if nim can figure out waht is the type, than no prob. i like Rectangle.area() more than area[int](Rectangle) |
08:26:24 | * | Vladar joined #nim |
08:26:32 | PMunch | Yeah, Nim is able to infer types in most cases. But if you say wanted to specify a return type you would need the [int] syntax |
08:27:46 | PMunch | E.g.: https://play.nim-lang.org/#ix=1Ukg |
08:28:11 | PMunch | Note that `area` now always take a Rectangle[int], but the return type can be changed |
08:28:17 | PMunch | Then you have to specify |
08:28:55 | PMunch | By the way, if you rename your `printer` procedure to `$` and returns a string instead of performing echos you can do `echo field` for the same result |
08:29:28 | PMunch | Of course that would override the default echo output |
08:29:51 | crem | Is there an example of nim coroutines somewhere? Somehow so far only go and kotlin could do that in convenient way, but I hate go and dislike jvm. |
08:32:04 | crem | Ah it does python/javascript/C#-like await?.. Meh.. |
08:32:53 | PMunch | Hmm, there is this: https://nim-lang.org/docs/coro.html |
08:32:59 | PMunch | Not sure how/if that works though |
08:33:10 | crem | yes, that's the only think I found, but there's no example. |
08:34:32 | crem | If it just works with any function, would be unbelievably amazing... |
08:36:18 | Zevv | crem: coro is discouraged and hardly supported |
08:37:20 | leorize | async is currently the most well supported way... |
08:38:41 | crem | So async/await? That's inconvenient as hell. Especially as for some reason most of languages don't do await by default.. |
08:39:50 | leorize | I find it easy enough to use |
08:39:58 | leorize | add {.async.} to your proc |
08:40:01 | PMunch | async/await isn't great.. |
08:40:03 | leorize | use await where needed |
08:40:08 | leorize | kinda done :P |
08:40:10 | PMunch | In general, the Nim implementation is pretty nice |
08:40:35 | PMunch | Or maybe it's just me who haven't got the hang of it |
08:40:52 | PMunch | Why is coro discouraged? |
08:41:07 | PMunch | Of course you can always spin up a thread |
08:41:13 | leorize | because it's unmaintained? |
08:41:27 | leorize | also it depends on a removed part of posix |
08:41:44 | leorize | the alternative is a lot of setjmp iirc |
08:41:52 | PMunch | Ah |
08:44:44 | Zevv | I believe coros create actual C stack frames for each coro |
08:44:55 | * | laaron quit (Remote host closed the connection) |
08:44:55 | Zevv | which is a hack, basically, and not portable to JS |
08:45:16 | crem | You need stack in some way for coroutines anyway. |
08:45:19 | * | laaron joined #nim |
08:45:20 | Zevv | I wonder if asyncmacro-alike voodoo could be used to create an alternative coro implementation that does not require stack frames |
08:46:02 | Zevv | you could transform a proc and move all local/stack out and make it into a closure |
08:46:24 | leorize | isn't the point of coro is to spawn proc without having to modify them? |
08:46:28 | Zevv | a yield() is transformed into a return, and the proc is split up into multiple procs that share these upvalues |
08:47:17 | Zevv | upvalues is not a nim-word is it? Is there a name for variables that are part of a closure? |
08:49:44 | leorize | captured variables? :P |
08:50:18 | Zevv | yeah, "upvalue" is Lua-lingo, I like that word better :) |
08:51:36 | Zevv | I do like the idea though, I'll think about that to see if I could build Lua-like asymmetric coroutines based on rewriting |
08:54:58 | FromGitter | <mratsim> Which part of removed posix coros rely on? AFAIK neither ucontext nor setjump were removed |
08:55:19 | leorize | ucontext has already been removed |
08:55:20 | FromGitter | <mratsim> And the last backend is windows fiber which was never part of Posix to begin with ;) |
08:55:40 | leorize | glibc still supports it though :P |
08:56:23 | crem | My async/await pain mostly comes from python. There I have a web server (multithread but not using async/await), and sometimes I wanted to send messages to discord. I don't care about latency etc, it's just local tool. The problem is that all discord python API is async, and to call async from non-async (especially if you call it from multiple threads) you'll have to go through lots of pain. |
08:57:15 | Zevv | and again we have https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/ :) |
08:57:16 | crem | You'll have to get dispatch queue from somewhere, and ensure it's not in use by another thread. |
08:57:22 | crem | Yes. |
08:58:07 | crem | But in Go and Kotlin coroutines is a pure joy! |
08:58:27 | Zevv | same with lua |
09:00:09 | crem | Also I like C++, but coroutines in C++20 scare me. :) |
09:02:28 | Zevv | Also I like coroutines, but C++ scares me |
09:05:05 | ldlework | C# coroutines are great as well |
09:08:30 | * | actuallybatman quit (Quit: leaving) |
09:10:11 | PMunch | Hmm, it should be possible to implement coroutines on top of iterators in Nim |
09:10:20 | Araq | what-color-is-your-function remains a terrible article, so d'oh, yeah if every function has the signature T -> T then we have perfect "interop" and no colors until something breaks at runtime |
09:10:34 | Araq | great insight |
09:10:40 | FromGitter | <arnetheduck> @awr1 we request csources compatibility to be tracked in the main repo regularly because we like to build from there but if someone is following `devel` only they won't see the problem |
09:10:45 | PMunch | As long as you have a dispatcher loop thing like with async |
09:10:45 | * | actuallybatman joined #nim |
09:13:09 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
09:13:45 | * | laaron joined #nim |
09:16:06 | * | actuallybatman quit (Quit: Lost terminal) |
09:16:30 | Zevv | PMunch: but closure iterators down run in the nim vm or js, right |
09:17:41 | FromGitter | <mratsim> I'd like csources to be a submodule as well so that it's easier when bisecting |
09:21:16 | PMunch | Simple coroutine implementation based on the wiki article: http://ix.io/1Uks/Nim |
09:21:31 | PMunch | Based on this: https://en.wikipedia.org/wiki/Coroutine#Comparison_with_generators |
09:22:28 | PMunch | Now this uses enums, but it could easily be converted to a system that would allow you to add coroutines at runtime, and remove them when they return `finished` |
09:24:20 | Araq | csources are archived now |
09:24:26 | Araq | they don't change anymore |
09:25:00 | * | floppydh joined #nim |
09:26:52 | FromGitter | <arnetheduck> to be clear, what we're really asking for is that the `build_all.sh` script works for any checkout, as long as you have a c compiler |
09:27:18 | FromGitter | <arnetheduck> all the old ones are broken obviously becuase they check out a random fresh csources |
09:29:58 | Araq | yeah, that is what we did, albeit in a different way that you were suggesting |
09:30:40 | * | actuallybatman joined #nim |
09:30:45 | FromGitter | <arnetheduck> fair |
09:30:49 | Araq | there is csources 0.20 that will be able to build every Nim version to follow, we know this because that's how travis and appveyor start, they start with csources |
09:31:22 | Araq | we also checked nightlies |
09:31:38 | FromGitter | <arnetheduck> sounds tricky to maintain over time, with compiler magics and compilerprocs and all |
09:31:42 | Araq | to the best of our knowledge the full infrastructure works with this solution |
09:32:11 | Araq | without having to patch the various scripts that are used to build nim |
09:32:51 | Araq | in the long run it might be tricky, we'll see |
09:33:21 | FromGitter | <arnetheduck> the litmus test is that you can checkout a version from a year ago, run its documented build operation (as documented in the readme of *that* checkout) and it just works. |
09:33:29 | Araq | but in the past the updates to csources were what caused the actual harm, everything was fine *until* we created a new release... |
09:36:18 | FromGitter | <arnetheduck> well, what will cause harm is the standard library using features newer than the compiler created by csources supports (including bugfixes) - in a way, it means you can "never" use new features in the std lib, unless you update csources |
09:39:19 | * | actuallybatman quit (Quit: Lost terminal) |
09:39:51 | Araq | hmm? I only need a nim.exe and that's what csources provide |
09:40:09 | Araq | I can even switch to a different lib/ layout |
09:41:29 | Araq | I cannot use new language features in the nim compiler though |
09:42:02 | Araq | but then I can create a more complex building step within koch.nim, maybe |
09:44:15 | * | actuallybatman joined #nim |
09:44:33 | * | clyybber joined #nim |
09:46:07 | FromGitter | <arnetheduck> yeah, that's what I mean - ie if compiler sources are using stuff from `lib/`, that creates a bootstrapping problem |
09:50:12 | euantor | Any ideas what might cause an IOError about file not found "iterators.nim"? https://www.irccloud.com/pastebin/1d8IXory/ |
09:50:26 | Araq | we'll see what happens :-) the core problem is that everybody does the build wrong |
09:50:34 | Araq | completely wrong. |
09:51:25 | Araq | you start from nim-$Version.tar.xz, it comes with compatible csources, you get Nim version X, and then version X can build version X + 1 and ideally X + 2, X + 3 |
09:52:24 | Araq | but nobody does that, including every piece of our very own infrastructure |
09:56:59 | FromDiscord_ | <Kiloneie> Does anyone how a minute or two to read something i wrote about Nim ? I need a some thoughts, i really want this to be perfect xD... |
10:02:21 | Araq | want me to read it? :P |
10:02:26 | FromGitter | <arnetheduck> > but nobody does that, including every piece of our very own infrastructure β β because it sucks. everyone already has and understands git and it has all the necessary plumbing to deal with the problem.. downloading version x.y.z then rebuilding then iterating etc etc is a mess that's hard to explain algorithmically |
10:04:17 | Araq | not buying it, curl and untar are as common as git |
10:06:40 | FromGitter | <arnetheduck> but they don't come with submodules or unique identifiers like hashes or anything else - to set that up, one has to relearn how nim in particular distributes its files, what the nim-version filename scheme is etc etc - shell scripts are terrible for cross-platform and even simple arithmetic (N+1) is hard.. git solves all that because it's one thing that you download and then you have all the history and a handy |
10:06:40 | FromGitter | ... graph to move back and forwards in that history |
10:07:20 | Araq | yet you couldn't be bothered to checkout the *tagged* csources commits |
10:07:58 | * | laaron quit (Remote host closed the connection) |
10:08:28 | FromGitter | <arnetheduck> it's not me - it's `build_all.sh`. if I clone the repo today and check out the tagged 0.19 version and run `build_all.sh`, like the included readme suggests I should do, its *broken* |
10:08:58 | Araq | and how should build_all.sh deal with it? it's part of the Nim git repo |
10:09:20 | Araq | so obviously it should use "latest" because that's what a "build from source" means |
10:09:36 | Araq | "build from source" doesn't mean "frozen in time", it means the opposite |
10:10:35 | * | laaron joined #nim |
10:10:35 | FromGitter | <arnetheduck> build_all should checkout `csources` that worked at the time the checked out `build_all` is from |
10:11:36 | FromGitter | <arnetheduck> today, it should work with csources from today, and if I checkout `0.19`, it should build 0.19 from sources, including all dependencies that were valid at the time - including csources |
10:12:10 | FromGitter | <arnetheduck> that's kind of the whole point of git: to atomically capture a moment in time when stuff works/worked |
10:13:01 | Araq | in other words, 'build_all.sh' should have a manually managed version inside |
10:13:05 | FromGitter | <arnetheduck> it's the same reason we want lock files or sometihng similar: if I checkout commit xyz and I can build it, so should you, regardless of when in time that checkout happens - now or in ayear |
10:13:35 | FromGitter | <arnetheduck> yes! or automatically or a submodule or whatever. |
10:14:07 | Araq | yeah, I don't like it, and already it causes friction and work with koch.nim and its silly nimble hash |
10:16:36 | FromGitter | <arnetheduck> well, that's because you only work with devel - the problem doesn't appear then. crucially though, when you update the nim repo (and you're the king of the hill here), you hold the crucial information in your head or on your drive: "this source code worked well together". a submodule or a lock file or a manually managed hash in `build_all.sh` is a way to record that information for posterity, so that when the rest |
10:16:36 | FromGitter | ... of us try to reproduce what you did, we have the necessary information at hand |
10:17:39 | Araq | that's simply not true, csources is version tagged, you want to build version X, it's quite esay to do that, ok, you have to avoid build_all.sh |
10:18:33 | Araq | and build_all.sh wasn't even written by us, I was weak and accepted the PR though |
10:18:37 | FromGitter | <arnetheduck> and I have to avoid the readme/explicit instructions in the repo and invent something myself |
10:19:27 | narimiran | so the solution is to have "if you want to build an older version" section in the readme? |
10:19:33 | FromGitter | <arnetheduck> and moreover, every single person / entity has to figure it out for themselves in their own way, because it's not the documented process and its not what your own CI does |
10:20:05 | Araq | the CIs don't use build_all.sh ;-) |
10:20:12 | FromGitter | <arnetheduck> narimaran, no - what I want is that when I checkout *any* version and open the readme, the instructions work and are preferably automated |
10:20:14 | Araq | git clone --depth 1 https://github.com/nim-lang/csources.git # this line is everywhere |
10:20:45 | FromGitter | <arnetheduck> well, that's what build_all does, so equivalent |
10:21:00 | Araq | yes but this line is *duplicated* quite a bit |
10:21:27 | Araq | including in who-knows-where setups that build Linux packages |
10:21:31 | FromGitter | <arnetheduck> I don't want to read the instructions of today to build 0.19 - I want to checkout the instructions of 0.19 to build 0.19 |
10:21:51 | Araq | when the instructions where written, git clone --depth 1 https://github.com/nim-lang/csources.git worked :P |
10:22:01 | Araq | you see the problem? |
10:22:40 | Araq | nobody writes instructions thinking about "huh, what if somebody checks out an older version via git" |
10:22:44 | FromGitter | <arnetheduck> yes. and if you had committed the hash of csources that worked then into build_all.sh or a submodule, they would have continued to work toay even |
10:23:58 | Araq | well give that 'git clone --depth 1 https://github.com/nim-lang/csources.git' spread like a virus, the one thing we're doing is that we ensure it actually keeps working, seems fair to me |
10:24:18 | FromGitter | <arnetheduck> uhm, wait what? .. git submodules and lock files are an answer to this very specific problem - "nobody that writes nim build instructions" might be accurate - but the rest of the world is keenly aware of this issue, has solved it, and moved on |
10:26:56 | Araq | LOL, ever tried to build an old GCC? |
10:27:15 | Araq | but that's all besides the point |
10:27:34 | Araq | as I said, the 'git clone csources' is out there in the wild and we cannot fix every instance of it |
10:28:24 | FromGitter | <arnetheduck> well, your solution will work for a while. then you'll come up with a compelling reason to break it. then we'll be having this discussion again. then you'll say you'll never break it again. the point being, it has known and resolvable issues. |
10:29:53 | Araq | well and your solution only fixes a subset of the problem. |
10:30:10 | * | abm joined #nim |
10:31:33 | FromGitter | <arnetheduck> and sets the stage/gives the tools for fixing all those broken git clones (that work no worse than they did before, even with my solution) |
10:32:04 | * | laaron quit (Remote host closed the connection) |
10:34:47 | Araq | I still don't know how your solution can work, I have appveyor.yml, .tavis.yml and build_all.sh all containing the the 'git clone' command |
10:34:55 | * | laaron joined #nim |
10:35:36 | Araq | I could write a file in the common syntax of Bash and .bat files so that it's useful from everywhere, maybe |
10:35:55 | Araq | and then I "only" have to keep it up-to-date in one place |
10:36:03 | Araq | oh wait, nightlies, so two places |
10:36:55 | FromGitter | <mratsim> If csources were submoduled, checking out an old Nim would also checkout the old csources so build_all would still work |
10:37:11 | FromGitter | <arnetheduck> change `git clone csources` to `git submodule update --init` - use a submodule to record compatible csources version - done. works everywhere: branches, old commits, you name it. |
10:37:49 | FromGitter | <mratsim> And then I could have an auto bisect script |
10:37:50 | FromGitter | <arnetheduck> CI can do the same - `build_all.sh` can be updated to do the same (and CI can then use `build_all.sh`) - simple |
10:38:08 | Araq | appveyor cannot use "build_all.sh" |
10:38:10 | FromGitter | <arnetheduck> bisecting will work indeed, like mamy says |
10:38:21 | FromGitter | <arnetheduck> no, it can use build_all.bat that does the exact same thing |
10:38:33 | Araq | yeah it's great |
10:39:10 | FromGitter | <arnetheduck> or you can type it out instead of using a script - it doesn't matter - the information necessary is in the repo forever, and whoever writes build instructions doesn't even have to be aware it'll work in the future too |
10:40:11 | FromGitter | <arnetheduck> all they need to do is to do the `clone`->`submodule update --init` |
10:42:18 | Araq | meh, I'm still not buying it, sorry, by your logic Nim would have a "submodule" to Nimble too then and Nimble would have a "submodule" to Nim... |
10:43:02 | * | fjellfras quit (Quit: Leaving) |
10:43:09 | * | laaron quit (Remote host closed the connection) |
10:43:33 | Araq | since I can build Nim without cources, there is no submodule dependency here. |
10:43:36 | FromGitter | <arnetheduck> the next stage, the one that we consider a priority at status (over incremental compilation and other small optimizations), that will enable us to coordinate the work of many developers more efficiently (which has higher returns for us), and that will allow us to create reproducible builds across multiple applications, is a better package manager. the nim compiler is trivial in this regard - it has only two deps: |
10:43:36 | FromGitter | ... csources and nimble (well, and sqlite now, which is exactly the same problem again - which sqlite version does the compiler work with? nobody knows). when you develop anything slightly more complex (like nimbus is becoming), you end up with transitive dependencies and all kinds of other issues. |
10:44:07 | * | muxueqz[m] joined #nim |
10:45:42 | FromGitter | <arnetheduck> well, yes - if the Nim compiler needs nimble to build itself, it has a dependency on nimble, and writing down which version of nimble works with the Nim compiler is good practise |
10:46:13 | Araq | Nim doesn't have a Nimble dependency either. We use it for testing things. |
10:46:51 | FromGitter | <arnetheduck> well, then you have a dependency on nimble. if nimble breaks (as it usually does, the few times it's updated), the Nim CI will break |
10:47:06 | * | laaron joined #nim |
10:47:26 | leorize | well the nimble dep is written in koch.nim |
10:47:30 | leorize | there's a commit hash there |
10:47:37 | Araq | yeah and it sucks |
10:48:22 | FromGitter | <arnetheduck> well it may suck for your, but it tends to suck less than having the build break, and thinking that it's changes to nim that broke things when in reality is was a change to nimble. |
10:48:39 | FromGitter | <arnetheduck> why does it suck, btw? |
10:48:55 | Araq | It's really tiresome to hear all day long "remove X, it causes ongoing costs" and then you happily suggest stuff that causes ongoing costs |
10:49:30 | FromGitter | <arnetheduck> how could it possibly cause ongoing costs? you only ever need to touch it when nimble is broken and needs updating? |
10:49:44 | Araq | because I had problems with Nimble just to figure out a new Nimble fixed it and all I had to do was update the commit hash and do 'nim c koch && koch nimble' |
10:49:46 | FromGitter | <arnetheduck> it isolates you from the cost of breakage in nimble |
10:50:53 | FromGitter | <arnetheduck> we've had the opposite happen more often: someone updated nimble which broke our build. just like we can't follow Nim devel - it breaks our build far too often so we lock it down to 0.19.6. |
10:51:44 | Araq | actually I can build nimbus with a code change of 3 lines with Nim devel |
10:51:46 | FromGitter | <arnetheduck> it's a nice setup because we only pay the update price when we need an update - from a maintenance perspective, that's reasonable |
10:52:14 | Araq | and I'm looking at nim-beacon-chain |
10:52:18 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
10:52:41 | * | laaron joined #nim |
10:52:42 | Araq | and afaict your build also doesn't nail down the version of GCC or make that you use |
10:52:48 | FromGitter | <arnetheduck> well, I'm glad ;) maybe we can finally update if those fixes are ported back to a stable branch |
10:52:59 | FromGitter | <arnetheduck> no, we don't (yet). our official builds will. |
10:53:04 | * | kungtotte quit (Ping timeout: 246 seconds) |
10:53:27 | Araq | and then you will be in "I need GCC 4.8" business |
10:53:32 | * | laaron quit (Remote host closed the connection) |
10:53:35 | Araq | and what are you gonna do? I'll tell you |
10:53:45 | Araq | you select GCC-4.8, prebuilt |
10:53:58 | FromGitter | <arnetheduck> nope, we'll docker, most likely ;) |
10:54:01 | Araq | you don't fuck around with 'git cloneing' it |
10:54:24 | FromGitter | <arnetheduck> which, incidentally, can be "cloned" just like git, with a hash |
10:54:44 | FromGitter | <mratsim> We'll probably have continuous deployment/nightlies |
10:54:46 | Araq | yeah but then you also need a version of GCC to build it... |
10:54:51 | FromGitter | <mratsim> Built within the CI |
10:55:10 | Araq | as it's written in C(++). you cannot win this battle, you always start with a binary you have to trust |
10:55:24 | FromGitter | <arnetheduck> that's fine. we also will not lock down the CPU, motherboard and factory making those. |
10:55:27 | FromGitter | <mratsim> We trust what passed the CI |
10:56:44 | FromGitter | <arnetheduck> every lock down comes with a cost and a benefit. the benefit of locking down nim is huge: nim is a moving target. the benefit of gcc: much less - it's pretty stable, most versions. |
10:57:10 | Araq | yeah but to lock down Nim is just |
10:57:22 | Araq | download nim.$version.tar.xz |
10:57:46 | Araq | I know, I know, you don't like it and so you're happy in creating more work for me |
10:57:57 | FromGitter | <arnetheduck> yes, it is just. if nim were stable and we didn't have to patch it, and "most versions" just worked (as in the last 5 years of versions, as is the case with gcc), we wouldn't be having this conversation |
10:58:17 | * | actuallybatman quit (Ping timeout: 268 seconds) |
10:59:14 | FromGitter | <arnetheduck> but never mind, we have imperfect solutions that work around this issue. it's fine that the instructions are broken, and that the shell scripts in the nim repo are broken as well - we've pointed it out, and moved on. |
10:59:47 | Araq | I archived csources and they are not broken anymore :P |
11:00:15 | Araq | but yeah, it's different than your solution and everything that's different than that is "broken", got it |
11:00:56 | Araq | can't argue against this crystal clear logic here. |
11:01:07 | * | laaron joined #nim |
11:03:33 | FromGitter | <arnetheduck> well, I used your solution before, in my own projects. then the world moved on and the facts changed ;) |
11:05:50 | Araq | Zevv, can you check https://github.com/nim-lang/Nim/pull/12131 please? |
11:05:51 | FromGitter | <arnetheduck> what does "archived csources" mean btw? the github repo is locked? |
11:06:04 | Araq | yes, it's locked |
11:06:31 | FromGitter | <arnetheduck> ah. ok, let's see how long it takes until you find the unlock button ;) |
11:06:43 | Araq | I ensured it exists before I did that |
11:06:46 | Araq | :P |
11:07:32 | * | absolutejam1 quit (Ping timeout: 245 seconds) |
11:07:43 | FromGitter | <arnetheduck> and you're not one of those that thinks of people from the future reading what's written today. got it ;) |
11:11:03 | Zevv | Araq: can't right now, but @leorize might |
11:14:05 | * | laaron quit (Remote host closed the connection) |
11:16:04 | PMunch | Hmm, is there a "compare strings as if they were Nim idents" procedure in the stdlib yet? |
11:16:08 | * | laaron joined #nim |
11:16:43 | PMunch | Essentially `assert compare("myAwesome_proc", "my_awesomeProc") == true` |
11:16:52 | Zevv | not that I know of, I recently looked for that after I found some references in a github issue complaining about multiple implementations of ident-related stuff |
11:16:55 | Zevv | but couldn't find it |
11:17:51 | PMunch | I frequently find myself needing one when working with macros |
11:18:02 | Araq | macros.eqIdent |
11:18:06 | Araq | is the only thing we have |
11:18:40 | * | Hideki_ joined #nim |
11:19:15 | * | clyybber quit (Remote host closed the connection) |
11:20:00 | PMunch | Is the only thing? Isn't that exactly what I need |
11:20:21 | * | clyybber joined #nim |
11:20:32 | * | clyybber quit (Remote host closed the connection) |
11:22:57 | Zevv | Oh then I'm confusing stuff, I think I was looking for a normalization function then |
11:23:15 | * | Hideki_ quit (Ping timeout: 258 seconds) |
11:23:24 | narimiran | PMunch: https://nim-lang.github.io/Nim/strutils.html#cmpIgnoreStyle%2Cstring%2Cstring ? |
11:23:33 | Araq | narimiran, it's wrong :P |
11:24:21 | PMunch | Yeah from the docs of that procedure: "This should NOT be used to compare Nim identifier names. Use macros.eqIdent for that." |
11:24:46 | * | clyybber joined #nim |
11:24:48 | narimiran | Araq: its wrong for idents, but it might be ok for strings that PMunch want to use? |
11:25:14 | Araq | s[0] & normalize(s[1..^1]) |
11:25:29 | * | clyybber quit (Client Quit) |
11:26:15 | * | laaron quit (Remote host closed the connection) |
11:26:49 | PMunch | narimiran, essentially I keep a table of procedure names -> id mappings and I wanted to check if one existed |
11:26:58 | PMunch | So I guess I need a normaliser instead.. |
11:27:09 | PMunch | So I can use hasKey(normalise(procName)) |
11:27:24 | Araq | PMunch, it's fine to ignore this problem IMO |
11:27:27 | Zevv | yes, and *that* was what I couldn't find :) |
11:27:39 | PMunch | Araq, ignore what problem? |
11:27:54 | Araq | this whole identifier normalization business |
11:27:59 | * | Hideki_ joined #nim |
11:28:29 | Araq | if somebody actually uses fooBar and foo_bar inconsistently, just let it fail |
11:28:35 | PMunch | Why? Nim is not sensitive to differences in procedure names, so why should my macro be? |
11:28:47 | * | laaron joined #nim |
11:29:44 | PMunch | Hmm, what is the best exception to throw when I get invalid input in a macro? |
11:30:12 | PMunch | Oh wait, I'm supposed to use "error" :P |
11:30:37 | Araq | PMunch, because it's simpler and nobody cares ;-) |
11:30:46 | PMunch | ... |
11:30:55 | PMunch | I still think we should have a normaliser in the macros module.. |
11:31:07 | PMunch | At least since we have eqIdent |
11:32:25 | Araq | sure, add one |
11:32:48 | Zevv | PMunch: there is an issue somewhere with implementation and discussions |
11:33:25 | Zevv | PMunch: got it: https://github.com/nim-lang/Nim/issues/10064 |
11:34:38 | * | krux02 quit (Ping timeout: 245 seconds) |
11:35:41 | PMunch | Well that's not really an implementation of a normaliser |
11:35:55 | PMunch | It should be easy though, lowercase everything but the first character, and remove all underscores |
11:36:44 | Zevv | isn't that what the proposal normalizeStyle() does? |
11:37:54 | * | clyybber joined #nim |
11:38:59 | PMunch | Oh right, didn't actually read the entire thing :P |
11:39:00 | PMunch | My bad |
11:39:29 | PMunch | It's a bit aggressive though |
11:39:39 | PMunch | Would fail for e.g. `$` |
11:42:06 | * | clyybber quit (Ping timeout: 244 seconds) |
11:45:28 | * | Hideki_ quit (Remote host closed the connection) |
11:46:11 | * | Hideki_ joined #nim |
11:46:34 | PMunch | Is it possible to do something similar to stdout.write on compile-time? |
11:46:40 | ldlework | Is there a Nim Discord? |
11:47:30 | * | theelous3 joined #nim |
11:47:36 | FromGitter | <mratsim> Yes it's bridged here |
11:47:52 | FromGitter | <mratsim> Should be linked on nim-lang.org |
11:48:11 | * | shashlick joined #nim |
11:50:28 | * | Hideki_ quit (Ping timeout: 245 seconds) |
11:53:48 | FromGitter | <arnetheduck> how's normalization and international character sets doing? |
11:54:20 | * | Hideki_ joined #nim |
11:54:28 | crem | Bridged chat is pretty poor experience. I left it after a year of hanging there or so. |
11:54:54 | ldlework | I built an EmbedDB bot for Discord, so just curious where people might like to see it deployed. |
11:55:50 | * | laaron quit (Remote host closed the connection) |
11:57:03 | * | owl_000 quit (Ping timeout: 264 seconds) |
11:58:20 | * | laaron joined #nim |
11:58:42 | Hideki_ | Hi disruptek, I really like nim. I'm coding OpenAPI codegen for Nim (https://github.com/OpenAPITools/openapi-generator) |
12:00:53 | shashlick | That's great @Hideki_ |
12:02:28 | * | laaron quit (Remote host closed the connection) |
12:02:57 | Hideki_ | :D |
12:04:22 | * | laaron joined #nim |
12:04:53 | * | clyybber joined #nim |
12:05:08 | * | nsf quit (Quit: WeeChat 2.5) |
12:07:23 | Hideki_ | When I'm coding it, I came across a strange linker error https://github.com/nim-lang/Nim/issues/12118 |
12:07:26 | * | endragor quit (Remote host closed the connection) |
12:07:37 | * | gangstacat quit (Quit: Δis!) |
12:09:31 | * | gangstacat joined #nim |
12:09:31 | * | clyybber quit (Read error: Connection reset by peer) |
12:10:51 | * | clyybber joined #nim |
12:10:55 | * | absolutejam1 joined #nim |
12:11:12 | * | clyybber quit (Client Quit) |
12:11:50 | Hideki_ | but it's ok. I decided to give other names each other. |
12:15:54 | PMunch | Hmm, is there a way to have a template take an identifier and a variable amount of input and convert that to a call to the identifier with the varargs as arguments? |
12:20:04 | * | arecaceae quit (Remote host closed the connection) |
12:20:09 | Araq | macros.unpackVarargs ? |
12:20:16 | Araq | parseExpr? |
12:20:28 | * | arecaceae joined #nim |
12:20:46 | PMunch | Did something else with a macro, that works a bit better |
12:20:53 | * | absolutejam1 quit (Ping timeout: 245 seconds) |
12:23:02 | FromGitter | <mratsim> @crem we have a nice Gitter<->Discord bridge for the nimbus chat |
12:23:04 | * | absolutejam1 joined #nim |
12:24:23 | crem | What makes it nice? |
12:26:40 | disruptek | it's rarely snarky. |
12:28:11 | disruptek | Hideki_: so am i! want to combine? https://github.com/disruptek/openapi |
12:29:18 | FromGitter | <mratsim> Names are well forwarded and code snippets work from both end |
12:30:31 | PMunch | crem: https://github.com/PMunch/nim-coroutines/blob/master/examples/example.nim |
12:30:58 | PMunch | Polished the coroutines based on iterators thing a little bit, in case you want to have a look at it :) |
12:32:39 | crem | Can I run coroutine function just normally? (not as coroutine, so that it behaves like it was not a coroutine) |
12:34:49 | crem | Anyway, I was just curious, thanks. Nim async/coroutines support may be good and convenient, but it's not awesome :) |
12:35:15 | PMunch | Well, the coroutines get rewritten to return an iterator, so you would have to handle that.. |
12:35:27 | PMunch | And currently that doesn't handle iterators that complete |
12:37:50 | Hideki_ | disruptek wow! lol. I'm developing it based on Swagger(OpenAPI) codegen template. Unfortunately, I have to code many Java than Nim... |
12:37:53 | Hideki_ | https://github.com/hokamoto/openapi-generator/blob/nim-client/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java |
12:37:54 | Hideki_ | https://github.com/hokamoto/openapi-generator/tree/nim-client/modules/openapi-generator/src/main/resources/nim-client |
12:39:25 | Hideki_ | I started to learn Nim since I don't like Java-ish languages, but I have to code in Java. Ironical |
12:40:39 | * | absolutejam1 quit (Ping timeout: 268 seconds) |
12:41:30 | PMunch | crem, what would you expect happen if you called a coroutine as a normal proc? What would happen when you came to the `yield` statement? |
12:41:51 | PMunch | If you have an example of the usage you would want I could try to emulate it :) |
12:41:55 | dom96 | when did this `:` in import syntax get introduced? https://forum.nim-lang.org/t/5172 |
12:42:50 | PMunch | Isn't that just a path? |
12:43:00 | FromGitter | <mratsim> When you were developing on Unix? :p |
12:43:17 | crem | Maybe we don't mean the same thing when we say "coroutine". Coroutines are not necessary generators, from my perspective they are more like lightweight threads. |
12:43:17 | FromGitter | <mratsim> I wasn't aware of that either |
12:43:37 | FromGitter | <mratsim> Wouldn't that break on non-windows |
12:44:04 | FromGitter | <mratsim> I'm already annoyed at Nim being happy with case insensitiveness imports on Windows |
12:44:10 | disruptek | Hideki_: ah, my version just takes json input at compile-time and produces/evaluates nim directly. |
12:46:03 | Araq | I'm unhappy with Unix. With all of it, including its support for overly long bullshit filenames ;-) |
12:46:23 | Araq | cannot create directory at 'json_tests_v0.8.3/general/phase0/bls/sign_msg/small/sign_msg_0x263dbd792f5b1be47ed85f8938c0f29586af0d3ac7b977f21c278fe1462040e3_0x0000000000000000000000000000000000000000000000000000000000000000_0x0000000000000000': Filename too long |
12:47:23 | PMunch | crem, ah yeah this only runs on a single thread.. |
12:47:23 | Hideki_ | disruptek: oh. it's cooler than mine :) But, it's ok there are two generators, isn't it? |
12:47:33 | PMunch | So you won't get any performance benefit from it |
12:47:44 | disruptek | sure, variety is the spice of life. |
12:47:53 | PMunch | Hmm, I guess you could run these on a thread though.. |
12:48:36 | crem | I don't need performance benefits, I need convenience. |
12:49:09 | PMunch | crem, do you have an example for how this works in another language? I'm not entirely sure how it should look when done right :P |
12:49:20 | crem | Again, my use case was: I have multithread app (no couroutines), I want to call library full of asyncs (python discord library), it was hard. |
12:49:43 | shashlick | @Hideki_ it is great to have Nim represented in the official repo ye |
12:49:46 | crem | Yes, goroutines in go is this feature done right. |
12:50:13 | crem | https://gobyexample.com/goroutines |
12:51:57 | crem | In go it roughly like this: 1) All functions are async-like. 2) All calls are "await" by default. 3) typing `go` before the call makes it non-await. |
12:55:03 | Araq | thanks for teaching us, we don't know how Go works |
12:55:33 | crem | I was responding to PMunch question. I'm sure you know how go works. |
12:56:01 | PMunch | Araq, bear with me, I'm sick and haven't used Go in ages :P |
12:56:19 | Cadey | i just wish that nim could split async up into multiple threads |
12:56:43 | PMunch | It can, can't it? |
12:56:57 | PMunch | You can run async on multiple threads, no? |
12:57:36 | shashlick | i had gotten spawn and async to work together a couple years ago |
12:57:48 | shashlick | never maintained it tho but it is posted online |
12:58:59 | * | krux02 joined #nim |
13:01:07 | PMunch | Hmm, I think the Go kind of coroutines would need some deeper integration.. |
13:02:29 | dom96 | Araq did you introduce that syntax? |
13:03:22 | Araq | dom96, it's an emergent property of the system... |
13:03:28 | PMunch | According to the Wikipedia article coroutines are supposed to be cooperative, i.e. that each coroutine says "I'm ready to switch now" and that causes it to switch. How this is done with goroutines I'm not entirely sure. But it seems like every IO call is essentially async, and that when an async call is encountered that works as an implicit yield.. |
13:03:36 | dom96 | Araq what? |
13:03:52 | Cadey | PMunch: goroutines are more like threads than coroutines |
13:04:01 | Araq | dom96, meh too long to explain |
13:04:04 | dom96 | `import v:/path` is what I'm referring to |
13:04:09 | Araq | let's just say I thought we fixed it |
13:04:23 | dom96 | how can this be an accidental feature? |
13:04:49 | Araq | because it's actually valid Nim syntax, :/ can be an operator |
13:05:00 | dom96 | oh, this person is actually importing a full path on Windows |
13:05:17 | dom96 | I thought this was some crazy new syntax that means "import V from this path" |
13:05:31 | crem | PMunch: yes, all I/O is some magic rather then calling blocking syscall. Kotlin coroutines is the same idea. |
13:05:59 | Cadey | go actually does call blocking syscalls syncly |
13:06:12 | Cadey | goroutines that aren't able to run on that thread that is blocked get migrated to another thread |
13:06:35 | disruptek | PMunch: wrt to the problem with identifiers you mentioned 1.5hrs ago, i found that strtabs was useful for style-insensitive identifier storage. i have a couple small procs you can lift from my openapi stuff. |
13:08:04 | disruptek | ie. a proper "is it a valid nim identifier" and a proc to "convert this random string into a valid nim ident". |
13:09:27 | disruptek | i wish i had seen your json schema code prior to building my crap. it would have saved me a little time and given your stuff more use. |
13:11:00 | * | dddddd joined #nim |
13:21:59 | shashlick | @dom96 - i skipped tests for those PRs since both were very simple fixes |
13:27:31 | * | Kaivo quit (Ping timeout: 268 seconds) |
13:29:10 | PMunch | disruptek, link to those procs? |
13:29:22 | PMunch | Yeah the JSON-schema stuff is pretty nice :) |
13:29:52 | disruptek | https://github.com/disruptek/openapi/blob/master/codegen.nim#L107 |
13:30:26 | disruptek | https://github.com/disruptek/openapi/blob/master/spec.nim#L389 |
13:31:37 | * | Kaivo joined #nim |
13:32:30 | disruptek | leorize: completion isn't working for me in the refactor branch. :-/ |
13:40:52 | * | narimiran quit (Ping timeout: 245 seconds) |
13:41:17 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
13:41:56 | * | laaron joined #nim |
13:45:56 | * | Hideki_ quit () |
13:49:46 | * | endragor joined #nim |
13:59:32 | * | Hideki_ joined #nim |
14:00:48 | * | Hideki_ quit (Remote host closed the connection) |
14:01:27 | * | Hideki_ joined #nim |
14:04:05 | * | ng0 quit (Quit: Alexa, when is the end of world?) |
14:04:27 | * | PMunch quit (Read error: Connection reset by peer) |
14:05:44 | * | Hideki_ quit (Ping timeout: 244 seconds) |
14:14:16 | * | Hideki_ joined #nim |
14:14:24 | * | Hideki_ quit (Remote host closed the connection) |
14:17:41 | * | floppydh quit (Quit: WeeChat 2.5) |
14:19:36 | * | laaron quit (Remote host closed the connection) |
14:20:06 | leorize | disruptek: are there messages in :messages? |
14:20:34 | * | nsf joined #nim |
14:20:38 | leorize | also it would be nice if I can have a test example |
14:20:38 | disruptek | nope. |
14:21:03 | disruptek | i mean, it doesn't work for completion anywhere. |
14:21:31 | disruptek | oh, i got a message this time. "...stopped with exitcode: 1" |
14:22:09 | disruptek | is there a debug mode? |
14:22:18 | leorize | that means I've managed to crash nimsuggest again |
14:22:27 | leorize | well I'm gonna add that in a bit |
14:22:45 | disruptek | no biggie; master works great for me π |
14:22:52 | leorize | gotta read up on how people create virtual buffers so I can store logs there :P |
14:23:14 | disruptek | i don't envy you. |
14:25:14 | leorize | oh, I know why it doesn't work now |
14:25:26 | leorize | I renamed a function and forget to rename it in the caller |
14:25:35 | * | leorize facepalms |
14:26:38 | leorize | disruptek: just pushed to github, please give it an another try |
14:27:27 | disruptek | no joy. |
14:27:37 | * | laaron joined #nim |
14:28:11 | disruptek | i don't think it's actually running nimsuggest. |
14:28:53 | disruptek | 'cause the last lines of messages don't include any nimsuggest crash. |
14:39:57 | shashlick | @leorize I'm using neovim with your plugin full time now |
14:40:54 | shashlick | Doesn't work on windows but fine on Linux and osx |
14:47:29 | disruptek | hey, it's fixed. |
14:48:24 | disruptek | leorize: whatever that 2 line change was fixed it. |
14:53:36 | * | endragor quit (Remote host closed the connection) |
15:01:15 | * | Hideki_ joined #nim |
15:04:20 | * | matlock joined #nim |
15:24:52 | * | endragor joined #nim |
15:29:26 | * | endragor quit (Ping timeout: 244 seconds) |
15:43:16 | * | endragor joined #nim |
15:59:54 | * | endragor quit (Remote host closed the connection) |
16:20:06 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
16:20:40 | * | laaron joined #nim |
16:29:37 | * | abm quit (Ping timeout: 245 seconds) |
16:51:48 | * | ng0 joined #nim |
16:55:07 | * | clyybber joined #nim |
17:03:38 | * | clyybber quit (Read error: Connection reset by peer) |
17:03:46 | * | clyybber joined #nim |
17:06:56 | * | wildtrees joined #nim |
17:15:41 | * | clyybber quit (Quit: Quit) |
17:16:44 | * | clyybber joined #nim |
17:16:44 | * | clyybber quit (Client Quit) |
17:19:20 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
17:20:57 | * | laaron joined #nim |
17:24:27 | * | laaron quit (Remote host closed the connection) |
17:25:41 | * | actuallybatman joined #nim |
17:27:07 | * | laaron joined #nim |
17:29:36 | * | doesntgolf joined #nim |
17:36:53 | * | Hideki_ quit (Remote host closed the connection) |
17:40:01 | * | Hideki_ joined #nim |
17:44:16 | FromGitter | <geotre> Anyone know how I can hook up an event in Karax that isn't in the hardcoded list? E.g. "onended" for the audio element |
17:44:19 | * | Hideki_ quit (Ping timeout: 246 seconds) |
17:47:38 | * | Trustable joined #nim |
18:00:28 | Araq | geotre: you need to add it then, PRs are welcome |
18:01:35 | * | natrys joined #nim |
18:02:27 | * | narimiran joined #nim |
18:02:28 | * | narimiran quit (Read error: Connection reset by peer) |
18:04:59 | FromGitter | <awr1> @Araq didn't you kinda want Nim to move to C++ default? wouldn't this entail moving to a `cppsources` or is it "good enough" that Nim (just the compiler) uses C |
18:05:10 | FromGitter | <awr1> RE: the csources convo from earlier |
18:06:41 | Araq | as I said, csources give you starting nim.exe, nothing more, nothing less |
18:07:02 | Araq | the nim.exe then builds a newer nim with C++ as default |
18:07:15 | Araq | or whatever the new Nim does. |
18:07:34 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
18:07:56 | FromGitter | <awr1> i put up RFC for changing `nim c` to use `cpp` by default a few months ago but i know that evokes that reoccuring frustration with significant breaking chances |
18:08:07 | FromGitter | <awr1> *changes |
18:08:12 | * | laaron joined #nim |
18:09:50 | FromGitter | <awr1> gah i swear i have some kind of pseudo-dyslexia, but only when i write/type things |
18:10:15 | Araq | at least the CI coverage for 'nim cpp' is really good now |
18:10:53 | FromDiscord_ | <treeform> Araq, what about CI coverage for nim ccp with vcc? |
18:11:08 | FromDiscord_ | <treeform> Araq, what about CI coverage for nim cpp with vcc? |
18:12:03 | FromDiscord_ | <treeform> how much do you care about vc++ support? |
18:13:37 | * | Trustable quit (Remote host closed the connection) |
18:13:46 | Araq | give me some appveyor config or comparable and I'll happily add vc++ support |
18:14:04 | * | rockcavera quit (Remote host closed the connection) |
18:14:38 | * | Trustable joined #nim |
18:15:05 | FromGitter | <awr1> https://github.com/nim-lang/RFCs/issues/152 |
18:16:25 | FromDiscord_ | <treeform> Araq, I don't know what appveyor is. |
18:16:26 | * | absolutejam1 joined #nim |
18:17:27 | shashlick | Travis, appveyor, azure pipelines, etc - CI |
18:18:08 | FromDiscord_ | <treeform> I can't even get docker to work... I don't think I am the right person for this. |
18:19:46 | FromGitter | <awr1> i am no CI expert but from what I have guessed: appveyor can use windows and travis is just linux? |
18:19:50 | FromGitter | <awr1> correct me if i'm wrong |
18:20:08 | shashlick | Travis does windows |
18:20:40 | FromGitter | <awr1> i noticed what the Nim appveyor stuff seems to do is check tests against a bunch of third party nimble packages |
18:20:54 | Araq | not only, but also, yes |
18:21:15 | Araq | it's the best thing we ever did for Nim's stability... |
18:21:22 | shashlick | Travis does osx as well so is pretty cool |
18:23:22 | FromDiscord_ | <treeform> it looks like appveyor does not do osx |
18:24:11 | shashlick | Nope |
18:24:37 | Araq | appveyor has the much better UI though |
18:24:55 | disruptek | 242354 lines compiled; 86.563 sec total; |
18:25:01 | disruptek | oops |
18:25:08 | Araq | and distributing the work to different CIs is good as long as we're waiting for the Azure Pipelines solution |
18:27:14 | FromGitter | <awr1> osx has always struck me as being in this unique position where it can essentially compile to every major platform (since you can't "cross-compile" to osx really - i mean GNUstep exists but i imagine it's basically non-usable for cross-compilation) |
18:27:22 | FromGitter | <awr1> nevertheless i've never seen it used in that context |
18:27:36 | * | Hideki_ joined #nim |
18:28:59 | Araq | what does that mean? |
18:31:31 | FromGitter | <awr1> that you can use an OSX machine as something that can "compile to anywhere", by virtue of compiling to osx/ios, mingw, linux apis, etc. |
18:33:09 | Araq | mingw on OSX is not something I wanna use |
18:33:45 | disruptek | rude. |
18:34:36 | disruptek | i'm j/k, of course. i did osx for 10+ years and managed to avoid it. |
18:34:51 | disruptek | much happier back in linux land. |
18:36:14 | FromGitter | <awr1> eh it would just be "ideal" to have one machine that can do everything |
18:36:20 | FromGitter | <awr1> but practical reality gets in the way of that |
18:37:11 | * | Hideki_ quit (Ping timeout: 258 seconds) |
18:37:34 | Araq | in the 90ies we had it, everybody used Windows :P |
18:37:46 | disruptek | my experience was that osx wasn't a better unix, especially in terms of how it aged. |
18:39:25 | FromGitter | <awr1> i wonder if it was all possible to cross-comp to pre-OSX macintoshes during the win9x era |
18:39:32 | Araq | how can I handle "SIGPIPE: Pipe closed."? |
18:54:42 | * | nsf quit (Quit: WeeChat 2.5) |
19:00:12 | * | ng0 quit (Ping timeout: 260 seconds) |
19:03:47 | * | doesntgolf quit (Ping timeout: 245 seconds) |
19:07:24 | lqdev[m] | I'm afraid Nim doesn't have signal handling. |
19:13:32 | * | ng0 joined #nim |
19:19:47 | * | doesntgolf joined #nim |
19:24:24 | FromGitter | <brentp> @Araq posix? |
19:31:34 | * | clyybber joined #nim |
19:35:09 | * | abm joined #nim |
19:42:54 | * | rockcavera joined #nim |
20:09:18 | FromGitter | <geotre> Ok thanks @Araq |
20:21:10 | disruptek | another kick-ass nim day, thank you. |
20:21:52 | * | natrys quit (Quit: natrys) |
20:25:45 | * | Trustable quit (Remote host closed the connection) |
20:26:51 | * | absolutejam1 quit (Ping timeout: 268 seconds) |
20:26:59 | dom96 | argh, so many problems everywhere |
20:27:54 | Araq | brentp: yeah posix |
20:52:16 | * | doesntgolf quit (Ping timeout: 246 seconds) |
20:54:50 | * | so joined #nim |
21:12:46 | * | clyybber quit (Quit: WeeChat 2.5) |
21:24:12 | * | actuallybatman quit (Ping timeout: 245 seconds) |
21:26:12 | * | actuallybatman joined #nim |
21:42:05 | * | alexander92 quit (Ping timeout: 268 seconds) |
21:43:25 | * | alexander92 joined #nim |
21:50:38 | * | snooptek quit (Remote host closed the connection) |
21:54:12 | * | disruptek quit (Ping timeout: 245 seconds) |
21:55:34 | * | disruptek joined #nim |
22:16:37 | * | solitudesf quit (Ping timeout: 268 seconds) |
22:20:27 | * | Vladar quit (Remote host closed the connection) |
22:25:05 | * | shashlick quit (Remote host closed the connection) |
22:25:09 | * | absolutejam1 joined #nim |
22:34:11 | * | Hideki_ joined #nim |
22:34:37 | * | shashlick joined #nim |
22:36:46 | shashlick | testing |
22:37:14 | FromGitter | <genotrance> 123 |
22:37:54 | * | shashlick quit (Remote host closed the connection) |
22:38:23 | * | Hideki_ quit (Ping timeout: 245 seconds) |
22:40:01 | * | shashlick joined #nim |
22:51:17 | * | ng0 quit (Quit: Alexa, when is the end of world?) |
22:51:35 | FromGitter | <Varriount> Araq: The windows API is... Interesting |
22:51:57 | FromGitter | <Varriount> But at least it has descriptive function and parameter names. |
22:52:29 | * | actuallybatman quit (Ping timeout: 258 seconds) |
22:55:39 | Araq | well it's an API, beats having to parse /proc/bullshit |
22:55:45 | * | a_b_m joined #nim |
22:59:12 | * | abm quit (Ping timeout: 245 seconds) |
23:03:33 | * | a_b_m quit (Quit: Leaving) |
23:04:08 | * | actuallybatman joined #nim |
23:04:48 | * | nif quit (Quit: ...) |
23:06:59 | * | nif joined #nim |
23:25:04 | * | absolutejam1 quit (Ping timeout: 268 seconds) |
23:27:07 | * | matlock quit (Read error: Connection reset by peer) |
23:39:48 | FromGitter | <mratsim> /proc/cpuinfo I hate thee |
23:44:16 | * | krux02_ joined #nim |
23:46:53 | * | krux02 quit (Ping timeout: 250 seconds) |
23:50:18 | * | wildtrees quit (Quit: Leaving) |
23:55:03 | * | Hideki_ joined #nim |