00:02:39 | * | tauplus joined #nim |
00:06:40 | * | luis_ quit (Quit: luis_) |
00:07:03 | * | tauplus quit (Remote host closed the connection) |
00:13:19 | * | rockcavera joined #nim |
00:15:46 | * | ng0 quit (Quit: Alexa, when is the end of world?) |
00:24:47 | * | uu91 quit (Read error: Connection reset by peer) |
00:25:05 | * | uu91 joined #nim |
00:28:10 | FromDiscord_ | <mratsim> @Kaynato |
00:28:10 | FromDiscord_ | <mratsim> > I'm calling a function imported from c that takes *float as an arg, since it consumes arbitrary length float arrays. How do I pass it the right value from nim? |
00:28:10 | FromDiscord_ | <mratsim> |
00:28:11 | FromDiscord_ | <mratsim> Use ptr UncheckedArray[float32] |
00:28:53 | FromDiscord_ | <Kaynato> Thanks, I managed to find a workaround for that earlier, but that's also helpful |
00:29:25 | FromDiscord_ | <mratsim> ptr UncheckedArray allows you to index with pointers |
00:29:27 | FromDiscord_ | <mratsim> just like in C |
00:47:21 | * | norm joined #nim |
00:47:45 | * | norm is now known as Guest94890 |
00:52:15 | * | nixfreak quit (Ping timeout: 250 seconds) |
00:52:35 | * | Guest94890 quit (Quit: Leaving) |
00:53:05 | * | norm joined #nim |
00:53:28 | * | norm is now known as Guest25791 |
00:55:23 | * | Guest25791 quit (Client Quit) |
01:44:30 | FromDiscord_ | <Rika> Oh hi madprops, I commented on your reddit post on lq |
01:47:17 | madprops | Rika, right now it doesn't do much. The screenshots and options show pretty much what it can do |
01:47:23 | madprops | but i'll try to add some stuff to the readme |
02:13:00 | * | Hideki_ joined #nim |
02:17:14 | * | Hideki_ quit (Ping timeout: 240 seconds) |
02:20:32 | madprops | im going to do some kind of video with my code editor to help people get a grasp of how nim is |
02:20:42 | disruptek | how is it? |
02:20:47 | madprops | wondering if somebody could check the text beforehand, to see if im missing something https://paste.merkoba.com/1574648409-zukudu-1 |
02:24:31 | blackbeard420 | anyone else getting "src/Nim/lib/system/jssys.nim(53, 6) Error: 'getCurrentException' is not GC-safe as it accesses 'lastJSError' which is a global using GC'ed memory" when compiling to js with current master. same works in 1.0.2 |
02:29:49 | madprops | plain text: https://paste.merkoba.com/1574648409-zukudu-2 |
02:29:53 | madprops | disruptek: basically that's the script |
02:30:01 | madprops | im going to auto type it, with some "power mode" animations |
02:30:13 | madprops | no narration or anything |
02:30:22 | disruptek | that sounds incredible. |
02:30:30 | disruptek | you're blowin' my mind right now. |
02:30:36 | * | disruptek 🤯 |
02:30:36 | madprops | heh? :d |
02:30:50 | madprops | just don't want to miss some obvious stuff |
03:02:41 | * | rockcavera quit (Remote host closed the connection) |
03:04:09 | FromDiscord_ | <exelotl> "functions can be called without parentheses" made me think it was saying import was a function |
03:05:22 | FromDiscord_ | <exelotl> Maybe the comment should be moved down a couple of lines? Or maybe it will make sense in the context and pacing of the video? |
03:10:00 | FromDiscord_ | <exelotl> If you do move it down I guess you can add another comment to explain what your doing with import strformat |
03:14:10 | FromDiscord_ | <WilliamDraco> ```# Variables are case insensitive |
03:14:10 | FromDiscord_ | <WilliamDraco> # These are the same``` |
03:14:10 | FromDiscord_ | <WilliamDraco> Probably should include the 'except first letter' qualifier there. |
03:14:42 | FromDiscord_ | <WilliamDraco> I also just remembered non-discord people hat the code-box. Sorry. |
03:26:39 | * | endragor joined #nim |
03:42:00 | FromDiscord_ | <Winton> Hi, All |
03:45:35 | * | vesper11 quit (Ping timeout: 252 seconds) |
03:47:07 | * | vesper11 joined #nim |
04:18:44 | * | chemist69 quit (Ping timeout: 276 seconds) |
04:20:16 | * | chemist69 joined #nim |
04:27:26 | sealmove | hi |
04:34:02 | * | nsf joined #nim |
04:42:06 | FromDiscord_ | <Winton> what is the purpose of nim |
04:42:12 | FromDiscord_ | <Winton> ? |
04:42:30 | FromDiscord_ | <Winton> I have 2 weeks learning from this language and it seems very good |
04:42:47 | * | theelous3 quit (Ping timeout: 276 seconds) |
04:58:03 | FromGitter | <zacharycarter> lqdev[m] - why put rdgui in a separate library, if it is only usable with rapid? why not just include it as a module within rapid? |
04:58:15 | FromGitter | <zacharycarter> also some screenshots would be great in the readme |
05:10:41 | * | leorize joined #nim |
05:13:09 | * | leorize quit (Remote host closed the connection) |
05:14:09 | * | leorize joined #nim |
06:10:21 | * | narimiran joined #nim |
06:14:42 | * | Hideki_ joined #nim |
06:19:38 | * | Hideki_ quit (Ping timeout: 276 seconds) |
06:46:40 | * | solitudesf- joined #nim |
06:57:58 | * | LargeEpsilon joined #nim |
07:05:33 | livcd | madprops: should have had a big warning lq is linux only :-) |
07:05:50 | * | NimBot joined #nim |
07:06:59 | FromDiscord_ | <Rika> @Winton nim is multipurpose imo |
07:07:06 | FromDiscord_ | <Rika> you can use it for a whole host of things |
07:17:42 | * | PMunch joined #nim |
07:33:10 | * | ITChap joined #nim |
07:41:15 | * | adeohluwa joined #nim |
08:00:00 | * | gmpreussner quit (Quit: kthxbye) |
08:02:11 | * | dddddd quit (Remote host closed the connection) |
08:04:58 | * | gmpreussner joined #nim |
08:07:09 | FromGitter | <alehander92> hmm |
08:11:23 | lqdev[m] | @zacharycarter because I want to develop it independently of rapid |
08:12:44 | FromGitter | <zacharycarter> so eventually it won't depend on rapid? |
08:13:11 | lqdev[m] | probably not |
08:13:33 | lqdev[m] | I mean, it will depend on rapid |
08:13:41 | PMunch | Hmm, this is a strange bug: http://ix.io/22NS/Nim |
08:13:48 | lqdev[m] | there's a reason it's called *rd*gui |
08:14:10 | lqdev[m] | and regarding screenshots, there's nothing interesting to show just yet |
08:14:16 | FromGitter | <zacharycarter> gotcha |
08:14:23 | PMunch | Oh, and by the way, deadline for FOSDEM talk proposals is tomorrow! |
08:14:35 | FromGitter | <zacharycarter> well - I don't think it's usable for me but hopefully it is for others :) |
08:15:36 | lqdev[m] | as with all my tools, I'm making it primarily for my own needs |
08:16:04 | lqdev[m] | so it may not be what other people really want, but it doesn't really matter for me |
08:17:55 | FromGitter | <zacharycarter> that's understandable - those were just the first couple of questions I had based on your request for feedback |
08:22:41 | lqdev[m] | yeah, right |
08:25:05 | * | gangstacat quit (Ping timeout: 250 seconds) |
08:26:11 | * | njoseph quit (Ping timeout: 246 seconds) |
08:29:21 | FromGitter | <zacharycarter> overall I think the library looks nice - the API looks well thought out and designed. I'm not sure what you're planning on for actually rendering things though, nor what you plan to do about layout |
08:30:36 | lqdev[m] | layout is manual, though I might implement autolayout containers at some point |
08:32:04 | lqdev[m] | rdgui is actually extracted from Planet Overgamma's source code, where I never meant the UI to become exceedingly complex |
08:32:36 | lqdev[m] | where I'd need resizable windows, autolayout, etc |
08:34:01 | FromGitter | <zacharycarter> ah |
08:38:52 | FromDiscord_ | <mratsim> @PMunch, I have a talk for FOSDEM: |
08:38:52 | FromDiscord_ | <mratsim> |
08:38:52 | FromDiscord_ | <mratsim> Design of a ultra-low overhead multithreading runtime processing trillions of tasks per second. |
08:39:08 | Araq | nimx has an auto-layouter iirc |
08:39:42 | FromGitter | <zacharycarter> this is what I plan on using for non-editor GUI for my game: https://github.com/jdryg/vg-renderer#vg-renderer |
08:40:55 | * | njoseph joined #nim |
08:43:53 | PMunch | mratsim, are you serious? Because that would be amazing :) |
08:44:39 | livcd | mratsim: project Picasso ?! |
08:49:11 | * | LargeEpsilon quit (Ping timeout: 265 seconds) |
08:53:52 | * | lritter_ joined #nim |
09:00:44 | FromGitter | <alehander92> guys |
09:00:59 | FromGitter | <alehander92> i want to do something for the debug lines for iterators thing |
09:01:35 | FromGitter | <alehander92> on one hand i see its useful to have them as well , but |
09:01:47 | FromGitter | <alehander92> hm, not really sure what's the best solution here |
09:03:44 | Araq | " it seems that the Nim VM only allows relative addressing up to 32Kbytes VM instructions, larger offsets do not fit in to the IM opcode format." oh my ... always abusing my poor VM |
09:04:23 | FromGitter | <alehander92> ok, i can workaround it in my own project |
09:04:36 | FromDiscord_ | <mratsim> Give them a hand and they will gobble everything 😛 |
09:05:03 | FromDiscord_ | <mratsim> I didn't even finish my compiler as macros. |
09:05:05 | * | LargeEpsilon joined #nim |
09:05:21 | FromDiscord_ | <mratsim> @PMunch @livcd yes |
09:05:35 | FromGitter | <alehander92> me too |
09:05:37 | FromDiscord_ | <mratsim> only annoying thing is doing the slides :p |
09:05:44 | FromGitter | <alehander92> i am not sure what happened, i didnt have time |
09:06:02 | FromGitter | <alehander92> PMunch Araq can give a short Nim 1.0 and the future lecture |
09:06:05 | FromGitter | <alehander92> i hope |
09:06:07 | FromGitter | <alehander92> :P |
09:06:18 | FromDiscord_ | <mratsim> I know what happened for me, lots of flights + writing a multithreading runtime 🙂 |
09:07:02 | PMunch | mratsim, well since the talks are limited to about 20min there aren't that many slides to make :) |
09:07:48 | Araq | meh FOSDEM... when is ita again? |
09:07:56 | PMunch | First weekend of February |
09:08:04 | FromDiscord_ | <mratsim> It's still a couple of hours |
09:08:26 | FromDiscord_ | <mratsim> so who should I send a mail to? |
09:08:30 | PMunch | Yeah that's true, making a good slide deck takes quite a while.. |
09:08:43 | FromDiscord_ | <mratsim> and if I want to do benchmarks, it's a pain |
09:08:43 | FromGitter | <alehander92> i cant come |
09:08:52 | FromGitter | <alehander92> so i hope there are videos |
09:08:59 | FromGitter | <alehander92> they record the talks right |
09:09:00 | FromDiscord_ | <mratsim> Yesterday I wanted to bench against Rust, D, Crystal, V but they have nothing >_> |
09:09:16 | FromGitter | <alehander92> mratsim i did one bench against many languages for zero-functional |
09:09:19 | FromGitter | <alehander92> it is very fun |
09:09:24 | FromDiscord_ | <mratsim> I think the rooms must get organized though |
09:09:36 | PMunch | mratsim, you can propose your talk directly here: https://penta.fosdem.org/submission/ |
09:09:59 | PMunch | alehander42, yeah they are both live-streamed and put on YouTube |
09:10:09 | FromGitter | <alehander92> ok |
09:10:21 | FromGitter | <alehander92> there must be a tool to automate some of this multi-language benchmarking |
09:10:42 | FromGitter | <alehander92> with dependencies + code conventions |
09:10:54 | FromGitter | <alehander92> to be easily changed/ reproducable |
09:12:18 | FromDiscord_ | <mratsim> or alternatively, I can talk about how to add multidimensional arrays support to a language |
09:12:48 | FromDiscord_ | <mratsim> I'll just propose both and you'll filter, don't accept both though |
09:14:10 | PMunch | Haha, okay :) |
09:14:39 | PMunch | I kinda want to hold a talk as well, but I'm not sure what I want to talk about.. |
09:15:59 | * | letto quit (Quit: Konversation terminated!) |
09:16:09 | * | ng0 joined #nim |
09:16:37 | Araq | yummy a nice compiler cleanup |
09:16:41 | Araq | https://github.com/nim-lang/Nim/pull/12718/files |
09:16:43 | disbot | ➥ Cosmetic compiler cleanup |
09:17:00 | Araq | now maybe changing the AST becomes easier |
09:17:26 | * | letto joined #nim |
09:17:28 | FromDiscord_ | <mratsim> the talk submission process is quite cryptic Pmunch |
09:17:30 | * | rokups joined #nim |
09:18:06 | PMunch | mratsim, feel free to PM me if you need guidance :) |
09:20:36 | * | gangstacat joined #nim |
09:21:22 | PMunch | The web-site they use for talk proposals have sorta been jerry-rigged together for something it's not really meant to do :P So it is a bit cludgy |
09:27:12 | * | tklohna joined #nim |
09:29:13 | * | krux02 joined #nim |
09:33:54 | FromDiscord_ | <mratsim> "Submission of paper for proceedings" and "Submission of presentation slides" and Event type |
09:35:06 | FromDiscord_ | <mratsim> why is there a Movie event type >_> |
09:35:25 | FromDiscord_ | <mratsim> what is the delete image checkbox |
09:35:57 | PMunch | Haha, yeah as I said it's not great.. |
09:36:47 | PMunch | Just keep the two "Submission of *" as unknown |
09:37:09 | PMunch | Not sure why Movie is an event type, I guess someone wanted to show a movie at some point.. |
09:37:27 | PMunch | Probably won't be accepted if you try to play the latest Star Wars though :P |
09:37:49 | PMunch | Just guessing, but maybe there was a "Open Source movies" room at some point.. |
09:38:07 | PMunch | The delete image checkbox is if you want to delete the event image, but you don't need one |
09:38:23 | PMunch | I think I just uploaded the Nim crown for my talk last year |
09:38:52 | PMunch | And that checkbox is mostly relevant when you're editing a proposal, not when creating a new one |
09:46:15 | PMunch | Hmm, is it just me or does the signature of this proc look wrong? http://ix.io/22NS |
10:00:43 | * | kevin5 joined #nim |
10:00:54 | FromDiscord_ | <mratsim> I've done both submission, actually you can accepth both, that will be fine. I don't really need much mroe research on those subjects |
10:03:52 | PMunch | mratsim, I can confirm that both submissions are received :) |
10:08:42 | * | clyybber joined #nim |
10:08:50 | * | bacterio quit (Read error: Connection reset by peer) |
10:11:11 | * | Vladar joined #nim |
10:15:16 | * | floppydh joined #nim |
10:16:25 | * | Hideki_ joined #nim |
10:18:11 | FromDiscord_ | <onelivesleft> I have a macro which works on a block of code: `macro get_options_and_presence(body: untyped): untyped =` - this works fine; it returns a tuple of (options, presence). I want to make another macro which just returns options: `macro get_options(body: untyped): untyped =` - inside it I want to call the first macro, and return the first part of the tuple only. How do I pass the `body` parameter from the second into the first? |
10:18:36 | * | JustASlacker joined #nim |
10:19:16 | FromDiscord_ | <mratsim> use getAst or quote do |
10:20:05 | FromDiscord_ | <mratsim> macro get_options(body: untyped): untyped = result = quote do: get_options_and_presence(`body`)[0] |
10:20:10 | Araq | usually better: make both macros call into a common .compiletime proc |
10:20:40 | * | abm joined #nim |
10:20:50 | * | Hideki_ quit (Ping timeout: 240 seconds) |
10:24:27 | clyybber | krux02: Re: Static parameters for .compileTime. procs: How should I overload based on static then? |
10:24:58 | krux02 | clyybber: what do you mean? |
10:26:13 | clyybber | Have a proc like `proc test(v: int) = echo "Runtime"` and a proc like `proc test(v: static int) {.compileTime.} = echo "Compiletime"` |
10:26:33 | clyybber | And I want the latter to be called when I pass an int literal or some other thing that is static |
10:27:55 | PMunch | Hmm, nimterop seems to not work properly with C++ classes |
10:28:43 | FromDiscord_ | <onelivesleft> thanks for above, is working |
10:28:52 | FromDiscord_ | <onelivesleft> will look into compiletime refactor later 😛 |
10:31:13 | clyybber | krux02: It seems to me the problem is that {.compileTime.} isn't reflected in the overloading mechanism |
10:35:41 | krux02 | clyybber: yes {.compileTime.} isn't reflected in overloading mechanism |
10:36:14 | krux02 | so I guess overloading won't help you here. |
10:36:23 | krux02 | but why do you want such a distinction? |
10:36:45 | clyybber | In my use case its for optimization. |
10:38:36 | clyybber | Ideally the static param won't be needed I think |
10:39:01 | clyybber | Because it actually means "static in respect to the vm" here |
10:43:23 | * | kevin5 quit (Remote host closed the connection) |
10:44:42 | * | adeohluwa quit (Ping timeout: 265 seconds) |
10:45:45 | krux02 | clyybber, http://ix.io/22Op |
10:48:02 | * | solitudesf- quit (Ping timeout: 240 seconds) |
10:52:48 | clyybber | krux02: Thank you, ideally this wouldn't be needed though and the overloading mechanism would treat a {.compileTime.} proc *as if* all parameters would be static |
10:53:05 | clyybber | krux02: But thanks, this solves my blocker :D |
10:54:17 | krux02 | yea I think we need to stop to fiddle with the Language with any tiny problem we have and start to use the tools we already have. |
10:58:13 | FromDiscord_ | <onelivesleft> interesting: it works with one macro calling the other as mratsim specified, but if you try to use it twice it hangs the compiler. Now, it should only ever be used once, so not a fatal problem, but I'm not sure why it would do that, or if I can stop it trying to run twice? |
11:04:15 | * | adeohluwa joined #nim |
11:14:28 | * | solitudesf- joined #nim |
11:17:56 | * | LargeEpsilon quit (Ping timeout: 240 seconds) |
11:18:02 | * | dillonb quit (Ping timeout: 240 seconds) |
11:19:38 | * | dillonb joined #nim |
11:21:32 | * | adeohluwa quit (Remote host closed the connection) |
11:27:55 | * | rockcavera joined #nim |
11:28:46 | FromDiscord_ | <mratsim> you probably need to introduce block statement in your macro for proper scoping |
11:32:11 | * | rockcavera quit (Read error: Connection reset by peer) |
11:34:28 | * | disbot quit (Remote host closed the connection) |
11:34:28 | * | lkw quit (Quit: ZNC 1.7.3 - https://znc.in) |
11:39:18 | * | tiorock joined #nim |
11:39:18 | * | tiorock quit (Changing host) |
11:39:18 | * | tiorock joined #nim |
11:39:18 | * | tiorock is now known as rockcavera |
11:39:19 | * | Vladar quit (Quit: Leaving) |
11:39:19 | * | disbot_ joined #nim |
11:39:37 | * | adeohluwa joined #nim |
11:39:37 | Zevv | Anyone planning to do AoC this year? narimiran, you in again? |
11:39:37 | * | lkw_ joined #nim |
11:39:37 | Zevv | 629964-9882e9e9 is the magic number! |
11:39:56 | narimiran | Zevv: of course i'm doing it! it can't go without me! |
11:39:57 | * | LargeEpsilon joined #nim |
11:40:14 | solitudesf- | im doing it, and ready to give up on 15th day, since i cant handle another recursive algorithm |
11:47:00 | narimiran | solitudesf-: last year's day 15 was major PITA, i still haven't solved it nor i plan to |
11:48:17 | Zevv | nah we'll pull you through! I create a priv leaderboard for the Nimmers, code 629964-9882e9e9. |
11:48:17 | Zevv | share the word |
11:48:17 | Zevv | oh, "spread the word", that is |
11:48:18 | FromDiscord_ | <mratsim> replied to your npeg issue @Zevv, given your code snippets that would mean we're limited at 16K symbols in a proc/macros? :/ |
11:48:18 | Zevv | well, within a loop or case that is |
11:48:18 | FromDiscord_ | <mratsim> ah |
11:48:18 | FromDiscord_ | <mratsim> nnkStmtList is fine? |
11:48:18 | FromDiscord_ | <mratsim> mmm no that's not it |
11:48:18 | Zevv | relative jumps are limited to 16 bits. I found some space in some opcodes to extend that, but no general solution becuase the otherwise unused bits are used in some other cases for conditional jumps |
11:48:18 | Zevv | nnkStmtList also fails, each case needs to be able to jump to the end. That is the one we ran into with npeg |
11:48:19 | Zevv | oh no sorry, nnkCaseStmt that was |
11:49:14 | * | solitudesf- is now known as solitudesf |
11:49:19 | narimiran | Zevv: we already have Nim-leaderboard from the last year |
11:49:25 | narimiran | 119 people in it |
11:49:44 | Zevv | oh these last over years, that's great |
11:49:48 | Zevv | nevermind that one then! |
11:50:19 | narimiran | https://nim-lang.org/blog/2018/11/26/advent-of-nim.html -- there you can find the code |
11:50:23 | FromDiscord_ | <mratsim> oh, day 15 is like 3000 lines just for presenting |
11:50:48 | * | adeohluwa quit (Remote host closed the connection) |
11:50:48 | narimiran | and i plan to write forum post about this year's AoC |
11:51:06 | narimiran | @mratsim but there are other tasks that have your name written all over it |
11:52:05 | FromGitter | <Vindaar> @narimiran haha, good to hear you also didn't finish it. That was the day I stopped AoC last year, since I'm too stubborn to miss a day and then didn't pursue it further |
11:52:21 | FromDiscord_ | <mratsim> my name? |
11:52:39 | FromDiscord_ | <mratsim> it's a trademark :p |
11:54:30 | * | adeohluwa joined #nim |
11:54:42 | * | adeohluwa quit (Remote host closed the connection) |
12:01:11 | narimiran | @Vindaar i've solved days 16-22 too. i thought i might return to day 15, but when i had re-read it several months ago i just NOPEd out of there. |
12:03:40 | narimiran | @mratsim e.g. https://adventofcode.com/2018/day/9 -- it screams "optimize me mratsim, optimiiiizeee meee" |
12:04:37 | * | njoseph quit (Ping timeout: 240 seconds) |
12:07:22 | narimiran | @mratsim also, this one is IMO great for you: https://adventofcode.com/2017/day/15 |
12:15:08 | * | njoseph joined #nim |
12:22:23 | PMunch | Hmm, I'm trying to c2nim some .cpp headers |
12:22:35 | PMunch | And in one case an object inherits another |
12:23:05 | PMunch | Which c2nim outputs as: Arduboy2Base* {.importcpp: "Arduboy2Base", header: "Arduboy2.h", bycopy.} = object of Arduboy2Core |
12:23:25 | PMunch | To which the compiler complains that Error: inheritance only works with non-final objects; to enable inheritance write 'Arduboy2Core of RootObj' |
12:24:07 | PMunch | Would that work though? Won't the extra hidden fields mess with the object? |
12:24:14 | FromDiscord_ | <mratsim> Ah I see @narimiran, yeah too busy for AoC 😛 |
12:24:28 | narimiran | that's not a valid excuse, sorry :P |
12:24:38 | clyybber | Araq: Do you want anything else done for #12718 while I'm at it? |
12:24:39 | disbot_ | https://github.com/nim-lang/Nim/pull/12718 -- 3Cosmetic compiler cleanup |
12:25:44 | FromDiscord_ | <mratsim> it may not be valid but it still is mine |
12:42:40 | * | bacterio joined #nim |
12:43:06 | narimiran | ok, Advent of Nim 2019 is officially announced: https://forum.nim-lang.org/t/5588 |
12:44:16 | PMunch | Hmm, seems like that doesn't work.. |
12:44:27 | PMunch | So is there a way to wrap inherited C++ objects in Nim? |
12:46:43 | * | endragor quit (Remote host closed the connection) |
12:48:03 | FromGitter | <alehander92> hm jmp vs jmpq |
12:48:26 | * | theelous3 joined #nim |
12:53:21 | livcd | what other projects besides nimforum and nitter I can look at for inspiration ? |
13:02:11 | * | NimBot joined #nim |
13:10:32 | Zevv | what kind of inspiration are you looking for then? |
13:13:53 | * | owl_000 joined #nim |
13:14:40 | livcd | Zevv: well i am just trying to make sense of karax |
13:15:37 | * | adeohluwa joined #nim |
13:16:48 | * | leorize quit (Ping timeout: 260 seconds) |
13:19:00 | FromGitter | <Vindaar> @narimiran not sure if I should take a look at it again sometime (day 15). probably not, haha |
13:20:11 | * | tklohna quit (Ping timeout: 276 seconds) |
13:25:59 | * | leorize joined #nim |
13:43:45 | Araq | clyybber, it's tough to review |
13:53:57 | * | letto quit (Ping timeout: 240 seconds) |
13:54:43 | clyybber | Yeah, you don't have to review it in its entirety I guess. I'm fairly sure that mistake with replacing len(n) to n.len in a comment was the only one. I checked the others manually. |
14:02:10 | Araq | no, I have to review it completely or else you can insert a Thompson hack into the compiler and every Nim program is compiled with backdoors |
14:02:23 | clyybber | heh, true that |
14:08:04 | Araq | so ... arc works but async is a cyclefest |
14:08:30 | Araq | what do we do now? write an async that works with our new GC? |
14:08:37 | * | Hideki_ joined #nim |
14:09:36 | clyybber | help mratsim? |
14:10:22 | clyybber | Could picassor replace async? |
14:10:23 | Araq | how? |
14:10:36 | Araq | dunno, mratsim? |
14:10:42 | clyybber | Fixing the bugs he reported |
14:11:38 | clyybber | Araq: For example #12722 |
14:11:41 | disbot_ | https://github.com/nim-lang/Nim/issues/12722 -- 3Sink regression on devel: cannot compile the generated C code anymore; snippet at 12https://play.nim-lang.org/#ix=22P4 😏 |
14:11:51 | clyybber | thats a weird one. I don't entirely understand it. |
14:12:17 | Araq | yeah I'm working on that |
14:12:27 | clyybber | nice o/ |
14:13:01 | Araq | well |
14:13:03 | * | Hideki_ quit (Ping timeout: 246 seconds) |
14:13:14 | Araq | the "megatest" breaks with my bugfix for thavlak |
14:13:21 | Araq | and this is mysterious too |
14:13:23 | clyybber | developer? |
14:13:31 | Araq | issue #12722 is next |
14:13:32 | disbot_ | https://github.com/nim-lang/Nim/issues/12722 -- 3Sink regression on devel: cannot compile the generated C code anymore; snippet at 12https://play.nim-lang.org/#ix=22P4 😏 |
14:13:33 | clyybber | a thavlak is a test right? |
14:13:42 | Araq | yeah |
14:13:52 | Araq | it requires https://github.com/nim-lang/Nim/commit/8b2f8f5430e8c328efe5bce94e397f15e3c501af to work |
14:14:05 | Araq | but narimiran reverted it because it makes megatest fail |
14:14:16 | Araq | for unkown reasons, megatest is bad to debug :-/ |
14:14:18 | clyybber | Yeah, with the weirdest error I have seen |
14:14:27 | * | tklohna joined #nim |
14:22:00 | clyybber | disruptek: Did you do benchmarks for gc:destructors/arc with base64? |
14:22:59 | disruptek | yep. |
14:23:09 | clyybber | aaaand? |
14:23:59 | disruptek | i need a different compiler, gimme a sec. |
14:24:34 | PMunch | Woop woop, managed to compile the hello world example from Arduboy in Nim :) |
14:24:48 | FromDiscord_ | <sealmove> What's the default GC now? |
14:25:05 | disruptek | 4.15s arc versus 1.47s for default. |
14:25:28 | clyybber | thanks |
14:25:50 | clyybber | thats pretty bad, but about what I expected :) |
14:25:59 | Yardanico | @sealmove I think it's been `gc` for a long time now :) |
14:26:05 | Yardanico | https://nim-lang.org/docs/gc.html |
14:26:23 | Yardanico | " Deferred reference counting with cycle detection, thread local heap, default." |
14:26:53 | Araq | disruptek, why is it so slow? |
14:27:14 | Araq | and why does it make a difference for base64? It should hardly allocate any memory anyway |
14:27:21 | disruptek | haven't profiled it. |
14:28:42 | clyybber | probably because of the strings |
14:29:04 | * | Hideki_ joined #nim |
14:29:10 | Araq | the strings are faster now for nearly everything I tried |
14:29:33 | disruptek | !pull author:disruptek repr |
14:29:33 | disbot_ | https://github.com/nim-lang/Nim/pull/12716 -- 5replace some runtime repr in stdlib for gc:arc 7& 1 more... |
14:29:51 | disruptek | i guess you can test it, too. |
14:30:44 | disruptek | disbot: experimenting with a new name? |
14:30:48 | FromDiscord_ | <sealmove> What is the idea behind Araqsgc? |
14:31:10 | clyybber | ah, right. the strings werent even using rc in the past.. |
14:31:11 | clyybber | hmm |
14:31:17 | Yardanico | @sealmove harder, better, faster, stronger :D |
14:31:19 | clyybber | sealmove: Mimalloc |
14:36:50 | * | oculux quit (Quit: blah) |
14:37:08 | * | oculux joined #nim |
14:39:16 | Yardanico | as I understand deepCopy doesn't exist for destructors/arc GCs yet? |
14:42:30 | * | oculux quit (Ping timeout: 265 seconds) |
14:46:49 | * | disbot_ is now known as disbot |
14:47:00 | * | Hideki_ quit (Remote host closed the connection) |
14:48:09 | * | Hideki_ joined #nim |
14:49:04 | * | oculux joined #nim |
14:50:26 | * | adeohluwa quit (Remote host closed the connection) |
14:52:18 | * | adeohluwa joined #nim |
14:52:23 | * | Hideki_ quit (Ping timeout: 245 seconds) |
14:53:56 | * | ng0_ joined #nim |
14:56:12 | * | ng0 quit (Ping timeout: 260 seconds) |
14:56:17 | * | Hideki_ joined #nim |
14:56:35 | * | ng0_ is now known as ng0 |
15:01:04 | * | adeohluwa quit (Remote host closed the connection) |
15:03:02 | * | PMunch quit (Quit: Leaving) |
15:05:24 | * | MnlPhlp joined #nim |
15:05:41 | shashlick | @PMunch nimterop doesn't support c++ yet |
15:05:49 | shashlick | You can use c2nImport though |
15:06:47 | * | Hideki_ quit (Remote host closed the connection) |
15:07:29 | * | MnlPhlp left #nim (#nim) |
15:07:31 | * | Hideki_ joined #nim |
15:08:54 | Yardanico | Does "Error: complex object initialization is not supported with --newruntime" mean that I need to define objects as `result = Object(field1: value1, field2: value2)` and not like `result.field1 = value1; result.field2 = value2`? |
15:12:00 | * | Hideki_ quit (Ping timeout: 252 seconds) |
15:12:32 | clyybber | No |
15:12:44 | clyybber | It means that you are using an embedded object field somewhere |
15:12:50 | clyybber | AFAIK |
15:13:03 | clyybber | Araq plans to lift that restriction though |
15:13:28 | Yardanico | I'm just toying with --gc:arc for fun, it seems like the error comes from this function https://github.com/Yardanico/nim-osureplay/blob/master/src/osureplay.nim#L88 |
15:14:54 | clyybber | probably because of the timestamp field. Its a dumb restriction, but fear not for it will be gone |
15:15:00 | Yardanico | ah, okay, thanks |
15:15:53 | Yardanico | yeah, it works without timestamp :) |
15:21:20 | Yardanico | btw, should I report compiler segfaults with `gc:arc` or not yet? |
15:23:01 | clyybber | yeah |
15:23:23 | clyybber | compiler segfaults and codegen bugs always :) |
15:23:31 | Yardanico | (just testing --gc:arc on my social network bot which is quite async-heavy and uses a bit of metaprogramming) |
15:24:08 | clyybber | oh, hmm async is a different story, but the compiler still shouldn't segfault I think |
15:24:28 | clyybber | but expect runtime bugs/crash/leakage with async |
15:26:14 | Yardanico | ok, I get a crash in skipTypes, gonna try to find what code is causing that |
15:26:28 | Yardanico | good thing compiler is easy to edit and debug with koch :) |
15:28:15 | sealmove | Araq: what are your thoughts about extending VM instructions to 64bit? |
15:28:47 | sealmove | Or more generally, since projects like npeg abuse the VM, are they discouraged? |
15:29:04 | sealmove | We need some guidance here ;P |
15:30:04 | FromDiscord_ | <Rika> Yardanico: IVE BEEN BEAT |
15:30:07 | FromDiscord_ | <Rika> noooooooooooooo |
15:30:10 | FromDiscord_ | <Rika> https://github.com/de-odex/circa |
15:30:13 | Yardanico | @Rika ?? |
15:30:23 | Yardanico | ah lol |
15:30:36 | Yardanico | I made nim-osureplay just for fun two years ago XD |
15:30:51 | Yardanico | yours is better probably |
15:30:59 | FromDiscord_ | <Rika> mine is barely finished |
15:31:33 | FromDiscord_ | <Rika> (actually i have a lot of stuff but havent committed them yet because im trying to conform to conventional commits and actually do git correctly) |
15:32:07 | * | Vladar quit (Quit: Leaving) |
15:33:22 | FromGitter | <alehander92> you can commit in a backup branch |
15:33:28 | FromGitter | <alehander92> and then combine several commits |
15:33:34 | FromGitter | <alehander92> i think git is ok for backup |
15:33:52 | FromGitter | <alehander92> i just do backup in my main brancjh |
15:34:08 | FromGitter | <alehander92> i guess with bigger projects its not so good |
15:34:33 | FromDiscord_ | <Rika> i'll prolly do a "temp-all" branch and then fix the commits on other machines (like my laptop)? |
15:34:34 | FromDiscord_ | <Rika> hmm |
15:36:10 | Yardanico | oh wait it seems it actually crashes without --gc:arc as well 🤔 |
15:37:16 | FromDiscord_ | <Rika> 2 year old nim code ¯\\_(ツ)_/¯ |
15:38:09 | * | Hideki_ joined #nim |
15:39:03 | Araq | sealmove, npeg should be fixed to generate some helper procs IMO |
15:39:37 | clyybber | Araq: Which passes results are visible in typed ast via macros? |
15:40:58 | * | abm quit (Ping timeout: 252 seconds) |
15:41:08 | disruptek | !repo readfq |
15:41:09 | disbot | no results 😢 |
15:41:24 | FromGitter | <alehander92> !repo repo |
15:41:26 | disbot | https://github.com/xomachine/SteamForwarder -- 11steam_api.dll implementation for wine. Your windows games now can interact with your linux steam! (This repo mirrors https://gitlab.com/xomachine/SteamForwarder) 7& 24 more... |
15:41:43 | disruptek | !repo fastq kseq parser |
15:41:43 | disbot | no results 😢 |
15:41:46 | Yardanico | !repo mathexpr |
15:41:47 | disbot | https://github.com/Yardanico/nim-mathexpr -- 11Tiny math expression evaluator library implemented in pure Nim |
15:41:53 | Yardanico | nice |
15:41:56 | FromGitter | <alehander92> disruptek look so easy to get results |
15:42:03 | sealmove | Araq: helper procs? you mean building peg grammar programmatically instead of a big fat macro? |
15:42:10 | disruptek | !repo nimreadfq |
15:42:11 | disbot | no results 😢 |
15:42:18 | disruptek | odd. |
15:42:24 | FromGitter | <alehander92> !repo disbot |
15:42:24 | disbot | no results 😢 |
15:42:28 | FromGitter | <alehander92> odd |
15:42:41 | disruptek | !repos /andreas-wilm |
15:42:42 | disbot | https://github.com/andreas-wilm/lofreq3 -- 11LoFreq Version 3 |
15:43:32 | disruptek | ah, nimreadfq is "written in c". |
15:44:06 | FromDiscord_ | <yewpad> Nimble's suddenly not working anymore? Seems like Nim/Nimble is not able parse pragmas anymore |
15:44:19 | disruptek | maybe we need a search that relaxes the language:nim prereq. |
15:44:37 | Yardanico | @yewpad can you share code example via play.nim-lang.org or some other paste service? |
15:45:10 | Yardanico | wow I am lucky, found a invalid c code generation bug and a compiler segfault, need to minimize the repro code though |
15:45:39 | clyybber | !disruptek: Maybe if it contains some nim? |
15:45:59 | FromDiscord_ | <yewpad> |
15:45:59 | FromDiscord_ | <yewpad> https://cdn.discordapp.com/attachments/371759389889003532/648549947595292713/image0.jpg |
15:46:00 | FromDiscord_ | <yewpad> Nim 1.0.2 |
15:46:05 | sealmove | Araq: The problem is we don't understand the limitations of VM, so we don't know what is ok to do and what is not. Could we make a tiny small documentation? |
15:46:07 | disruptek | maybe we just re-issue without language:nim if we have no results. that seems the most smart. |
15:46:09 | FromDiscord_ | <yewpad> nimble 0.9.0 |
15:46:27 | Yardanico | @yewpad can you show your nimble file? |
15:47:10 | FromDiscord_ | <yewpad> default nimble file |
15:47:10 | FromDiscord_ | <yewpad> https://cdn.discordapp.com/attachments/371759389889003532/648550249526329385/image0.jpg |
15:47:13 | sealmove | documentation for noobs* |
15:47:54 | Yardanico | @yewpad hmm, can you show the error fully? I can't see the full error message |
15:47:55 | clyybber | yewpad: Soemthing in your system.nim |
15:48:13 | clyybber | probably old compiler + newer system.nim |
15:48:17 | FromDiscord_ | <yewpad> Yeah, it fails parsing the magic pragma |
15:48:37 | Yardanico | also it seems like you've installed nim via your package manager (maybe arch?), maybe that's the issue for some reason |
15:48:54 | FromDiscord_ | <yewpad> installed with choosenim |
15:49:00 | FromDiscord_ | <yewpad> nah wait |
15:49:10 | Yardanico | you're using nim from your system's install, not from choosenim |
15:49:22 | FromDiscord_ | <yewpad> tarball downloaded extracted moved to use/bin |
15:49:28 | Yardanico | uh |
15:49:36 | * | ITChap quit (Quit: ITChap) |
15:49:39 | FromDiscord_ | <yewpad> usr/bin |
15:50:51 | FromDiscord_ | <yewpad> so i guess updating nim and nimble should do the trick |
15:55:19 | Yardanico | oh, so this cgen bug and compiler crash are related to some invalid macro code |
15:56:02 | Araq | sealmove, I mean npeg needs a patch an Zevv will know what to do :P |
15:56:47 | Araq | what's there to document? "procs containing more than 32K VM instructions don't work" |
15:58:08 | disruptek | #12733 blows my mind |
15:58:11 | disbot | https://github.com/nim-lang/Nim/issues/12733 -- 3existsDir,existsFile can't be used at CT (dirExists & fileExists can); snippet at 12https://play.nim-lang.org/#ix=22Pm 😏 |
15:58:40 | disruptek | i really want a getcurrentdir for compile-time. |
15:58:55 | sealmove | well I don't understand it, probably because I am noob but.. when you say "procs", does it mean each proc is allowed to have up to 32K instructions? the VM run in total? |
15:59:23 | sealmove | so what the limitation? don't make a big fat proc that runs at CT? |
16:00:04 | sealmove | "procs containing more than 32K VM instructions don't work", yes, even this one sentence is worth documenting imo |
16:00:45 | Yardanico | Can anyone confirm that this gives a compiler segfault on latest devel? https://play.nim-lang.org/#ix=22Pn |
16:01:03 | Yardanico | and this gives C compiler error - https://play.nim-lang.org/#ix=22Pp |
16:01:22 | Yardanico | (on nim playground they both give c compiler error though) |
16:02:30 | sealmove | Yardanico: both confirmed |
16:02:37 | Yardanico | okay, time to report them I guess |
16:03:35 | sealmove | varargs should be the last parameter? |
16:04:05 | Yardanico | why though? I specified varargs[string] |
16:04:16 | Yardanico | not varargs[untyped] |
16:04:23 | * | letto joined #nim |
16:04:53 | sealmove | I think it's a limitation of how they work |
16:04:56 | clyybber | no |
16:05:01 | clyybber | only for untyped |
16:05:06 | sealmove | oh ok |
16:05:34 | clyybber | ugh |
16:05:36 | clyybber | nevermind |
16:05:39 | clyybber | sealmove is right |
16:05:48 | * | tane joined #nim |
16:06:03 | clyybber | but they arent disallowed elsewhere |
16:06:03 | Yardanico | clyybber: it works if I do echo @`cmds` instead of echo `cmds` |
16:06:20 | Yardanico | it seems to be the issue with embedding and echoing varargs variable from a macro arguments in quote do |
16:06:30 | Yardanico | ah nvm it doesn't work that way as well |
16:06:39 | clyybber | yeah, the transformation is only done if varargs is the last param |
16:06:56 | Yardanico | echo @`cmds` doesn't work but echo @(`cmds`) does |
16:07:30 | clyybber | Yardanico: [`cmds`] should too |
16:08:01 | * | kevin5 joined #nim |
16:08:35 | * | Vladar joined #nim |
16:13:14 | * | dddddd joined #nim |
16:14:09 | Yardanico | by the way, maybe https://github.com/nim-lang/Nim/blob/devel/.github/ISSUE_TEMPLATE/bug_report.md#additional-information should embed `1.0.2` version by default instead of `0.1.2`? seems like a typo for me |
16:16:54 | * | kevin5 quit (Remote host closed the connection) |
16:20:14 | clyybber | OTOH if we do that we have no way to know if someone just missed editing that |
16:20:48 | Yardanico | good idea :P |
16:21:28 | clyybber | Araq: Ha, that renaming of tests is a welcome commit :) I hate searching for fail and finding "shoudfail" |
16:21:57 | * | LargeEpsilon quit (Ping timeout: 240 seconds) |
16:22:36 | * | Trustable joined #nim |
16:23:49 | Zevv | sealmove: so its *our* problem. fair enough :) |
16:25:13 | Zevv | I'll have to adjust my codegen. I can put the contents of all the individual case statement leafs into procs and count on the c compiler to inline them |
16:25:20 | Zevv | or somehthing similar |
16:27:21 | sealmove | if it's indeed a limitation on each seperate proc, then this is a huge relief |
16:36:14 | Araq | well the error message can be better of course |
16:36:22 | * | Vladar quit (Quit: Leaving) |
16:36:42 | Araq | and maybe we can indeed change the architecture to use 64bit instructions |
16:36:49 | Araq | but so far it wasn't necessary |
16:39:03 | narimiran | Yardanico: no, 0.1.2 is intended |
16:39:13 | Yardanico | narimiran: for catching people who didn't change it? :P |
16:39:17 | narimiran | exactly! |
16:40:24 | * | Hideki_ quit (Ping timeout: 246 seconds) |
16:41:00 | narimiran | btw, i will once again mention that the template might feel like "an unnecessary extra step i need to make to report a bug", but has proven time and time again that issue reports which follow the template are much easier to reproduce and fix |
16:51:22 | sealmove | Zevv: Can I make an issue at zevv/npeg so that I (and other people) know when it's fixed? |
16:53:46 | * | floppydh quit (Quit: WeeChat 2.6) |
16:57:32 | narimiran | wow, a permission needed to open an issue |
16:57:54 | disruptek | yeah, Zevv is a real hardass. |
17:00:27 | sealmove | lol, ok I'll open it |
17:01:00 | Zevv | sealmove: please do |
17:01:16 | Zevv | permission needed, wut? |
17:01:25 | Zevv | is that some setting? |
17:01:32 | sealmove | no no lol |
17:02:25 | Zevv | oh right :) |
17:02:35 | Zevv | I was already frantically browsing githubs options |
17:02:43 | Zevv | That would explain why I never got a single issue on Npeg |
17:02:44 | Zevv | *or* |
17:02:50 | Zevv | that it's just completely perfect and bug free |
17:03:13 | disruptek | *or* |
17:03:17 | disruptek | users know where to find you. |
17:04:58 | narimiran | Zevv: btw, you can disable issues altogether if you really want to be issue-free |
17:05:03 | Zevv | or I simply have none ;( |
17:08:13 | sealmove | https://github.com/zevv/npeg/issues/15 |
17:08:29 | sealmove | happy new issue then! |
17:09:09 | disruptek | 🎉🎂 |
17:09:42 | FromDiscord_ | <treeform> Araq, could you merge my cairo changes please? I fixed what you said to fix: https://github.com/nim-lang/cairo/pull/12 |
17:11:03 | * | Vladar joined #nim |
17:13:39 | FromGitter | <Varriount> Zevv: I was able to open issues on NPeg without permission, remember? |
17:17:23 | * | owl_000 quit (Ping timeout: 245 seconds) |
17:27:12 | * | rokups quit (Quit: Connection closed for inactivity) |
17:35:22 | Zevv | sssst dont spoil the moment |
17:35:53 | * | abm joined #nim |
17:35:59 | Zevv | just repeat after me: "npeg has no issues because npeg has no bugs" |
17:36:32 | Zevv | this is 2019. If i keep saying that often enough it will Become Truth |
17:40:55 | clyybber | tweet it for extra truth |
17:41:45 | narimiran | dom96: ping! |
17:43:49 | Zevv | hm but wait. If I make 500 procs, and a case to call them all, I will hit the same limit |
17:44:02 | Zevv | My call needs to jump over 32767 instructions |
17:44:23 | FromGitter | <nixfreakz_twitter> what is the difference between a table and a dict? |
17:44:29 | FromGitter | <nixfreakz_twitter> are they not the same? |
17:44:48 | narimiran | differences: table exists in nim, dict in python :D |
17:45:11 | FromGitter | <nixfreakz_twitter> yeah I have seen dict used in nim though |
17:45:20 | Yardanico | where? :P |
17:45:21 | FromGitter | <nixfreakz_twitter> let dict = loadConfig("config/config.cfg") |
17:45:22 | Zevv | show! |
17:45:23 | narimiran | did you? where? |
17:45:29 | Yardanico | @nixfreakz_twitter that's the variable name |
17:45:32 | Yardanico | not the module/type |
17:45:36 | narimiran | oh, i've seen UFOs too |
17:45:40 | Zevv | yeah, let polkaDottedCow = loadConfig("cow.conf") |
17:45:42 | narimiran | let ufo = "foo" |
17:45:49 | Zevv | narimiran: mine is better! |
17:46:04 | sealmove | Zevv: please elaborate |
17:46:05 | narimiran | Zevv: yep, you win this time |
17:46:14 | FromGitter | <nixfreakz_twitter> oh ok yeah I see it now, sorry that was dumb |
17:46:25 | Zevv | sealmove: There's just a limit on relative jumps - I assume this also goes for calls |
17:47:19 | sealmove | but 500 procs are 500 procs, not 32767 |
17:47:42 | Zevv | yes, but I need to *call* these procs |
17:48:02 | Zevv | some of them will be more then 32768 away from the caller |
17:48:08 | Zevv | to I can't call that far |
17:48:22 | Zevv | s/to/so/ |
17:48:29 | sealmove | I assume each proc has it's own space? |
17:48:39 | sealmove | otherwise the limitation would be too severe |
17:48:48 | Zevv | oh quite an assumption that is - but you might be right? |
17:48:53 | sealmove | at least that's what i could make out of what araq commented |
17:49:14 | sealmove | otherwise he wouldn't suggest factoring npeg functionality in smaller procs |
17:50:26 | sealmove | (as this would be pointless) |
17:50:27 | disruptek | just compute proc overlaps in memory. simple. |
17:50:33 | Yardanico | lol |
17:51:16 | Zevv | sealmove: doesn't seem to be like that |
17:51:41 | Zevv | build your nim with -d:nimVMDebug and see for yourself |
17:51:58 | Zevv | *all* static code in scope gets compiled and gets a place in the VM program space |
17:52:35 | sealmove | so the whole VM program space is 32K instructions |
17:52:37 | sealmove | this is bad |
17:54:18 | Zevv | So hear me, ye benevolent nim gods, how to proceed from here |
17:54:32 | * | tiorock joined #nim |
17:54:32 | * | tiorock quit (Changing host) |
17:54:32 | * | tiorock joined #nim |
17:54:32 | * | rockcavera quit (Killed (adams.freenode.net (Nickname regained by services))) |
17:54:32 | * | tiorock is now known as rockcavera |
17:54:52 | sealmove | I say we change VM arch to 64bit, since Araq didn't dislike the idea |
17:55:02 | Zevv | oh he didn't? |
17:55:04 | sealmove | shouldn't be too hard |
17:55:27 | sealmove | "Araq | and maybe we can indeed change the architecture to use 64bit instructions" |
17:55:35 | sealmove | "Araq | but so far it wasn't necessary" |
17:55:36 | Zevv | right |
17:59:41 | * | solitudesf quit (Read error: Connection reset by peer) |
17:59:42 | sealmove | so Zevv |
17:59:53 | sealmove | do you want to work on some fork, so we can make a collective PR? |
18:00:00 | Zevv | so sealmove. are you finished yet? |
18:00:01 | sealmove | or maybe branch |
18:00:12 | sealmove | finished with? |
18:00:19 | Zevv | with converting the VM to 64 bits :) |
18:00:23 | sealmove | lol |
18:00:37 | sealmove | i can try, or we can try together |
18:00:41 | Yardanico | why not 128 bit :P |
18:00:55 | Zevv | I'll give it a shot with what I put in yesterday, from what I saw it should be fairly trivial. |
18:01:11 | Zevv | Didn't get it to work yet, but that's probably because there are some corner cases. |
18:01:34 | Zevv | At this time an instruction is 32 bit, consistiong of opcode and reg A,B,C |
18:01:43 | * | solitudesf joined #nim |
18:01:46 | Zevv | there's also a 16 bit regBx, which is B and C together |
18:01:54 | sealmove | yes i took a look at the files |
18:01:59 | Zevv | so if we split this, we could either make 4 registers of 16 bit so that regBx becomes 32 |
18:02:30 | Zevv | *or* we leave A B and C 8 bits, and only make Bx 40 bits wide |
18:03:17 | sealmove | but opcode is 8bit, no need for more |
18:03:37 | Zevv | right. So are the other operands at this time. |
18:03:48 | Zevv | A third option would be to introduce longjump variands and use an extended instriction for that |
18:03:57 | Zevv | typos galore |
18:04:03 | sealmove | nah |
18:04:34 | Zevv | even better, option 4: make stuff more consistent and put all the logic in one place, keeping it 32 bits as it is now. |
18:04:50 | Zevv | Then we make a second commit changing one magical define, and *poof* everything works for 64 bit as well |
18:05:28 | Zevv | basically there's some constants and types being spread out through the place, if we put those in templates we should be able to change them at will |
18:05:39 | sealmove | but... |
18:06:53 | sealmove | well, i guess it's possible |
18:07:20 | Zevv | it's even better - there's duplication of constants now. There's magic 0x7fffs at some places, and shl 8 and shl 16 |
18:07:26 | Zevv | these should be named and defined in one place |
18:07:28 | sealmove | ok so currently layout is 8-8-8-8, new one will be? 8-16-16-24? |
18:07:51 | sealmove | 8-8-8-40? |
18:08:12 | Zevv | That should not really matter then. I'd say we can go for op-A-B-C: 8-8-8-8-X-X-X-X / op-A-Bx: 8-8-8-40 |
18:08:35 | sealmove | ok sounds good |
18:08:53 | Zevv | so if Bx is not used, the upper 32 bits will be unused. Total waste, but if we make sure the actual layout is easily changed, people can complain and we can say: "oooh, like *this*" |
18:09:43 | sealmove | Bx will be 48bit actually :P |
18:10:03 | Zevv | if *you* want it to be, it can :) |
18:10:16 | sealmove | i mean with the 8-8-8-40 proposal |
18:10:22 | Zevv | right, I miscalculated |
18:10:24 | Zevv | I know :) |
18:10:55 | sealmove | but I thought you didn't like the compiler switch idea |
18:11:29 | Zevv | no, I don't propose making it switchable for the user |
18:11:49 | sealmove | or you are thinking we make it easy-to-change, then dogfood it, and settle on some silver lining? |
18:11:49 | Zevv | Every boolean option you add doubles your complexity |
18:11:53 | Zevv | right |
18:12:14 | * | JustASlacker quit (Quit: Leaving) |
18:12:52 | sealmove | we can do this a step at a time. for example if we go for 8-8-8-40 initially then we only need to make Bx parametric |
18:13:14 | sealmove | only C really |
18:13:20 | Zevv | exactly |
18:13:24 | sealmove | Bx and C, not A and B |
18:13:28 | Zevv | C can even stay 8 bits |
18:13:30 | sealmove | then work our way up for A and B |
18:13:35 | Zevv | right |
18:13:52 | sealmove | either B or C can stay 8bit, yes |
18:13:59 | * | tane quit (Ping timeout: 250 seconds) |
18:14:41 | Zevv | but step 1 would be to find all constants spread through the code and derive those from the global register size definitions |
18:15:35 | sealmove | agreed |
18:15:58 | sealmove | we already have these ready: |
18:16:01 | sealmove | byteExcess* = 128 # we use excess-K for immediates |
18:16:03 | sealmove | wordExcess* = 32768 |
18:17:21 | Zevv | bwah ix.io is down |
18:17:32 | Yardanico | it's not for me |
18:17:48 | Zevv | http://ix.io/22PU |
18:17:49 | Zevv | back again |
18:17:59 | Zevv | wow wait waht |
18:18:20 | Zevv | http://ix.io/22PV |
18:18:21 | Zevv | that one |
18:18:34 | sealmove | everything seems to be in vmgen.nim |
18:18:50 | Zevv | yes, but vm.nim also since it *uses* the registers |
18:19:19 | sealmove | i mean the magic numbers are all in vmgen.nim i think |
18:19:34 | Zevv | not all, there's a lot of checks against 0x7fff |
18:19:42 | Zevv | and all the shifts and masks are spread out |
18:19:56 | Zevv | but those can all easily be derived from single constants |
18:20:35 | sealmove | with a quick scan I don't see literals used in other files |
18:21:21 | Zevv | i think you're right |
18:30:41 | Zevv | so it starts like this: https://github.com/zevv/Nim/commit/23a3d4d31e11672a6bc49c7bd6d84d936b2ae1c7 |
18:31:32 | disruptek | solitudesf: i think i fixed github for ya. |
18:32:30 | FromDiscord_ | <itmuckel> Hey guys! As far as I understand `nimble install` builds a release version of my package. But it also seems to install it in my path somewhere. What if I only want to build it for release? Is there an option for it? Like nimble build --release where it builds with full optimizations etc.? |
18:33:12 | Yardanico | `nimble install` does not build your package if it's not binary |
18:33:48 | * | tklohna quit (Ping timeout: 246 seconds) |
18:35:39 | madprops | i just make a script to do it manually `nim compile -d:release -o:/bin/myprogram src/myprogram.nim |
18:35:44 | madprops | and then i just call ./build.sh |
18:35:49 | Yardanico | if you only want to build it for release,you can use nim c or write a task in your nimble file |
18:36:26 | sealmove | Zevv: nice |
18:37:35 | sealmove | not sure changing wordExcess to regBxExcess was necessary |
18:41:07 | Zevv | Well, if it is no longer a word |
18:41:14 | Zevv | then the name is wrong |
18:41:52 | Zevv | now doing a nasty change: all the `'u32` and `.uint32` need to be changed to `.TInstrType` |
18:42:18 | Zevv | can't use `Tinstr` because it is a distinct and we can't calculate with that |
18:42:23 | Zevv | or we need to add borrows |
18:42:32 | Zevv | but still, the sizes need o be configurable |
18:43:14 | FromGitter | <Varriount> Zevv: What are you working on? |
18:43:14 | sealmove | right |
18:44:16 | sealmove | Varriount: he is refactoring VM so that the register sizes can be configured easily |
18:44:19 | Zevv | Varriount: seeing what would be required to upgrade the nim vm to 64 bits |
18:44:50 | * | ofelas quit (Quit: shutdown -h now) |
18:46:09 | sealmove | Zevv why not use a custom type and define converterS/ |
18:46:09 | * | uvegbot quit (Read error: Connection reset by peer) |
18:46:13 | * | zyklon joined #nim |
18:46:26 | Araq | no converters in ma codebase |
18:46:34 | Zevv | amen |
18:47:00 | sealmove | lol |
18:47:10 | Zevv | sealmove: i've amended the commit |
18:51:56 | sealmove | 0xffff has to be changed as well |
18:52:34 | Zevv | right, just a matter of finding all those now. |
18:52:51 | sealmove | i mean 0xffff.TInstrType is wrong |
18:53:06 | sealmove | it won't be extended with more f's |
18:53:11 | sealmove | but with 0's |
18:54:00 | sealmove | define min and max values for your type, and use those |
18:54:27 | sealmove | or maybe TInstrType.max works out of the box? |
18:55:02 | Zevv | where are you referring to? |
18:56:20 | sealmove | sorry, my logic is wrong, but still vmgen.nim: 2174: `c.code[pc] = ((oldInstr.TInstrType and 0xffff.TInstrType).TInstrType or` is wrong i think |
18:56:52 | sealmove | if TInstrType is 64bit perhaps we need a different mask than 0xffff |
18:57:14 | Zevv | yes that would be the mask for regBx |
18:57:23 | Zevv | but I have that now as the shifted mask, I'll change that |
18:57:36 | Zevv | so regBxMask is now 11111111_11111111_00000000_00000000 |
18:57:44 | sealmove | yes |
18:59:15 | Zevv | ok, fixed that |
18:59:30 | Zevv | the regA template and friends which are used in the vm are now also fixed |
18:59:49 | Zevv | I think this is the right time to see how to test if we don't break stuff |
19:00:48 | clyybber | but first: place fire extinguisher withing hand reach |
19:01:19 | sealmove | (not 0.TInstrType) shl regBxBits |
19:01:41 | Zevv | sealmove: ? |
19:02:19 | sealmove | i think `regBxMask* = ((1 shl regBxBits) - 1)` makes 00000000_00000000_11111111_11111111 |
19:03:07 | Zevv | yes, it is ment like that |
19:03:23 | Zevv | first I made it ffff0000, but everywher I needed it I needed ffff :) |
19:03:37 | Zevv | so the 'mask' is actually the mask of the largest pattern that fits in |
19:03:50 | sealmove | ah i see |
19:04:14 | Zevv | hmm which parts of the nim tests should we run, running all takes too long |
19:04:26 | Zevv | vm/* probably |
19:05:43 | sealmove | wait, did you commit to Nim/devel directly? |
19:06:12 | Zevv | no? |
19:06:15 | Yardanico | sealmove: "Updated 5 hours ago by timotheecour" |
19:06:26 | Zevv | https://github.com/zevv/Nim/commits/zevv-vmrework |
19:06:58 | sealmove | ok sorry, couldn't find the branch |
19:07:25 | * | lritter_ quit (Quit: Leaving) |
19:07:59 | Zevv | all vm/ tests still pass it seems |
19:08:05 | sealmove | :))) |
19:09:55 | clyybber | nice |
19:10:25 | sealmove | still work to do, if you change regBx's size it errors |
19:10:46 | Zevv | that's my own asserts |
19:11:54 | Zevv | ok, pushed |
19:12:06 | Zevv | `./testament/tester --nim:nim_temp c vm` is ok |
19:12:19 | Zevv | first reading the kids and a coffee! |
19:12:23 | Zevv | feel free to pick up from here! :) |
19:12:33 | Zevv | This is where the shitty work starts probably :) |
19:17:40 | Araq | fwiw I don't foreseee any problems |
19:17:49 | Zevv | great |
19:17:52 | Araq | this part of the VM was crafted well |
19:18:12 | Zevv | seems so |
19:18:25 | * | LargeEpsilon joined #nim |
19:20:50 | * | sagax quit (Ping timeout: 240 seconds) |
19:21:38 | Zevv | one more amended push, I broke the tests |
19:22:22 | * | tane joined #nim |
19:22:37 | * | LargeEpsilon quit (Ping timeout: 240 seconds) |
19:23:43 | sealmove | Zevv: hmm, I compiled your version but https://play.nim-lang.org/#ix=22KQ errors the same |
19:37:39 | * | abm quit (Remote host closed the connection) |
19:38:06 | * | abm joined #nim |
19:42:58 | sealmove | Zevv: regBxExcess, regBxMin, regBxMax |
19:43:07 | sealmove | they have to be of type TInstrType too |
19:45:43 | Zevv | yep! |
19:46:09 | sealmove | hell, then we need to define some operators for it |
19:46:53 | sealmove | internalAssert(c.config, regBxMin < diff and diff < regBxMax) |
19:47:00 | sealmove | this assert still fails |
19:47:22 | sealmove | (vmgen.nim line 179) |
19:47:52 | Zevv | I fixed those already, pull once more. I'll not rebase from now on, easier to keep track of the changes |
19:48:04 | Zevv | and easier to pull |
19:48:11 | * | JustASlacker joined #nim |
19:48:48 | sealmove | Zevv found it |
19:48:55 | sealmove | vmdef line 66 |
19:48:56 | * | nsf quit (Quit: WeeChat 2.6) |
19:52:20 | Zevv | afk for 30 mins |
19:52:55 | sealmove | you are working faster than me, I will stop :P |
20:14:46 | Zevv | naah, cmon :) |
20:15:39 | Zevv | the good news is that stuff breaks spectaculary when increasing regBx to any size other then 16 :) |
20:18:15 | Yardanico | Araq: I benchmarked JSON test from https://embark.status.im/news/2019/11/18/nim-vs-crystal-part-1-performance-interoperability/ just for fun, and --gc:arc on my machine is actually faster than the default GC (although uses a bit more ram) |
20:18:21 | Yardanico | ~4.1 sec for Nim ~1.3gb ram, ~3.6 sec for Nim with --gc:arc ~1.5gb ram |
20:18:33 | Yardanico | Miran said to give you that info :P |
20:18:37 | Zevv | sweet! |
20:22:59 | sealmove | there was a pragma to inherit operators when using distinct |
20:23:05 | Yardanico | {.borrow.} |
20:23:12 | disruptek | which benchmark? it's about 20% slower for me. |
20:23:18 | Yardanico | disruptek: the JSON one |
20:23:25 | sealmove | {.borrow.} |
20:23:34 | disruptek | *THE* JSON one? |
20:23:47 | Yardanico | also I tested with packedjson - it's ~3.1sec on my machine and only uses 280mb ram |
20:23:55 | disruptek | oh, from that article. pffbt. |
20:24:10 | Yardanico | crystal uses ~2.6sec and 1gb ram (ye I know these microbenchmarks are pointless) |
20:27:26 | sealmove | Zevv: I think the mistake is the introduction of TInstrType |
20:27:34 | sealmove | I think we have to use the already existing TInstr |
20:27:43 | sealmove | so that type size is injected in all places |
20:33:35 | Zevv | yes but it is a distinct, so you can't calculate with it |
20:33:42 | Zevv | or we need to introduce all kind of borrows |
20:33:54 | Zevv | but sure, this is ugly as hell |
20:34:07 | Zevv | I also reverted the wordExcess to make the diff smaller |
20:34:12 | Zevv | can always change that later |
20:34:18 | Zevv | you were right about that |
20:34:51 | Zevv | let me see what happens if I take out the Type |
20:35:42 | sealmove | well, we have to do calculation with a parametric type, no escaping that |
20:37:33 | Zevv | heu Error: no symbol to borrow from found |
20:38:41 | Zevv | I need to add 3 differetn borrows only to support `+` |
20:39:11 | sealmove | hmm, there must be clean solution, let me think |
20:42:43 | sealmove | template regA*(x: TInstr): TRegister = TRegister(x.uint32 shr 8'u32 and 0xff'u32) |
20:43:06 | Zevv | what's with that? |
20:43:14 | sealmove | watch x.uint32 |
20:43:20 | dom96 | narimiran, you pinged? |
20:43:27 | Zevv | oh but that has all been updated sealmove |
20:43:40 | sealmove | no I mean, I think we need to keep it like that |
20:43:43 | dom96 | would be nice to give some context when pinging btw |
20:43:48 | sealmove | since it doesn't have to do with x's size |
20:44:09 | sealmove | the size is adjusted by the shift |
20:44:10 | Zevv | well it does: if TRegister goes 64 bit you can't calculate with 32 bits there |
20:44:21 | sealmove | ok we can make it uint64 always |
20:44:25 | sealmove | it's just a number |
20:44:31 | Zevv | sure. But now it's just a type |
20:44:33 | sealmove | in the end TRegister remains |
20:44:38 | Zevv | which happens to be called TInstrType |
20:45:08 | Zevv | I this all works out and it is too ugly, we can just do a replace of some .TInstrTypes to 'u64 |
20:45:16 | Zevv | but first let's get this to *work* |
20:45:26 | Zevv | because it doesn't :) |
20:46:15 | sealmove | yes, some literals can be 'u64 without affecting architecture |
20:46:22 | sealmove | no need to parameterize them |
20:46:47 | Zevv | and I get a very nasty error: http://ix.io/22QE |
20:47:03 | Zevv | sealmove: ah right we could always use 'u64 there |
20:48:12 | sealmove | wherever there are calculations |
20:48:35 | sealmove | use u64 for calculations and then convert to TInstr |
20:48:54 | Zevv | well, but why not just use TInstrType then |
20:49:01 | Zevv | it's more correct, technically |
20:49:52 | Zevv | the diff is pretty clean now with wordExcess restored |
20:49:53 | sealmove | because of operators not working/ |
20:50:12 | Zevv | well, this now works just fine with all the original sizes |
20:50:19 | Zevv | it just breaks as soon as I start increasing Bx's size |
20:50:22 | * | filcuc joined #nim |
20:52:01 | Zevv | which is kind of sad because that was the whole point :) |
20:52:30 | dom96 | so, anyone submitted any talks for FOSDEM? |
20:54:44 | FromDiscord_ | <IanIAnIAN> I would if I knew more programming than gardening |
20:57:32 | Zevv | sealmove: well, it works! |
20:59:18 | Zevv | sometimes :( |
20:59:19 | * | tane quit (Quit: Leaving) |
21:34:24 | * | Vladar quit (Ping timeout: 246 seconds) |
21:41:53 | sealmove | Zevv: oh $hit |
21:42:04 | sealmove | TRegister is [0 .. 255] |
21:42:08 | sealmove | need to change that too |
21:42:20 | Zevv | nope, the other registers stay 8 bits for now |
21:42:32 | sealmove | yes but |
21:42:37 | Zevv | :) |
21:43:00 | sealmove | template regC*(x: TInstr): TRegister = TRegister(x.uint64 shr regCShift and regCMask) |
21:43:13 | sealmove | we can't change regBx without changing regB or regC |
21:43:19 | sealmove | regBx is the sum of these 2 |
21:43:21 | Zevv | we can |
21:43:32 | Zevv | not enforced anywhere. It's like a sum type / union |
21:43:32 | * | Trustable quit (Remote host closed the connection) |
21:43:37 | Zevv | you either use B and C, or you use Bx |
21:43:48 | Zevv | but nothing dictates that sizeof b + c should be sizeof bx |
21:44:12 | Zevv | it is basically working, but I see that *very* sometimes I get a off-by-one offset on jumps in Bx |
21:45:03 | sealmove | I get Error: unhandled exception: index -1099511627776 not in 0 .. 0 [IndexError] |
21:45:29 | Zevv | oh what do you do to get that? |
21:45:44 | sealmove | -1099511627776 == -0x10000000000 |
21:47:19 | Zevv | how do you trigger that? |
21:47:45 | sealmove | https://github.com/nim-lang/Nim/compare/devel...sealmove:devel |
21:48:01 | sealmove | and try to compile a heavy npeg project |
21:48:54 | Zevv | yeah, what I do see happen is that the codegen sometimes emits different stuff |
21:48:56 | Zevv | I get wrong jumps |
21:49:05 | Zevv | which lead to all kind of different unexpected errors |
21:49:20 | Zevv | so I'm now tracing where and how the codegen generates these offsets to see what causes the mismatch |
21:49:33 | Zevv | something trivial, probably |
21:49:46 | Zevv | but indeed you can expect anything from that |
21:50:13 | Zevv | but only after 1850 correct instructions I get one wrong |
21:50:32 | sealmove | i am still unconvinced that B+C doesn't have to equal Bx |
21:51:19 | Zevv | I have seen no proof of that, but you could just do that? Set B and C to 9 and Bx to 18 |
21:53:31 | Zevv | think I have it: 'optimizejumps' is broken now in some cases |
21:54:04 | Zevv | I now have an 8/8/8/16 working just fine |
21:54:12 | Zevv | all the UB is gone |
21:55:52 | Zevv | maybe Araq can shed some light on why optimizeJumps() could fail, I do not yet grok it |
21:58:36 | Zevv | It looks like something is messing up a jump to an ldConst, not even to another jump |
21:59:11 | * | krux02 quit (Remote host closed the connection) |
22:00:04 | sealmove | -1099511627776 is -wordExcess |
22:01:21 | Zevv | let me see, I probably just messed up here |
22:02:02 | * | narimiran quit (Ping timeout: 240 seconds) |
22:02:23 | Zevv | think I have it |
22:03:23 | Zevv | that's it |
22:03:56 | Zevv | pushed! was again a rebase, sorry. Is that a hassle for you? It keeps my diff neat |
22:04:15 | sealmove | a bit, but it's fine ;) |
22:04:21 | Zevv | The jump optimization patches the instruction to put in a new regBx, and I orred out the wrong bits |
22:04:24 | Zevv | totally wrong |
22:04:39 | Zevv | I think this is it now, and it works |
22:06:26 | Zevv | nooo :/ |
22:08:48 | * | ltriant joined #nim |
22:12:10 | Zevv | that's why I am so relucatant to add code optimizations to npeg |
22:12:17 | Zevv | it makes stuff complicated |
22:13:23 | Zevv | ok, what is checked in now works for me: NPeg large grammers work and all vm/ tests run ok |
22:13:31 | Zevv | temporary disabled jump optimizations |
22:14:42 | sealmove | how did you disable optimizations? |
22:15:25 | Zevv | https://github.com/zevv/Nim/commit/608bf79efa1ca561d152826951a044d0870e7fad#diff-0b3a08b613f04d0700ca38fcad26881eR2268 :) |
22:15:34 | Zevv | With the magic `#` |
22:16:12 | sealmove | oh lol ok |
22:21:02 | Zevv | fixed the optimization |
22:21:04 | Zevv | all done |
22:23:59 | clyybber | NICE |
22:24:50 | sealmove | wow!! |
22:27:38 | Zevv | I'll submit a review-only PR for now |
22:28:03 | sealmove | I will pull your fork and continue working on my project <3 |
22:30:49 | Zevv | https://github.com/nim-lang/Nim/pull/12742 |
22:30:50 | disbot | ➥ Refactoring of VM register sizes to allow for bigger programs running in the VM |
22:30:57 | Zevv | disbot, colors my world! |
22:31:41 | dom96 | I wish it didn't use the red that is used for highlights D: |
22:33:30 | Zevv | I disabled my IRC clients colors just for this |
22:33:33 | * | xet7 joined #nim |
22:33:54 | zedeus | it's bold green for me |
22:34:09 | Zevv | it's called the "angry fruit salad syndrome" in the docs |
22:34:58 | disruptek | it's green because the pull is open. |
22:35:17 | * | uu91 quit (Ping timeout: 240 seconds) |
22:35:20 | Zevv | it's green because of kiwi and graps and unripe bananas |
22:35:31 | disruptek | also because zevv loves green. |
22:35:43 | Zevv | all my PR's are always open |
22:35:56 | Zevv | apart from the colors it's a pretty cool bot tho :) |
22:36:10 | disruptek | !pulls author:zevv is:open |
22:36:11 | disbot | https://github.com/nim-lang/Nim/pull/12742 -- 3Refactoring of VM register sizes to allow for bigger programs running in the VM |
22:36:24 | disruptek | !pulls author:disruptek is:open |
22:36:25 | disbot | https://github.com/nim-lang/Nim/pull/12435 -- 3remove most nil<->JNull equivalence and raise nicer exceptions |
22:36:25 | disbot | https://github.com/nim-lang/Nim/pull/12227 -- 3fix some http header issues |
22:36:25 | disbot | https://github.com/nim-lang/Nim/pull/11848 -- 3write markdown amidst nim via a source code filter |
22:36:44 | Zevv | man you probably earned your shirt in october, right? |
22:37:01 | * | uu91 joined #nim |
22:37:15 | Zevv | aw CI failed :( |
22:37:16 | disruptek | when you use a !plural it yields up to 3 results instead of just the first "i'm feeling lucky" hit. |
22:37:47 | disruptek | my october was bump. |
22:37:56 | * | xet7 quit (Remote host closed the connection) |
22:37:58 | disruptek | my november is nimph; you should take a peek. |
22:38:04 | disruptek | !repo disruptek/nimph |
22:38:05 | disbot | https://github.com/disruptek/nimph -- 11a nim package hierarchy manager from the future |
22:38:07 | Zevv | heu why did my job fai? 0 errors / 0 warnings |
22:39:05 | * | xet7 joined #nim |
22:40:44 | disruptek | /home/vsts/work/1/s/compiler/vmdef.nim(42, 35) Error: unhandled exception: value out of range |
22:40:52 | disruptek | https://dev.azure.com/nim-lang/Nim/_build/results?buildId=862&view=logs&jobId=9695ec3c-f321-512a-ca80-0857ed02afb9&taskId=0d9a1f24-fcf6-5b45-7178-19cfa9eaebd2&lineStart=109&lineEnd=110&colStart=1&colEnd=1 |
22:41:28 | disruptek | weirdly, 64bit vm doesn't seem to work on 32bit hardware. |
22:41:47 | sealmove | haha :D |
22:42:32 | sealmove | hmm, have to find a way to default according to CPU arch |
22:42:43 | Zevv | funny. I was under the impression that nim ints are always 64 bit, even on 32 bit machines |
22:43:48 | disruptek | wut |
22:43:59 | Zevv | yeah reproducable with ./koch temp -d:danger --cpu:i386 --passC:-m32 --passL:-m32 |
22:46:39 | clyybber | sealmove: Not neccessary, just use int64/uint64 |
22:46:43 | clyybber | explicitly |
22:47:12 | Zevv | right. for performance it would be better to run in 32 bits, but that would be kind of a surprise if stuff does not run for some people |
22:47:29 | clyybber | yeah |
22:47:51 | * | owl_000 joined #nim |
22:48:40 | sealmove | clyybber: what do you mean? |
22:49:03 | sealmove | int64 is turned into int32 for i386? |
22:49:09 | sealmove | doesn't sound correct |
22:49:17 | Zevv | no, but some stuff is now not explicit so is default int |
22:49:39 | sealmove | but bit size is explicit |
22:49:49 | sealmove | we hardcode it in consts |
22:49:55 | sealmove | bit number* |
22:50:03 | clyybber | sealmove: And 32bit hardware can do 64bit arithmetic :) |
22:50:11 | sealmove | how? :S |
22:50:36 | clyybber | magic |
22:50:48 | Zevv | yeah but regBxMask and wordExcess are just `int` for example |
22:51:05 | FromDiscord_ | <krab4t> 32 bit 🤮 |
22:51:33 | Zevv | krab4t: don't whine, people are running nim on 8 bitters |
22:51:42 | Zevv | and nothing wrong with that |
22:51:47 | FromDiscord_ | <krab4t> 😱 |
22:51:55 | clyybber | why can I not see emojis |
22:52:09 | FromDiscord_ | <krab4t> should install 64bit os for emoji's |
22:52:16 | clyybber | I think my font is trying to protect me |
22:52:17 | Zevv | 27% of the male population is emoj-iblind |
22:52:30 | Zevv | I see little squares |
22:52:30 | clyybber | I'm proud to be a part of that |
22:52:32 | Zevv | green little squares |
22:52:41 | sealmove | my mind is blown, 32bit can do 64bit arithmetic... |
22:52:51 | clyybber | Zevv: I don't see anything. But only on messages from discord |
22:52:52 | Zevv | haha |
22:52:52 | disruptek | there's a viral video of a kid seeing emojis for the first time at 15yo and crying. |
22:52:58 | clyybber | relatable |
22:53:43 | Zevv | anyway, I'm off to my nice cozy warm bed and wrap myself in a nice warm cozy blanked for approx 8 hours. |
22:54:01 | Zevv | thanks for your time sealmove, great help! |
22:54:11 | disruptek | later Zevv |
22:54:14 | Zevv | ciao disbot |
22:54:24 | Zevv | ciao disruptek |
22:54:38 | * | Zevv pats the bot goodnight |
22:54:52 | disruptek | disbot: don't bite Zevv; he's a good guy. |
22:54:53 | disbot | on it. 👍 |
22:55:01 | sealmove | i doupt i helped much, i must thank you for allowing me to resume nimitai! |
22:55:01 | * | filcuc quit (Ping timeout: 265 seconds) |
22:55:03 | sealmove | gn |
22:55:15 | clyybber | disbot: catch o |
22:55:20 | clyybber | sealmove: gn |
22:55:26 | clyybber | Zevv: gn |
22:55:34 | dom96 | disbot, bite me |
22:56:00 | disruptek | disbot: will you bite dom if he gets too close? |
22:56:00 | disbot | yep. 😊 |
22:56:05 | disruptek | oh shoot |
22:56:18 | dom96 | disbot: is it the comma? |
22:56:32 | dom96 | I guess it just responds to you |
22:56:41 | clyybber | loyal boy |
22:58:56 | clyybber | gn8 disruptek dom96 |
22:59:04 | * | clyybber pats disbot goodbye |
22:59:05 | disruptek | peace |
22:59:08 | * | clyybber quit (Quit: WeeChat 2.6) |
23:00:14 | * | solitudesf quit (Ping timeout: 252 seconds) |
23:02:11 | dom96 | let's see how this goes, submitted 3 talks: https://forum.nim-lang.org/t/5577#34749 |
23:05:32 | * | uu91 quit (Read error: Connection reset by peer) |
23:05:48 | * | uu91 joined #nim |
23:33:21 | * | JustASlacker quit (Ping timeout: 250 seconds) |
23:40:59 | * | owl_000 quit (Quit: Leaving) |
23:42:43 | * | uu91 quit (Read error: Connection reset by peer) |
23:43:11 | * | uu91 joined #nim |
23:44:17 | * | abm quit (Ping timeout: 240 seconds) |