<< 05-09-2019 >>

00:11:44FromGitter<awr1> closed the ptrops PR, lol
00:13:09owl_000why it works, (last line should work instead, second last) https://play.nim-lang.org/#ix=1UiC
00:13:20FromGitter<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:52FromGitter<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:37krux02_awr1: when you don't have a personal use case for something, then why do you propose it anyway?
00:21:14krux02_it always feels bad to rejects pull requests. on both sides.
00:21:33FromGitter<awr1> because i saw it in the nim forum enough to feel like maybe enough people wanted it
00:21:49krux02_yea ok.
00:22:01krux02_then there is an indicator of a problem here.
00:22:30krux02_So maybe you could add something to the documentation on how to do pointer arithmetics properly in nim (with `ptr UncheckedArray[T]`)
00:23:00FromGitter<awr1> i'm not offended by a rejected PR, i think the discussion was worth having.
00:23:16FromGitter<awr1> i agree with that
00:23:31FromGitter<awr1> i might do a PR for an addition to the manual
00:24:03krux02_cool, additions to the manual are always welcome.
00:24:37*owl_000 quit (Ping timeout: 250 seconds)
00:33:33FromGitter<awr1> has anyone ever suggested making csources a submodule?
00:34:24FromGitter<awr1> oh https://github.com/nim-lang/Nim/pull/2649
00:45:06rockcaveraIs it possible for two or more threads accessing the same read-only global seq?
01:00:02FromGitter<awr1> if the global seq is not written-to while both threads are accessed, it should be safe.
01:00:28FromGitter<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:43leorizeAraq: I've looked into nimsuggest's project finding, it couldn't find the project file of a simple nimble-based package...
02:33:34FromDiscord_<Zuup> How can i quit a nim program with also garbage collecting?
02:35:15leorizecall GC_fullcollect() beforehand
02:35:28leorizeusually it doesn't matter, the OS would free the memory held by the program upon exit
02:39:24FromDiscord_<Zuup> also how do i deal with recursive includes?
02:40:16leorizerecursive package deps?
02:40:46leorizeyou put all type declarations into one file, that's the simplest way
02:42:14leorizealthough if you have a detailed example I might figure out something else
02:44:52FromDiscord_<Zuup> So i have this file, environment.nim that needs to use things from type.nim
02:44:52FromDiscord_<Zuup> https://gist.github.com/Pancakeddd/a9484a867ad168cd4ea4b373c8f65051
02:44:52FromDiscord_<Zuup> but i also have type.nim that needs the Environment type for ObjectFunction
02:44:52FromDiscord_<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:03leorizethere's a way to this, but it's not recommended
03:06:12leorizeimport type from environment
03:06:32leorizein type.nim, import environment *after* ObjectType declaration
03:06:56leorizethen it will work when you compile environment.nim
03:07:10leorizehowever if you compile type.nim it wouldn't work
03:07:34leorizethe 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:13FromDiscord_<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:34owl_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:06PMunchWhat error?
08:14:12PMunchowl_000 ^
08:16:44owl_000https://paste.ofcode.org/sZnyihRyzk4W5YxvVwnsWM this code
08:18:08owl_000https://play.nim-lang.org/#ix=1Uke playground
08:18:46PMunchAh, it's caused by the universal call syntax: https://play.nim-lang.org/#ix=1Ukf
08:19:00PMunchEssentially it parses it as (field.area())[int]()
08:19:30PMunchBut you don't need [int] when Nim is able to infer the type :)
08:20:56owl_000thanks, 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:32PMunchYeah, 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:46PMunchE.g.: https://play.nim-lang.org/#ix=1Ukg
08:28:11PMunchNote that `area` now always take a Rectangle[int], but the return type can be changed
08:28:17PMunchThen you have to specify
08:28:55PMunchBy 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:28PMunchOf course that would override the default echo output
08:29:51cremIs 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:04cremAh it does python/javascript/C#-like await?.. Meh..
08:32:53PMunchHmm, there is this: https://nim-lang.org/docs/coro.html
08:32:59PMunchNot sure how/if that works though
08:33:10cremyes, that's the only think I found, but there's no example.
08:34:32cremIf it just works with any function, would be unbelievably amazing...
08:36:18Zevvcrem: coro is discouraged and hardly supported
08:37:20leorizeasync is currently the most well supported way...
08:38:41cremSo async/await? That's inconvenient as hell. Especially as for some reason most of languages don't do await by default..
08:39:50leorizeI find it easy enough to use
08:39:58leorizeadd {.async.} to your proc
08:40:01PMunchasync/await isn't great..
08:40:03leorizeuse await where needed
08:40:08leorizekinda done :P
08:40:10PMunchIn general, the Nim implementation is pretty nice
08:40:35PMunchOr maybe it's just me who haven't got the hang of it
08:40:52PMunchWhy is coro discouraged?
08:41:07PMunchOf course you can always spin up a thread
08:41:13leorizebecause it's unmaintained?
08:41:27leorizealso it depends on a removed part of posix
08:41:44leorizethe alternative is a lot of setjmp iirc
08:41:52PMunchAh
08:44:44ZevvI believe coros create actual C stack frames for each coro
08:44:55*laaron quit (Remote host closed the connection)
08:44:55Zevvwhich is a hack, basically, and not portable to JS
08:45:16cremYou need stack in some way for coroutines anyway.
08:45:19*laaron joined #nim
08:45:20ZevvI wonder if asyncmacro-alike voodoo could be used to create an alternative coro implementation that does not require stack frames
08:46:02Zevvyou could transform a proc and move all local/stack out and make it into a closure
08:46:24leorizeisn't the point of coro is to spawn proc without having to modify them?
08:46:28Zevva yield() is transformed into a return, and the proc is split up into multiple procs that share these upvalues
08:47:17Zevvupvalues is not a nim-word is it? Is there a name for variables that are part of a closure?
08:49:44leorizecaptured variables? :P
08:50:18Zevvyeah, "upvalue" is Lua-lingo, I like that word better :)
08:51:36ZevvI 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:58FromGitter<mratsim> Which part of removed posix coros rely on? AFAIK neither ucontext nor setjump were removed
08:55:19leorizeucontext has already been removed
08:55:20FromGitter<mratsim> And the last backend is windows fiber which was never part of Posix to begin with ;)
08:55:40leorizeglibc still supports it though :P
08:56:23cremMy 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:15Zevvand again we have https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/ :)
08:57:16cremYou'll have to get dispatch queue from somewhere, and ensure it's not in use by another thread.
08:57:22cremYes.
08:58:07cremBut in Go and Kotlin coroutines is a pure joy!
08:58:27Zevvsame with lua
09:00:09cremAlso I like C++, but coroutines in C++20 scare me. :)
09:02:28ZevvAlso I like coroutines, but C++ scares me
09:05:05ldleworkC# coroutines are great as well
09:08:30*actuallybatman quit (Quit: leaving)
09:10:11PMunchHmm, it should be possible to implement coroutines on top of iterators in Nim
09:10:20Araqwhat-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:34Araqgreat insight
09:10:40FromGitter<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:45PMunchAs 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:30ZevvPMunch: but closure iterators down run in the nim vm or js, right
09:17:41FromGitter<mratsim> I'd like csources to be a submodule as well so that it's easier when bisecting
09:21:16PMunchSimple coroutine implementation based on the wiki article: http://ix.io/1Uks/Nim
09:21:31PMunchBased on this: https://en.wikipedia.org/wiki/Coroutine#Comparison_with_generators
09:22:28PMunchNow 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:20Araqcsources are archived now
09:24:26Araqthey don't change anymore
09:25:00*floppydh joined #nim
09:26:52FromGitter<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:18FromGitter<arnetheduck> all the old ones are broken obviously becuase they check out a random fresh csources
09:29:58Araqyeah, that is what we did, albeit in a different way that you were suggesting
09:30:40*actuallybatman joined #nim
09:30:45FromGitter<arnetheduck> fair
09:30:49Araqthere 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:22Araqwe also checked nightlies
09:31:38FromGitter<arnetheduck> sounds tricky to maintain over time, with compiler magics and compilerprocs and all
09:31:42Araqto the best of our knowledge the full infrastructure works with this solution
09:32:11Araqwithout having to patch the various scripts that are used to build nim
09:32:51Araqin the long run it might be tricky, we'll see
09:33:21FromGitter<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:29Araqbut in the past the updates to csources were what caused the actual harm, everything was fine *until* we created a new release...
09:36:18FromGitter<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:51Araqhmm? I only need a nim.exe and that's what csources provide
09:40:09AraqI can even switch to a different lib/ layout
09:41:29AraqI cannot use new language features in the nim compiler though
09:42:02Araqbut 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:07FromGitter<arnetheduck> yeah, that's what I mean - ie if compiler sources are using stuff from `lib/`, that creates a bootstrapping problem
09:50:12euantorAny ideas what might cause an IOError about file not found "iterators.nim"? https://www.irccloud.com/pastebin/1d8IXory/
09:50:26Araqwe'll see what happens :-) the core problem is that everybody does the build wrong
09:50:34Araqcompletely wrong.
09:51:25Araqyou 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:24Araqbut nobody does that, including every piece of our very own infrastructure
09:56:59FromDiscord_<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:21Araqwant me to read it? :P
10:02:26FromGitter<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:17Araqnot buying it, curl and untar are as common as git
10:06:40FromGitter<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:40FromGitter... graph to move back and forwards in that history
10:07:20Araqyet you couldn't be bothered to checkout the *tagged* csources commits
10:07:58*laaron quit (Remote host closed the connection)
10:08:28FromGitter<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:58Araqand how should build_all.sh deal with it? it's part of the Nim git repo
10:09:20Araqso obviously it should use "latest" because that's what a "build from source" means
10:09:36Araq"build from source" doesn't mean "frozen in time", it means the opposite
10:10:35*laaron joined #nim
10:10:35FromGitter<arnetheduck> build_all should checkout `csources` that worked at the time the checked out `build_all` is from
10:11:36FromGitter<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:10FromGitter<arnetheduck> that's kind of the whole point of git: to atomically capture a moment in time when stuff works/worked
10:13:01Araqin other words, 'build_all.sh' should have a manually managed version inside
10:13:05FromGitter<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:35FromGitter<arnetheduck> yes! or automatically or a submodule or whatever.
10:14:07Araqyeah, I don't like it, and already it causes friction and work with koch.nim and its silly nimble hash
10:16:36FromGitter<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:36FromGitter... of us try to reproduce what you did, we have the necessary information at hand
10:17:39Araqthat'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:33Araqand build_all.sh wasn't even written by us, I was weak and accepted the PR though
10:18:37FromGitter<arnetheduck> and I have to avoid the readme/explicit instructions in the repo and invent something myself
10:19:27narimiranso the solution is to have "if you want to build an older version" section in the readme?
10:19:33FromGitter<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:05Araqthe CIs don't use build_all.sh ;-)
10:20:12FromGitter<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:14Araqgit clone --depth 1 https://github.com/nim-lang/csources.git # this line is everywhere
10:20:45FromGitter<arnetheduck> well, that's what build_all does, so equivalent
10:21:00Araqyes but this line is *duplicated* quite a bit
10:21:27Araqincluding in who-knows-where setups that build Linux packages
10:21:31FromGitter<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:51Araqwhen the instructions where written, git clone --depth 1 https://github.com/nim-lang/csources.git worked :P
10:22:01Araqyou see the problem?
10:22:40Araqnobody writes instructions thinking about "huh, what if somebody checks out an older version via git"
10:22:44FromGitter<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:58Araqwell 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:18FromGitter<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:56AraqLOL, ever tried to build an old GCC?
10:27:15Araqbut that's all besides the point
10:27:34Araqas I said, the 'git clone csources' is out there in the wild and we cannot fix every instance of it
10:28:24FromGitter<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:53Araqwell and your solution only fixes a subset of the problem.
10:30:10*abm joined #nim
10:31:33FromGitter<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:47AraqI 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:36AraqI could write a file in the common syntax of Bash and .bat files so that it's useful from everywhere, maybe
10:35:55Araqand then I "only" have to keep it up-to-date in one place
10:36:03Araqoh wait, nightlies, so two places
10:36:55FromGitter<mratsim> If csources were submoduled, checking out an old Nim would also checkout the old csources so build_all would still work
10:37:11FromGitter<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:49FromGitter<mratsim> And then I could have an auto bisect script
10:37:50FromGitter<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:08Araqappveyor cannot use "build_all.sh"
10:38:10FromGitter<arnetheduck> bisecting will work indeed, like mamy says
10:38:21FromGitter<arnetheduck> no, it can use build_all.bat that does the exact same thing
10:38:33Araqyeah it's great
10:39:10FromGitter<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:11FromGitter<arnetheduck> all they need to do is to do the `clone`->`submodule update --init`
10:42:18Araqmeh, 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:33Araqsince I can build Nim without cources, there is no submodule dependency here.
10:43:36FromGitter<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:36FromGitter... 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:42FromGitter<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:13AraqNim doesn't have a Nimble dependency either. We use it for testing things.
10:46:51FromGitter<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:26leorizewell the nimble dep is written in koch.nim
10:47:30leorizethere's a commit hash there
10:47:37Araqyeah and it sucks
10:48:22FromGitter<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:39FromGitter<arnetheduck> why does it suck, btw?
10:48:55AraqIt'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:30FromGitter<arnetheduck> how could it possibly cause ongoing costs? you only ever need to touch it when nimble is broken and needs updating?
10:49:44Araqbecause 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:46FromGitter<arnetheduck> it isolates you from the cost of breakage in nimble
10:50:53FromGitter<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:44Araqactually I can build nimbus with a code change of 3 lines with Nim devel
10:51:46FromGitter<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:14Araqand 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:42Araqand afaict your build also doesn't nail down the version of GCC or make that you use
10:52:48FromGitter<arnetheduck> well, I'm glad ;) maybe we can finally update if those fixes are ported back to a stable branch
10:52:59FromGitter<arnetheduck> no, we don't (yet). our official builds will.
10:53:04*kungtotte quit (Ping timeout: 246 seconds)
10:53:27Araqand then you will be in "I need GCC 4.8" business
10:53:32*laaron quit (Remote host closed the connection)
10:53:35Araqand what are you gonna do? I'll tell you
10:53:45Araqyou select GCC-4.8, prebuilt
10:53:58FromGitter<arnetheduck> nope, we'll docker, most likely ;)
10:54:01Araqyou don't fuck around with 'git cloneing' it
10:54:24FromGitter<arnetheduck> which, incidentally, can be "cloned" just like git, with a hash
10:54:44FromGitter<mratsim> We'll probably have continuous deployment/nightlies
10:54:46Araqyeah but then you also need a version of GCC to build it...
10:54:51FromGitter<mratsim> Built within the CI
10:55:10Araqas it's written in C(++). you cannot win this battle, you always start with a binary you have to trust
10:55:24FromGitter<arnetheduck> that's fine. we also will not lock down the CPU, motherboard and factory making those.
10:55:27FromGitter<mratsim> We trust what passed the CI
10:56:44FromGitter<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:10Araqyeah but to lock down Nim is just
10:57:22Araqdownload nim.$version.tar.xz
10:57:46AraqI know, I know, you don't like it and so you're happy in creating more work for me
10:57:57FromGitter<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:14FromGitter<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:47AraqI archived csources and they are not broken anymore :P
11:00:15Araqbut yeah, it's different than your solution and everything that's different than that is "broken", got it
11:00:56Araqcan't argue against this crystal clear logic here.
11:01:07*laaron joined #nim
11:03:33FromGitter<arnetheduck> well, I used your solution before, in my own projects. then the world moved on and the facts changed ;)
11:05:50AraqZevv, can you check https://github.com/nim-lang/Nim/pull/12131 please?
11:05:51FromGitter<arnetheduck> what does "archived csources" mean btw? the github repo is locked?
11:06:04Araqyes, it's locked
11:06:31FromGitter<arnetheduck> ah. ok, let's see how long it takes until you find the unlock button ;)
11:06:43AraqI ensured it exists before I did that
11:06:46Araq:P
11:07:32*absolutejam1 quit (Ping timeout: 245 seconds)
11:07:43FromGitter<arnetheduck> and you're not one of those that thinks of people from the future reading what's written today. got it ;)
11:11:03ZevvAraq: can't right now, but @leorize might
11:14:05*laaron quit (Remote host closed the connection)
11:16:04PMunchHmm, is there a "compare strings as if they were Nim idents" procedure in the stdlib yet?
11:16:08*laaron joined #nim
11:16:43PMunchEssentially `assert compare("myAwesome_proc", "my_awesomeProc") == true`
11:16:52Zevvnot 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:55Zevvbut couldn't find it
11:17:51PMunchI frequently find myself needing one when working with macros
11:18:02Araqmacros.eqIdent
11:18:06Araqis the only thing we have
11:18:40*Hideki_ joined #nim
11:19:15*clyybber quit (Remote host closed the connection)
11:20:00PMunchIs 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:57ZevvOh 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:24narimiranPMunch: https://nim-lang.github.io/Nim/strutils.html#cmpIgnoreStyle%2Cstring%2Cstring ?
11:23:33Araqnarimiran, it's wrong :P
11:24:21PMunchYeah 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:48narimiranAraq: its wrong for idents, but it might be ok for strings that PMunch want to use?
11:25:14Araq 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:49PMunchnarimiran, essentially I keep a table of procedure names -> id mappings and I wanted to check if one existed
11:26:58PMunchSo I guess I need a normaliser instead..
11:27:09PMunchSo I can use hasKey(normalise(procName))
11:27:24AraqPMunch, it's fine to ignore this problem IMO
11:27:27Zevvyes, and *that* was what I couldn't find :)
11:27:39PMunchAraq, ignore what problem?
11:27:54Araqthis whole identifier normalization business
11:27:59*Hideki_ joined #nim
11:28:29Araqif somebody actually uses fooBar and foo_bar inconsistently, just let it fail
11:28:35PMunchWhy? Nim is not sensitive to differences in procedure names, so why should my macro be?
11:28:47*laaron joined #nim
11:29:44PMunchHmm, what is the best exception to throw when I get invalid input in a macro?
11:30:12PMunchOh wait, I'm supposed to use "error" :P
11:30:37AraqPMunch, because it's simpler and nobody cares ;-)
11:30:46PMunch...
11:30:55PMunchI still think we should have a normaliser in the macros module..
11:31:07PMunchAt least since we have eqIdent
11:32:25Araqsure, add one
11:32:48ZevvPMunch: there is an issue somewhere with implementation and discussions
11:33:25ZevvPMunch: got it: https://github.com/nim-lang/Nim/issues/10064
11:34:38*krux02 quit (Ping timeout: 245 seconds)
11:35:41PMunchWell that's not really an implementation of a normaliser
11:35:55PMunchIt should be easy though, lowercase everything but the first character, and remove all underscores
11:36:44Zevvisn't that what the proposal normalizeStyle() does?
11:37:54*clyybber joined #nim
11:38:59PMunchOh right, didn't actually read the entire thing :P
11:39:00PMunchMy bad
11:39:29PMunchIt's a bit aggressive though
11:39:39PMunchWould 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:34PMunchIs it possible to do something similar to stdout.write on compile-time?
11:46:40ldleworkIs there a Nim Discord?
11:47:30*theelous3 joined #nim
11:47:36FromGitter<mratsim> Yes it's bridged here
11:47:52FromGitter<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:48FromGitter<arnetheduck> how's normalization and international character sets doing?
11:54:20*Hideki_ joined #nim
11:54:28cremBridged chat is pretty poor experience. I left it after a year of hanging there or so.
11:54:54ldleworkI 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:42Hideki_Hi disruptek, I really like nim. I'm coding OpenAPI codegen for Nim (https://github.com/OpenAPITools/openapi-generator)
12:00:53shashlickThat's great @Hideki_
12:02:28*laaron quit (Remote host closed the connection)
12:02:57Hideki_:D
12:04:22*laaron joined #nim
12:04:53*clyybber joined #nim
12:05:08*nsf quit (Quit: WeeChat 2.5)
12:07:23Hideki_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:50Hideki_but it's ok. I decided to give other names each other.
12:15:54PMunchHmm, 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:09Araqmacros.unpackVarargs ?
12:20:16AraqparseExpr?
12:20:28*arecaceae joined #nim
12:20:46PMunchDid something else with a macro, that works a bit better
12:20:53*absolutejam1 quit (Ping timeout: 245 seconds)
12:23:02FromGitter<mratsim> @crem we have a nice Gitter<->Discord bridge for the nimbus chat
12:23:04*absolutejam1 joined #nim
12:24:23cremWhat makes it nice?
12:26:40disruptekit's rarely snarky.
12:28:11disruptekHideki_: so am i! want to combine? https://github.com/disruptek/openapi
12:29:18FromGitter<mratsim> Names are well forwarded and code snippets work from both end
12:30:31PMunchcrem: https://github.com/PMunch/nim-coroutines/blob/master/examples/example.nim
12:30:58PMunchPolished the coroutines based on iterators thing a little bit, in case you want to have a look at it :)
12:32:39cremCan I run coroutine function just normally? (not as coroutine, so that it behaves like it was not a coroutine)
12:34:49cremAnyway, I was just curious, thanks. Nim async/coroutines support may be good and convenient, but it's not awesome :)
12:35:15PMunchWell, the coroutines get rewritten to return an iterator, so you would have to handle that..
12:35:27PMunchAnd currently that doesn't handle iterators that complete
12:37:50Hideki_disruptek wow! lol. I'm developing it based on Swagger(OpenAPI) codegen template. Unfortunately, I have to code many Java than Nim...
12:37:53Hideki_https://github.com/hokamoto/openapi-generator/blob/nim-client/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/NimClientCodegen.java
12:37:54Hideki_https://github.com/hokamoto/openapi-generator/tree/nim-client/modules/openapi-generator/src/main/resources/nim-client
12:39:25Hideki_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:30PMunchcrem, 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:51PMunchIf you have an example of the usage you would want I could try to emulate it :)
12:41:55dom96when did this `:` in import syntax get introduced? https://forum.nim-lang.org/t/5172
12:42:50PMunchIsn't that just a path?
12:43:00FromGitter<mratsim> When you were developing on Unix? :p
12:43:17cremMaybe 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:17FromGitter<mratsim> I wasn't aware of that either
12:43:37FromGitter<mratsim> Wouldn't that break on non-windows
12:44:04FromGitter<mratsim> I'm already annoyed at Nim being happy with case insensitiveness imports on Windows
12:44:10disruptekHideki_: ah, my version just takes json input at compile-time and produces/evaluates nim directly.
12:46:03AraqI'm unhappy with Unix. With all of it, including its support for overly long bullshit filenames ;-)
12:46:23Araqcannot create directory at 'json_tests_v0.8.3/general/phase0/bls/sign_msg/small/sign_msg_0x263dbd792f5b1be47ed85f8938c0f29586af0d3ac7b977f21c278fe1462040e3_0x0000000000000000000000000000000000000000000000000000000000000000_0x0000000000000000': Filename too long
12:47:23PMunchcrem, ah yeah this only runs on a single thread..
12:47:23Hideki_disruptek: oh. it's cooler than mine :) But, it's ok there are two generators, isn't it?
12:47:33PMunchSo you won't get any performance benefit from it
12:47:44disrupteksure, variety is the spice of life.
12:47:53PMunchHmm, I guess you could run these on a thread though..
12:48:36cremI don't need performance benefits, I need convenience.
12:49:09PMunchcrem, 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:20cremAgain, 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:43shashlick@Hideki_ it is great to have Nim represented in the official repo ye
12:49:46cremYes, goroutines in go is this feature done right.
12:50:13cremhttps://gobyexample.com/goroutines
12:51:57cremIn 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:03Araqthanks for teaching us, we don't know how Go works
12:55:33cremI was responding to PMunch question. I'm sure you know how go works.
12:56:01PMunchAraq, bear with me, I'm sick and haven't used Go in ages :P
12:56:19Cadeyi just wish that nim could split async up into multiple threads
12:56:43PMunchIt can, can't it?
12:56:57PMunchYou can run async on multiple threads, no?
12:57:36shashlicki had gotten spawn and async to work together a couple years ago
12:57:48shashlicknever maintained it tho but it is posted online
12:58:59*krux02 joined #nim
13:01:07PMunchHmm, I think the Go kind of coroutines would need some deeper integration..
13:02:29dom96Araq did you introduce that syntax?
13:03:22Araqdom96, it's an emergent property of the system...
13:03:28PMunchAccording 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:36dom96Araq what?
13:03:52CadeyPMunch: goroutines are more like threads than coroutines
13:04:01Araqdom96, meh too long to explain
13:04:04dom96`import v:/path` is what I'm referring to
13:04:09Araqlet's just say I thought we fixed it
13:04:23dom96how can this be an accidental feature?
13:04:49Araqbecause it's actually valid Nim syntax, :/ can be an operator
13:05:00dom96oh, this person is actually importing a full path on Windows
13:05:17dom96I thought this was some crazy new syntax that means "import V from this path"
13:05:31cremPMunch: yes, all I/O is some magic rather then calling blocking syscall. Kotlin coroutines is the same idea.
13:05:59Cadeygo actually does call blocking syscalls syncly
13:06:12Cadeygoroutines that aren't able to run on that thread that is blocked get migrated to another thread
13:06:35disruptekPMunch: 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:04disruptekie. a proper "is it a valid nim identifier" and a proc to "convert this random string into a valid nim ident".
13:09:27disrupteki 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:59shashlick@dom96 - i skipped tests for those PRs since both were very simple fixes
13:27:31*Kaivo quit (Ping timeout: 268 seconds)
13:29:10PMunchdisruptek, link to those procs?
13:29:22PMunchYeah the JSON-schema stuff is pretty nice :)
13:29:52disruptekhttps://github.com/disruptek/openapi/blob/master/codegen.nim#L107
13:30:26disruptekhttps://github.com/disruptek/openapi/blob/master/spec.nim#L389
13:31:37*Kaivo joined #nim
13:32:30disruptekleorize: 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:06leorizedisruptek: are there messages in :messages?
14:20:34*nsf joined #nim
14:20:38leorizealso it would be nice if I can have a test example
14:20:38disrupteknope.
14:21:03disrupteki mean, it doesn't work for completion anywhere.
14:21:31disruptekoh, i got a message this time. "...stopped with exitcode: 1"
14:22:09disruptekis there a debug mode?
14:22:18leorizethat means I've managed to crash nimsuggest again
14:22:27leorizewell I'm gonna add that in a bit
14:22:45disruptekno biggie; master works great for me πŸ˜‰
14:22:52leorizegotta read up on how people create virtual buffers so I can store logs there :P
14:23:14disrupteki don't envy you.
14:25:14leorizeoh, I know why it doesn't work now
14:25:26leorizeI renamed a function and forget to rename it in the caller
14:25:35*leorize facepalms
14:26:38leorizedisruptek: just pushed to github, please give it an another try
14:27:27disruptekno joy.
14:27:37*laaron joined #nim
14:28:11disrupteki don't think it's actually running nimsuggest.
14:28:53disruptek'cause the last lines of messages don't include any nimsuggest crash.
14:39:57shashlick@leorize I'm using neovim with your plugin full time now
14:40:54shashlickDoesn't work on windows but fine on Linux and osx
14:47:29disruptekhey, it's fixed.
14:48:24disruptekleorize: 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:16FromGitter<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:28Araqgeotre: 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:59FromGitter<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:10FromGitter<awr1> RE: the csources convo from earlier
18:06:41Araqas I said, csources give you starting nim.exe, nothing more, nothing less
18:07:02Araqthe nim.exe then builds a newer nim with C++ as default
18:07:15Araqor whatever the new Nim does.
18:07:34*laaron quit (Quit: ZNC 1.7.1 - https://znc.in)
18:07:56FromGitter<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:07FromGitter<awr1> *changes
18:08:12*laaron joined #nim
18:09:50FromGitter<awr1> gah i swear i have some kind of pseudo-dyslexia, but only when i write/type things
18:10:15Araqat least the CI coverage for 'nim cpp' is really good now
18:10:53FromDiscord_<treeform> Araq, what about CI coverage for nim ccp with vcc?
18:11:08FromDiscord_<treeform> Araq, what about CI coverage for nim cpp with vcc?
18:12:03FromDiscord_<treeform> how much do you care about vc++ support?
18:13:37*Trustable quit (Remote host closed the connection)
18:13:46Araqgive 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:05FromGitter<awr1> https://github.com/nim-lang/RFCs/issues/152
18:16:25FromDiscord_<treeform> Araq, I don't know what appveyor is.
18:16:26*absolutejam1 joined #nim
18:17:27shashlickTravis, appveyor, azure pipelines, etc - CI
18:18:08FromDiscord_<treeform> I can't even get docker to work... I don't think I am the right person for this.
18:19:46FromGitter<awr1> i am no CI expert but from what I have guessed: appveyor can use windows and travis is just linux?
18:19:50FromGitter<awr1> correct me if i'm wrong
18:20:08shashlickTravis does windows
18:20:40FromGitter<awr1> i noticed what the Nim appveyor stuff seems to do is check tests against a bunch of third party nimble packages
18:20:54Araqnot only, but also, yes
18:21:15Araqit's the best thing we ever did for Nim's stability...
18:21:22shashlickTravis does osx as well so is pretty cool
18:23:22FromDiscord_<treeform> it looks like appveyor does not do osx
18:24:11shashlickNope
18:24:37Araqappveyor has the much better UI though
18:24:55disruptek242354 lines compiled; 86.563 sec total;
18:25:01disruptekoops
18:25:08Araqand distributing the work to different CIs is good as long as we're waiting for the Azure Pipelines solution
18:27:14FromGitter<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:22FromGitter<awr1> nevertheless i've never seen it used in that context
18:27:36*Hideki_ joined #nim
18:28:59Araqwhat does that mean?
18:31:31FromGitter<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:09Araqmingw on OSX is not something I wanna use
18:33:45disruptekrude.
18:34:36disrupteki'm j/k, of course. i did osx for 10+ years and managed to avoid it.
18:34:51disruptekmuch happier back in linux land.
18:36:14FromGitter<awr1> eh it would just be "ideal" to have one machine that can do everything
18:36:20FromGitter<awr1> but practical reality gets in the way of that
18:37:11*Hideki_ quit (Ping timeout: 258 seconds)
18:37:34Araqin the 90ies we had it, everybody used Windows :P
18:37:46disruptekmy experience was that osx wasn't a better unix, especially in terms of how it aged.
18:39:25FromGitter<awr1> i wonder if it was all possible to cross-comp to pre-OSX macintoshes during the win9x era
18:39:32Araqhow 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:24lqdev[m]I'm afraid Nim doesn't have signal handling.
19:13:32*ng0 joined #nim
19:19:47*doesntgolf joined #nim
19:24:24FromGitter<brentp> @Araq posix?
19:31:34*clyybber joined #nim
19:35:09*abm joined #nim
19:42:54*rockcavera joined #nim
20:09:18FromGitter<geotre> Ok thanks @Araq
20:21:10disruptekanother 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:59dom96argh, so many problems everywhere
20:27:54Araqbrentp: 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:46shashlicktesting
22:37:14FromGitter<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:35FromGitter<Varriount> Araq: The windows API is... Interesting
22:51:57FromGitter<Varriount> But at least it has descriptive function and parameter names.
22:52:29*actuallybatman quit (Ping timeout: 258 seconds)
22:55:39Araqwell 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:48FromGitter<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