| 00:12:47 | * | PrimHelios joined #nim |
| 00:18:32 | * | wildtrees quit (Quit: Leaving) |
| 00:29:20 | * | btop quit (Ping timeout: 272 seconds) |
| 01:07:00 | * | btop joined #nim |
| 01:13:17 | FromDiscord_ | <treeform> $ |
| 01:13:36 | FromDiscord_ | <DeltaPHC> I was about to ask if Nim as the concept of zero-sized types, but then I went on the playground and verified that it does indeed, heh |
| 01:13:41 | FromDiscord_ | <DeltaPHC> *has |
| 01:22:49 | FromDiscord_ | <treeform> why would you need that? |
| 01:27:40 | * | owl_000 joined #nim |
| 01:29:18 | FromDiscord_ | <DeltaPHC> Well, I'm unsure yet how useful it is in Nim specifically, but in another language I use it as a type system handle for generics. If you have an object like `StateMachine[T]`, that T can be a zero-size type of, for example, `InitialState`, `SomeOtherState`, etc. This way, you can store a form of state at the type level while keeping the same data. |
| 01:29:18 | FromDiscord_ | <DeltaPHC> |
| 01:29:18 | FromDiscord_ | <DeltaPHC> Then, you can have procedures that specifically take a `StateMachine[SomeOtherState]`. If the user can provide this type, this means that the data is guaranteed to be in a certain state, and so you can reduce runtime checks that way |
| 01:32:07 | FromDiscord_ | <DeltaPHC> It works better in a language like Rust, for the reason that you can have functions there that "consume" (take ownership of) a type where the compiler guarantees that it'll never be used again. I know Nim is headed in that direction, though |
| 01:44:49 | * | ng0_ joined #nim |
| 01:46:08 | FromDiscord_ | <DeltaPHC> Something like this: https://play.nim-lang.org/#ix=1Teh |
| 01:46:38 | * | ng0_ quit (Client Quit) |
| 01:47:44 | * | ng0 quit (Ping timeout: 260 seconds) |
| 02:05:05 | * | darithorn joined #nim |
| 02:21:36 | * | vlad1777d joined #nim |
| 02:42:58 | * | btop quit (Ping timeout: 272 seconds) |
| 02:54:40 | * | btop joined #nim |
| 02:54:53 | * | laaron quit (Remote host closed the connection) |
| 03:00:39 | * | NimBot joined #nim |
| 03:05:02 | * | laaron joined #nim |
| 03:31:10 | shashlick | @leorize - trying neovim on ubuntu, v0.3.8, i just get "nimsuggest is not running for this project" |
| 03:36:02 | * | btop quit (Quit: leaving) |
| 03:48:39 | * | darithorn quit (Quit: Leaving) |
| 03:50:27 | * | chemist69 quit (Ping timeout: 264 seconds) |
| 03:52:06 | * | chemist69 joined #nim |
| 04:07:40 | * | skrylar[m] scrolls the backlog and sees the display id one |
| 04:07:50 | skrylar[m] | wikipedias hatred of primary sources has always amused me |
| 04:08:01 | skrylar[m] | "don't listen to people who know what they are talking about" good policy. |
| 04:12:52 | * | vlad1777d quit (Ping timeout: 248 seconds) |
| 04:43:22 | FromGitter | <Obround> How do you forward declare a proc with its return type set to `auto`? This code des not work: |
| 04:47:37 | * | owl_000 quit (Ping timeout: 250 seconds) |
| 04:50:29 | skrylar[m] | how would that even work |
| 04:51:43 | FromGitter | <Obround> How do you forward declare a proc with its return type set to `auto`? This code does not work: ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5d60c25f3c1aba311bc03977] |
| 05:15:29 | * | owl_000 joined #nim |
| 05:15:35 | * | owl_000 left #nim (#nim) |
| 05:19:52 | * | nif_ quit (Quit: ...) |
| 05:20:01 | * | nif joined #nim |
| 05:32:38 | * | owl_000 joined #nim |
| 05:53:07 | * | narimiran joined #nim |
| 06:16:55 | * | laaron quit (Remote host closed the connection) |
| 06:18:39 | * | solitudesf joined #nim |
| 06:20:33 | * | dddddd quit (Remote host closed the connection) |
| 06:25:13 | * | laaron joined #nim |
| 06:32:35 | FromGitter | <zacharycarter> in an attempt to wrap C++ code - I'm getting these strange errors |
| 06:32:48 | FromGitter | <zacharycarter> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5d60da10dbf5ae2d42b5eb04] |
| 06:33:14 | FromGitter | <zacharycarter> Not sure where the `Marker_` is coming from |
| 06:33:38 | FromGitter | <zacharycarter> One of the objects I'm wrapping is an interface declared like - ⏎ ```struct __declspec(novtable) AllocatorI``` |
| 06:33:54 | FromGitter | <zacharycarter> and then I have another class that inherits from that |
| 06:34:51 | FromGitter | <zacharycarter> `Marker_bx::DefaultAllocator` keeps ending up in my generated C++ code though... |
| 06:36:44 | FromGitter | <awr1> @Obround make an issue, maybe? or use code reordering |
| 06:46:38 | leorize | shashlick: you have nimsuggest installed, right? |
| 06:55:49 | * | narimiran quit (Remote host closed the connection) |
| 07:00:00 | * | gmpreussner quit (Quit: kthxbye) |
| 07:00:18 | * | nsf joined #nim |
| 07:02:59 | owl_000 | how to use nimpretty, in cmd it is not recognizable. on the other hand in nim/bin directory there is no nimpretty.exe |
| 07:03:00 | FromGitter | <gogolxdong> Anyone met the following nimble error iof recent version? ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5d60e124be3a8a311ad9d65f] |
| 07:04:48 | * | gmpreussner joined #nim |
| 07:05:05 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
| 07:05:35 | * | laaron joined #nim |
| 07:22:46 | lqdev[m] | owl_000: nimpretty does not come installed when you use choosenim, for some reason. you have to compile it manually |
| 07:22:59 | lqdev[m] | same goes for finish.exe |
| 07:30:00 | FromGitter | <zacharycarter> if I use the compile pragma to compile some C++ code - I should need to do any further linking steps to importcpp symbols defined in the C++ source I'm compiling - is that correct? |
| 07:30:04 | FromGitter | <zacharycarter> I should just be able to importcpp them? |
| 07:32:31 | * | gangstacat quit (Quit: Ĝis!) |
| 07:37:40 | * | nif quit (Quit: ...) |
| 07:37:50 | * | nif joined #nim |
| 07:40:41 | FromGitter | <zacharycarter> ah - figured it out, I wasn't compiling the cpp file that was defined in, yay unblocked on this a bitr |
| 07:44:16 | * | terps joined #nim |
| 07:47:07 | * | ng0 joined #nim |
| 08:48:31 | * | aq60 quit (Ping timeout: 260 seconds) |
| 08:49:11 | * | gangstacat joined #nim |
| 08:50:32 | FromGitter | <zacharycarter> sweet - I got bimg working :D |
| 08:52:48 | FromGitter | <zacharycarter> https://gist.github.com/zacharycarter/6481a1e67c4d17b4a6114f18150be8ff |
| 08:53:51 | FromGitter | <zacharycarter> now I should be able to continue on with this terrain example: https://bkaradzic.github.io/bgfx/examples.html#tess |
| 08:54:07 | * | terps quit (Ping timeout: 276 seconds) |
| 08:58:12 | * | Minimisthupper joined #nim |
| 09:01:35 | * | Minimisthupper quit (Client Quit) |
| 09:06:05 | * | Vladar joined #nim |
| 09:09:38 | * | Ven`` joined #nim |
| 09:11:16 | * | krux02 joined #nim |
| 09:28:19 | * | Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 09:28:25 | * | shomodj joined #nim |
| 09:31:34 | * | nsf quit (Quit: WeeChat 2.5) |
| 09:34:05 | * | shomodj quit (Read error: Connection reset by peer) |
| 09:34:35 | * | shomodj joined #nim |
| 09:36:55 | * | terps joined #nim |
| 09:56:31 | * | vegai joined #nim |
| 10:00:50 | * | krux02 quit (Remote host closed the connection) |
| 10:17:10 | * | terps quit (Ping timeout: 246 seconds) |
| 10:25:53 | * | terps joined #nim |
| 10:39:00 | * | terps quit (Ping timeout: 248 seconds) |
| 10:46:14 | * | vegai quit (Disconnected by services) |
| 10:47:53 | * | shomodj quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 10:48:45 | * | shomodj joined #nim |
| 10:55:18 | * | shomodj quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 11:00:38 | * | solitudesf- joined #nim |
| 11:02:19 | * | solitudesf- quit (Client Quit) |
| 11:02:38 | * | solitudesf- joined #nim |
| 11:02:57 | * | solitudesf quit (Ping timeout: 245 seconds) |
| 11:12:33 | * | Trustable joined #nim |
| 11:26:06 | * | Trustable quit (Remote host closed the connection) |
| 11:46:06 | * | nsf joined #nim |
| 11:48:15 | * | owl_000 left #nim ("Leaving") |
| 11:48:40 | * | owl_000 joined #nim |
| 12:06:24 | * | theelous3 joined #nim |
| 13:03:12 | * | laaron quit (Remote host closed the connection) |
| 13:04:45 | * | laaron joined #nim |
| 13:05:36 | * | endragor joined #nim |
| 13:21:54 | * | Ven`` joined #nim |
| 13:21:58 | * | aq60 joined #nim |
| 13:37:41 | * | livcd quit (Remote host closed the connection) |
| 14:14:47 | * | laaron quit (Remote host closed the connection) |
| 14:16:59 | * | nif quit (Quit: ...) |
| 14:17:08 | * | nif joined #nim |
| 14:19:07 | * | endragor quit (Remote host closed the connection) |
| 14:22:20 | * | laaron joined #nim |
| 14:22:43 | shashlick | @leorize yes I was using latest devel |
| 14:25:49 | * | endragor joined #nim |
| 14:29:42 | Zevv | is it in your path, can you just run "nimsuggest" on the command line? |
| 14:34:52 | * | laaron quit (Remote host closed the connection) |
| 14:37:21 | * | vlad1777d joined #nim |
| 14:38:33 | * | laaron joined #nim |
| 14:53:50 | * | owl_000 quit (Ping timeout: 272 seconds) |
| 14:56:28 | * | Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 14:58:02 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
| 14:58:39 | * | laaron joined #nim |
| 14:59:48 | * | Ven`` joined #nim |
| 15:03:25 | * | solitudesf- quit (Quit: Leaving) |
| 15:03:44 | * | solitudesf joined #nim |
| 15:06:37 | * | Ven`` quit (Ping timeout: 246 seconds) |
| 15:13:56 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
| 15:14:51 | * | laaron joined #nim |
| 15:15:36 | * | laaron quit (Remote host closed the connection) |
| 15:19:47 | * | laaron joined #nim |
| 15:23:06 | * | laaron quit (Client Quit) |
| 15:23:49 | * | laaron joined #nim |
| 15:26:06 | * | nsf quit (Quit: WeeChat 2.5) |
| 15:42:07 | * | endragor quit (Remote host closed the connection) |
| 15:45:27 | shashlick | Ya |
| 15:51:04 | * | vlad1777d quit (Remote host closed the connection) |
| 15:53:20 | * | vlad1777d joined #nim |
| 15:53:32 | * | owl_000 joined #nim |
| 15:53:51 | * | owl_000 left #nim (#nim) |
| 15:54:04 | * | owl_000 joined #nim |
| 15:55:55 | * | owl_000 quit (Client Quit) |
| 15:59:04 | * | vlad1777d quit (Ping timeout: 272 seconds) |
| 16:07:13 | * | aq60 quit (Remote host closed the connection) |
| 16:10:02 | Zevv | and do you see anything when checking for :messages? |
| 16:11:04 | * | vlad1777d joined #nim |
| 16:15:47 | shashlick | I'll check it out |
| 16:16:44 | shashlick | Sometimes it says nimsuggest exited with 0 on exit but doesn't do anything for the project and gives the message that not running for this project |
| 16:16:54 | * | darithorn joined #nim |
| 16:17:01 | shashlick | Was hoping I could use it at least for Linux |
| 16:20:36 | shashlick | New nimterop feature in test - https://github.com/nimterop/nimterop/blob/v020/nimterop/build.nim#L498 |
| 16:20:41 | shashlick | Looking for feedback |
| 16:21:43 | shashlick | Here's a sample header - https://github.com/nimterop/nimterop/blob/v020/tests/lzma.nim#L11 |
| 16:22:18 | shashlick | And how to use - https://github.com/nimterop/nimterop/blob/v020/tests/getheader.nims#L23 |
| 16:22:29 | leorize | shashlick: what file did you test it on? |
| 16:23:05 | shashlick | I tried a few different nims and a nim files |
| 16:23:21 | leorize | nimscript doesn't work with nimsuggest |
| 16:28:27 | shashlick | Ok I'll check messages with a Nim file and get back |
| 16:28:39 | shashlick | Any feedback on the nimterop feature? |
| 16:29:52 | * | dddddd joined #nim |
| 16:30:59 | * | krux02 joined #nim |
| 16:31:26 | leorize | it's a nice feature |
| 16:32:00 | leorize | nimterop is on the verge of having a package builder integrated though :P |
| 16:33:09 | * | narimiran joined #nim |
| 16:33:23 | leorize | I think you can build an object/tuple instead though |
| 16:33:50 | leorize | instead of creating `const xxxPath` and `const xxxLDir` |
| 16:34:18 | leorize | also, are you sure that static params are safe to use now? |
| 16:34:45 | leorize | the last time I used them they got corrupted at a random position within the macro |
| 16:42:50 | shashlick | They have worked fine so far, but I'm still debugging to get it working on Travis across Nim versions |
| 16:42:59 | shashlick | Still some ways from osx as well |
| 16:43:09 | shashlick | But probably not related to static |
| 16:43:46 | shashlick | I'm calling builders, is that a builder too? :) |
| 16:43:59 | shashlick | It detects the builder and deals with it |
| 16:44:27 | leorize | well that's pretty much how people packages software :P |
| 16:44:53 | shashlick | Not sure I get your object / tuple feedback |
| 16:45:12 | leorize | https://github.com/nimterop/nimterop/blob/2c1d8d3bd8e25e331cfd58e17354cd1dc306e5a4/nimterop/build.nim#L518-L520 |
| 16:45:23 | shashlick | You need the const to be used in the following cimport call |
| 16:45:37 | shashlick | Considering it is a macro, I cannot return values |
| 16:45:52 | leorize | you can? |
| 16:46:14 | leorize | well I'm pretty sure Zevv's managed to do that |
| 16:46:42 | shashlick | I'm creating defines with the header name so need to generate ast for that |
| 16:47:03 | shashlick | And that means I have to return a nimnode |
| 16:47:48 | shashlick | See line 557 |
| 16:49:53 | shashlick | Any feedback on the api signature or feature in general |
| 16:50:37 | leorize | the feature is great |
| 16:50:58 | leorize | personally I'd like it if you can generate {.compile.} calls :P |
| 16:52:59 | leorize | shashlick: since everything runs at compile-time, do you really need to generate code that do "when defined" checks? |
| 17:03:35 | shashlick | Well how do I check for defines without hard coding |
| 17:04:28 | shashlick | The nimterop code has to be generic but I don't want the wrapper writer to have to specify too much |
| 17:06:08 | shashlick | Only way I could generate the defines to check was this way |
| 17:06:39 | shashlick | In fact, this way, the wrapper can support a variety of ways but end user can pick a specific one with defines |
| 17:06:39 | * | krux02 quit (Ping timeout: 264 seconds) |
| 17:06:56 | shashlick | But that's why I'm asking cause I wonder if there's a better or simpler way |
| 17:08:32 | leorize | I'm pretty sure defined() takes an indent nimnode |
| 17:09:01 | leorize | ident* |
| 17:10:07 | leorize | hmm, it doesn't :/ |
| 17:11:58 | * | elrood joined #nim |
| 17:14:06 | shashlick | I prefer quote since it is readable |
| 17:14:56 | Zevv | I didnt return values but stored them in .compiletime. vars to save state over macro calls |
| 17:15:22 | Zevv | that took me three weeks because I did not know of the existence of .compileTime. vars :/ |
| 17:15:51 | shashlick | So I can make them var instead of const |
| 17:17:54 | Zevv | I assumed that - because normal procs just work at compile time also - normal vars should work at compile time as well. but it seems they dont unless you mark them so epxlicitly |
| 17:18:15 | Zevv | which in hindsight kind of makes sense, but was not really obvious to me |
| 17:19:01 | Zevv | so make them var {.compileTime.} |
| 17:38:09 | shashlick | @leorize - regargin {.compile.} calls |
| 17:38:11 | shashlick | regarding |
| 17:38:24 | shashlick | that's what i was doing for all other wrappers i've worked on |
| 17:38:38 | shashlick | and it was hard and tedious but was cool to make a static binary with no dependencies |
| 17:38:45 | shashlick | but the effort does not scale |
| 17:39:02 | shashlick | and with nimarchive, i hit a wall where it compiled but crashed |
| 17:39:11 | shashlick | and i didn't see the crash with a static link to a .a file |
| 17:42:57 | * | laaron quit (Remote host closed the connection) |
| 17:49:57 | * | laaron joined #nim |
| 18:06:57 | * | livcd joined #nim |
| 18:07:23 | * | krux02 joined #nim |
| 18:21:36 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
| 18:22:15 | * | laaron joined #nim |
| 18:35:54 | * | elrood quit (Remote host closed the connection) |
| 18:48:33 | * | nsf joined #nim |
| 19:08:54 | * | snooptek quit (Remote host closed the connection) |
| 19:09:18 | * | Vladar quit (Remote host closed the connection) |
| 19:18:55 | * | actuallybatman joined #nim |
| 19:23:22 | * | endragor joined #nim |
| 19:25:14 | * | wildtrees joined #nim |
| 19:52:48 | Cadey | dom96: i'm trying to make a jester app on a custom port, but i'm getting this error: ... /home/cadey/code/wat/src/wat.nim(175, 3) Error: 'port' cannot be assigned to |
| 19:52:51 | Cadey | uploading code for you, sec |
| 19:53:30 | Cadey | https://github.com/Xe/wat/blob/master/src/wat.nim#L174-L175 |
| 19:54:55 | dom96 | try putting it above `routes` |
| 19:56:35 | Cadey | same error dom96 |
| 19:57:34 | Cadey | using jester 0.4.3 |
| 19:58:16 | * | endragor quit (Remote host closed the connection) |
| 19:58:41 | dom96 | Cadey, can you check if this works? https://github.com/dom96/jester/blob/master/tests/alltest.nim#L17 |
| 19:59:40 | Cadey | nope |
| 19:59:44 | Cadey | it doesn't work |
| 20:01:45 | Cadey | port = Port(5939) |
| 20:01:50 | Cadey | still get the same error |
| 20:01:56 | Cadey | should this before routers too? |
| 20:02:26 | Cadey | okay it works before the routers |
| 20:03:02 | Cadey | i don't know if this is a bug in jester or not |
| 20:03:54 | dom96 | routers creates its own settings block if it doesn't detect one AFAIK |
| 20:04:01 | dom96 | and it probably generates it as a `let` |
| 20:04:49 | Cadey | ah |
| 20:05:04 | Cadey | Araq: how would i use ormin across multiple nim modules? |
| 20:05:22 | Cadey | dom96: it works now, thanks |
| 20:05:38 | dom96 | Cadey, please make an issue for this |
| 20:05:43 | Cadey | wull do |
| 20:05:46 | Cadey | i'm working on the jester stuff while making a fairly complicated exmaple |
| 20:09:03 | Cadey | dom96: please take a look: https://github.com/dom96/jester/issues/209 |
| 20:09:22 | dom96 | looks good, thanks |
| 20:10:34 | Cadey | no problem |
| 20:23:13 | FromGitter | <Varriount> Well... This is certainly interesting: https://www.reddit.com/r/programming/comments/cus0zu/a_3mil_downloads_per_month_javascript_library/ |
| 20:29:20 | FromGitter | <awr1> has anyone ever asked if we could get the `not nil` annotation on `distinct pointer` types? |
| 20:30:21 | FromGitter | <mratsim> not nil is a bit tricky to work with ... there is always one step where the compiler cannot prove not nil ... |
| 20:30:22 | FromGitter | <awr1> i've got a library i'm binding too with a lot of opaque handles so I'm making them `distinct pointer` to avoid any wrongful type messiness |
| 20:31:08 | FromGitter | <awr1> but `not nil` doesn't work on distinct so I'm wondering if I should just make them `ptr` to some...hidden type thing? |
| 20:31:20 | FromGitter | <awr1> *binding to |
| 20:32:07 | * | narimiran quit (Ping timeout: 246 seconds) |
| 20:32:11 | FromGitter | <awr1> alternatively I could use `Option`, but `Option` probably doesn't do the nullptr optimization for distinct pointers |
| 20:34:05 | FromGitter | <mratsim> oh |
| 20:34:38 | FromGitter | <mratsim> I think not nil should work on distinct and Option should also do the null pointer optimisation for distinct pointer |
| 20:35:37 | FromGitter | <awr1> should I make an issue I guess? |
| 20:36:33 | FromGitter | <mratsim> Yes, note it might probably be impossible to implement without reworking distinct type vs bind many due to reusing the same keyword for 2 different concepts: https://github.com/nim-lang/RFCs/issues/153 |
| 20:36:40 | FromGitter | <mratsim> note that* |
| 20:37:15 | FromGitter | <awr1> the `Option` thing can probably be easily fixed, I think @timotheecour or someone else made that `distinctBase()` macro (or something along the lines of that) that can be used to acquire the root type |
| 20:37:48 | Araq | type Foo = ptr object |
| 20:38:02 | Araq | is how you wrap opaque pointers, not with 'distinct' |
| 20:38:40 | FromGitter | <awr1> hmm! didn't know you could do that |
| 20:38:40 | FromGitter | <awr1> thanks |
| 20:41:17 | FromGitter | <mratsim> btw, regarding https://github.com/nim-lang/Nim/pull/11816, thoughts on adding the enhancements in different phases? |
| 20:41:49 | FromGitter | <awr1> oh crap i need to work on that lol. i've been busy as of recent |
| 20:42:13 | FromGitter | <awr1> yeah that's a good idea |
| 20:43:50 | FromGitter | <mratsim> just the x86 stuff would help me not having to submodule cpuinfo in all my low-level repo :P https://github.com/mratsim/weave/tree/master/benchmarks |
| 20:44:09 | FromGitter | <awr1> you probably want the x86 features soon. ARM is trickier because `/proc/cpuinfo` needs to be probed, which doesn't have a perfect Windows analogue (i.e. IsProcessorFeaturePresent()) |
| 20:44:58 | Cadey | dom96: should before filters in subroutes be bubbling up to the parent? |
| 20:45:10 | Cadey | subrouters* |
| 20:45:29 | FromGitter | <awr1> and I mention Windows on ARM since supposedly WIndows on ARM laptops are potentially going to be a thing in the next couple of years |
| 20:45:29 | FromGitter | <mratsim> I think Windows ARM is not really a priority :P |
| 20:45:37 | FromGitter | <awr1> not a priority right now, i agree |
| 20:45:45 | FromGitter | <mratsim> Windows Phones were on ARM? |
| 20:45:49 | FromGitter | <awr1> but it could in the future |
| 20:45:51 | FromGitter | <awr1> they were |
| 20:46:17 | FromGitter | <awr1> microsoft did this new windows 10 on ARM thing where it's not the cut down store-only .NET stuff |
| 20:46:35 | FromGitter | <mratsim> Facebook's CPUInfo only considers Android, Iphone, Linux: https://github.com/pytorch/cpuinfo/tree/master/src/arm |
| 20:46:46 | FromGitter | <awr1> and it is full native Win10, plus i386 emulation built in WoW64 |
| 20:47:29 | FromGitter | <awr1> i mean it's not relevant right now, but the future could be weird |
| 20:47:35 | FromGitter | <awr1> idk |
| 20:48:27 | Araq | Windows on ARM is old stuff |
| 20:49:19 | Cadey | https://gist.github.com/Xe/8f5ca6baa68186247433a7fcfff71b50 dom96 like this |
| 20:49:20 | FromGitter | <awr1> @Araq not anymore https://mspoweruser.com/at-least-4-snapdragon-8cx-windows-10-on-arm-laptops-coming-to-europe-next-year/ |
| 20:50:17 | FromGitter | <awr1> microsoft scrapped the old windows sandboxed .NET-only ARM model from a few years back and came out with this rather recently |
| 20:50:38 | FromGitter | <mratsim> I expect they will introduce some hardware info abstraction |
| 20:51:04 | FromGitter | <mratsim> parsing proc/cpuinfo is a bit meh |
| 20:51:31 | FromGitter | <awr1> and considering apple wants to move their laptops to ARM too, the industry being shaked up by this is certainly a possibility |
| 20:51:37 | FromGitter | <mratsim> 1) ideally you don't want to allocate for such a low-level feature and working with strings is not ideal |
| 20:51:44 | FromGitter | <mratsim> + |
| 20:52:08 | FromGitter | <awr1> i think there is a way you can get cpu features on linux without proc cpuinfo |
| 20:53:55 | Araq | iofnctl |
| 20:54:21 | FromGitter | <awr1> ARM makes this annoying because all their "cpu feature" stuff is hidden behind supervisor-level instructions |
| 20:56:02 | dom96 | Cadey, that's a good question |
| 20:56:14 | Cadey | i found it surprising personally |
| 20:56:17 | dom96 | I think they should only apply for /api |
| 20:56:24 | Cadey | i'll go file another bug |
| 20:56:52 | FromGitter | <awr1> i'll see if I can get the cpuinfo x86 features ready sometime today or tomorrow. i don't know if i can do tests for it since its hardware sensitive |
| 20:56:58 | * | shomodj joined #nim |
| 20:57:33 | FromGitter | <mratsim> I also had a look into hwloc from the OpenMPI project (https://github.com/open-mpi/hwloc/tree/master/hwloc) because it's the only one that supports NUMA and also detect hyperthreading siblings (which are very annoying in high-performance computing) |
| 20:57:41 | FromGitter | <mratsim> but it's quite complex |
| 20:57:53 | Cadey | https://github.com/dom96/jester/issues/210 |
| 20:58:25 | * | shomodj quit (Client Quit) |
| 20:58:32 | FromGitter | <awr1> you can check for HTT/thread topology with cpuid in x86, but i think the "preferred way" is to just use the OS |
| 20:59:09 | FromGitter | <awr1> since the OS can turn off HW threads in certain configurations if it really wants to |
| 21:00:39 | * | al_ joined #nim |
| 21:00:54 | * | shomodj joined #nim |
| 21:01:20 | FromGitter | <mratsim> AFAIK it's a mess with cpuid :p Intel had various changes between pentium 4, Nehalem and Sandy bridge+ |
| 21:02:36 | FromGitter | <mratsim> but my main need is knowing on a 4 cores machine if cores {0, 1} and {2, 3} are siblings or if its cores {0, 2} and {1, 3} |
| 21:03:06 | Araq | write some startup logic to detect it at runtime :P |
| 21:03:47 | FromGitter | <awr1> i remember a video IBM had demonstrating SMT performance on POWER on some linux system and they swtiched from 2 SMT threads per core to 8 SMT threads to show off the performance increase, so i assume that's just a feature that OSs can do apparently. although exactly *why* one would need to turn off hardware threads while the system is up is beyond me |
| 21:04:27 | FromGitter | <mratsim> Hyperthreading means that the logical cores share L1/L2 cache, so with HT those are 2x smaller on a workload that can make use of all the cache. It also means that memory bandwidth is shared. And obviously HPC workloads are almost all memory bandwidth bound ... |
| 21:04:55 | FromGitter | <mratsim> Xeon Phi have 4 Hyperthread siblings per physical core |
| 21:05:44 | Cadey | mratsim: this smells like premature optimization |
| 21:05:58 | FromGitter | <mratsim> It's not |
| 21:06:36 | FromGitter | <mratsim> It's state-of-the art optimization and making regular Nim code faster than C/FOrtran/C++ |
| 21:06:51 | FromGitter | <mratsim> and assembly |
| 21:07:51 | FromGitter | <mratsim> You can read the papers and the comments interleave with my code here: https://github.com/numforge/laser/blob/master/laser/primitives/matrix_multiplication/gemm_tiling.nim#L12-L30 |
| 21:08:13 | FromGitter | <awr1> are "hot-pluggable CPUs" a thing in the HPC space? |
| 21:08:23 | FromGitter | <mratsim> I need to take into account L1 cache, L2 cache, TLB sizes and number of registers to get the max performance |
| 21:08:52 | Cadey | dom96: based on what i'm reading, couldn't this be fixed by having the before and after filters respect the prefix in the extend command handler? https://github.com/dom96/jester/blob/master/jester.nim#L1076-L1107 |
| 21:09:51 | FromGitter | <mratsim> @awr1, not sure, I didn't try "true HPC" with a cluster of thousands of CPUs :P |
| 21:10:21 | FromGitter | <mratsim> I know that in CERN you reserve a timeslice and some CPU so you basically have a VM |
| 21:20:50 | * | endragor joined #nim |
| 21:26:18 | * | endragor quit (Ping timeout: 245 seconds) |
| 21:37:51 | * | al_ quit (Quit: al_) |
| 21:49:49 | * | solitudesf quit (Ping timeout: 246 seconds) |
| 22:00:03 | * | actuallybatman quit (Ping timeout: 245 seconds) |
| 22:07:05 | * | actuallybatman joined #nim |
| 22:07:36 | * | actuallybatman quit (Client Quit) |
| 22:13:31 | * | nsf quit (Quit: WeeChat 2.5) |
| 22:34:48 | * | actuallybatman joined #nim |
| 23:03:57 | * | krux02 quit (Remote host closed the connection) |
| 23:04:57 | * | actuallybatman quit (Remote host closed the connection) |
| 23:10:22 | * | actuallybatman joined #nim |
| 23:19:48 | * | shomodj quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 23:20:30 | * | couven92 quit (Read error: Connection reset by peer) |
| 23:21:37 | * | couven92 joined #nim |
| 23:37:27 | * | couven92 quit (Read error: Connection reset by peer) |
| 23:38:34 | * | couven92 joined #nim |
| 23:51:30 | * | couven92 quit (Read error: Connection reset by peer) |
| 23:52:29 | * | couven92 joined #nim |