00:07:37 | * | wb_ quit (Ping timeout: 264 seconds) |
00:07:49 | * | sampwing joined #nim |
00:10:03 | * | vendethiel quit (Ping timeout: 264 seconds) |
00:11:43 | * | vendethiel joined #nim |
00:16:21 | * | sampwing quit (Ping timeout: 252 seconds) |
00:20:28 | Var|Mobile | onionhammer: view.window() doesn't always work |
00:21:35 | * | TEttinger joined #nim |
00:32:31 | * | nande quit (Ping timeout: 255 seconds) |
00:33:07 | * | nande joined #nim |
01:01:58 | * | deXtoRious quit (Ping timeout: 246 seconds) |
01:11:57 | * | fizzbooze quit (Quit: WeeChat 1.1.1) |
01:18:02 | * | darkf joined #nim |
01:18:09 | * | infinity0 quit (Ping timeout: 245 seconds) |
01:18:14 | * | infinity0_ joined #nim |
01:18:30 | * | infinity0_ quit (Changing host) |
01:18:30 | * | infinity0_ joined #nim |
01:18:30 | * | infinity0_ is now known as infinity0 |
01:19:47 | * | miko_ quit (Ping timeout: 250 seconds) |
01:20:06 | Varriount | Um, are int's supposed to be non-implicitly-convertible to floats? |
01:20:18 | * | vendethiel quit (Ping timeout: 252 seconds) |
01:20:20 | def- | float(x)? |
01:20:35 | def- | I would say so |
01:21:07 | Varriount | def-: I mean, passing an integer type, even an integer literal, to a proc expecting a float requires manual conversion |
01:21:51 | def- | ok, would be nicer if that was implicit, yes. but could be a problem with overloaded procs |
01:22:01 | * | vendethiel joined #nim |
01:22:19 | Varriount | .eval import math;echo(log10(20)) |
01:22:22 | Mimbus | Varriount: 1.301029995663981 |
01:22:33 | Varriount | Ok, now I'm flummoxed. |
01:23:50 | * | reem quit (Remote host closed the connection) |
01:24:48 | Varriount | .eval import math;let x=3;echo(pow(2, x)) |
01:24:51 | Mimbus | Varriount: eval.nim(5, 8) Error: type mismatch: got (int literal(2), int) |
01:24:59 | Varriount | def-: ^ |
01:25:37 | def- | i think i remember that, it's strange |
01:26:25 | Varriount | Ah well, I'll just stick a converter into my code. |
01:26:28 | * | reem joined #nim |
01:39:37 | fowl | literals are more flexible than var/let |
01:43:05 | * | vendethiel quit (Ping timeout: 246 seconds) |
01:45:45 | * | vendethiel joined #nim |
01:46:44 | * | Schala joined #nim |
01:47:41 | Schala | How does one enforce enum scope? I remember some syntax or pragma for it but it's not documented apparently. |
01:54:24 | * | BitPuffin quit (Ping timeout: 252 seconds) |
01:55:01 | * | Demon_Fox joined #nim |
01:57:45 | * | Trustable quit (Remote host closed the connection) |
01:58:55 | * | Trustable joined #nim |
02:02:02 | flaviu | {.pure.} |
02:02:13 | flaviu | Schala: ^ |
02:06:35 | Schala | ooh ok thanks |
02:06:54 | * | vendethiel quit (Ping timeout: 245 seconds) |
02:08:37 | Schala | and also, I wanted to use a binary buffer of some sort. I thought of using sttring or seq[int8] but I wouldn't know how to insert/extract |
02:09:05 | Schala | using addr would probably point to GC metadata I'd fear |
02:09:08 | * | chemist69_ joined #nim |
02:09:11 | * | vendethiel joined #nim |
02:09:21 | def- | Schala: addr mySeq[0] |
02:10:09 | Schala | and setLen(mySeq, mySeq.len+4) would work too? |
02:10:18 | def- | yes |
02:10:24 | Schala | awesome thanks |
02:12:13 | * | chemist69 quit (Ping timeout: 250 seconds) |
02:27:33 | flaviu | I don't think there's any guarantee that the pointer will still be valid after a resize |
02:31:43 | def- | right |
02:34:20 | * | brson joined #nim |
02:34:20 | * | brson quit (Client Quit) |
02:35:55 | * | reem quit (Remote host closed the connection) |
02:42:37 | * | reem joined #nim |
02:43:30 | * | nande quit (Remote host closed the connection) |
02:52:34 | * | Schala quit (Ping timeout: 246 seconds) |
03:05:22 | * | reem quit (Remote host closed the connection) |
03:12:00 | * | reem joined #nim |
03:12:31 | * | nimnoob123 quit (Quit: Page closed) |
03:13:08 | * | saml_ joined #nim |
03:13:51 | * | reem quit (Remote host closed the connection) |
03:16:12 | * | reem joined #nim |
03:17:22 | fowl | nice seeing schala again |
03:17:49 | * | vendethiel quit (Ping timeout: 264 seconds) |
03:20:43 | * | vendethiel joined #nim |
03:21:49 | * | Trustable quit (Remote host closed the connection) |
03:42:22 | * | kapil___ joined #nim |
03:44:59 | * | vendethiel quit (Ping timeout: 252 seconds) |
03:53:59 | * | johnsoft quit (Ping timeout: 246 seconds) |
03:54:19 | * | johnsoft joined #nim |
03:57:46 | * | vendethiel joined #nim |
04:05:06 | * | reem quit (Remote host closed the connection) |
04:07:33 | * | reem joined #nim |
04:07:44 | * | reem quit (Remote host closed the connection) |
04:09:44 | * | randomwalk joined #nim |
04:10:42 | * | reem joined #nim |
04:12:01 | randomwalk | Hi, compiling from Aporia works for --app:console but not --app:gui ...ld.exe says can't find -lgdi32 and -lcomdlg32 ... has anyone else resolved this problem? |
04:15:01 | fowl | randomwalk, aporia uses gtk so it doesnt need those libraries, you should compile with no arguments `nim c aporia` |
04:15:32 | * | reem quit (Ping timeout: 265 seconds) |
04:16:00 | randomwalk | fowl: oh. so is the gui option still used? |
04:16:23 | randomwalk | by anyone? |
04:17:03 | fowl | that is the application |
04:18:59 | randomwalk | hrmm.....I thought on Win32 you couldn't create a window from a console app... |
04:20:13 | * | gsingh93 quit (Ping timeout: 255 seconds) |
04:25:27 | * | reem joined #nim |
04:27:06 | * | jholland quit (Quit: Connection closed for inactivity) |
04:36:04 | * | ruzu joined #nim |
04:36:48 | fowl | randomwalk, well it doesnt use windows forms, you said it compiled, did you try to run it |
04:37:07 | fowl | if it doesnt run then you are probably missing dependencies |
04:47:54 | randomwalk | it's just echo("hello Nim").........I'm just setting up the IDE |
04:50:15 | * | vendethiel quit (Ping timeout: 252 seconds) |
04:55:53 | Varriount | randomwalk: You can create a window from a console application on Windows. Java and Python do it if you try to use their GUI libraries without invoking the proper executable (javaw and pythonw) |
04:58:45 | * | dts|pokeball joined #nim |
04:59:46 | * | dts|pokeball quit (Remote host closed the connection) |
05:07:06 | * | vendethiel joined #nim |
05:11:33 | * | randomwalk quit (Quit: Page closed) |
05:18:25 | * | reem quit (Remote host closed the connection) |
05:22:07 | * | reem joined #nim |
05:24:16 | * | wb_ joined #nim |
05:24:41 | * | brson joined #nim |
05:32:01 | * | vendethiel quit (Ping timeout: 256 seconds) |
05:34:39 | * | randomwalk joined #nim |
05:35:07 | * | vendethiel joined #nim |
05:35:19 | randomwalk | SetProcessDPIAware() isn't in the windows module...how do I call it? |
05:35:20 | randomwalk | https://msdn.microsoft.com/en-us/library/windows/desktop/ms633543%28v=vs.85%29.aspx |
05:37:40 | reactormonk | randomwalk, add it yourself via importc |
05:39:49 | randomwalk | oh, I see the FFI now. Thx reactormonk :) |
05:40:18 | reactormonk | randomwalk, it's not so much FFI as just code generation. |
05:40:58 | randomwalk | yes, I understand. thx |
05:59:55 | * | shalabh joined #nim |
06:00:38 | shalabh | hello |
06:00:47 | shalabh | def- around? |
06:06:21 | * | vendethiel quit (Ping timeout: 244 seconds) |
06:08:02 | randomwalk | When I try this code, I get a bunch of typedef errors: |
06:08:04 | randomwalk | proc SetProcessDPIAware() {.header: "<Winuser.h>", importc: "SetProcessDPIAware".} SetProcessDPIAware() |
06:11:40 | * | RayoGundead joined #nim |
06:14:16 | * | vendethiel joined #nim |
06:14:20 | * | shalabh quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) |
06:18:23 | reactormonk | randomwalk, which ones? |
06:19:58 | * | bjz joined #nim |
06:23:18 | * | reem quit (Remote host closed the connection) |
06:24:37 | randomwalk | reactormonk: hmmm...if I change winuser.h to windows.h those errors go away, but now I have a linking error |
06:25:18 | reactormonk | randomwalk, I'm not too sure how to read the header files there |
06:25:33 | reactormonk | or rather the documentation on the header files |
06:26:15 | randomwalk | CC: hello [Linking] Error: execution of an external program failed > Process terminated with exit code 1 |
06:26:38 | reactormonk | huh. |
06:26:53 | reactormonk | You might need to add some passL arguments |
06:27:59 | * | bjz quit (Ping timeout: 246 seconds) |
06:30:19 | randomwalk | I'll increase the compiler verbosity and see if I get more info... |
06:31:08 | reactormonk | that should help |
06:32:10 | * | reem joined #nim |
06:36:35 | * | ruzu quit (Read error: Connection reset by peer) |
06:39:48 | randomwalk | PassL didn't seem to help...verbosity level 2 wasn't interesting...running level 3 now... (very slow compiling windows.nim !!!) |
06:43:41 | * | vendethiel quit (Ping timeout: 246 seconds) |
06:46:36 | randomwalk | c:\nim\lib\windows\windows.nim(23925, c:\users\me\desktop\nimcache\hello.o:hello.c:(.text+0xed): undefined reference to `SetProcessDPIAware' 0) |
06:46:48 | * | saml_ quit (Quit: Leaving) |
06:48:26 | * | ruzu joined #nim |
06:48:38 | * | ruzu quit (Changing host) |
06:48:38 | * | ruzu joined #nim |
06:48:57 | * | vendethiel joined #nim |
06:48:59 | * | brson quit (Quit: leaving) |
06:49:00 | ruzu | test! |
06:52:19 | * | ntjnsz joined #nim |
06:54:00 | * | bjz joined #nim |
06:55:18 | * | fizzbooze joined #nim |
06:55:36 | TEttinger | hey ruzu |
06:55:43 | fizzbooze | anyone here? |
06:55:47 | TEttinger | yep |
06:55:50 | TEttinger | quite a lot |
06:56:13 | fizzbooze | i hear that Nim's GC isn't threadsafe. is that true? |
06:56:55 | TEttinger | I'm still starting out with Nim, there are much more competent people than myself in here |
06:57:01 | * | ChrisMAN quit (Ping timeout: 256 seconds) |
06:58:18 | TEttinger | ruzu: making a 7DRL in Nim? |
06:59:23 | * | Demon_Fox quit (Quit: Leaving) |
07:00:27 | randomwalk | Does my syntax look correct? proc SetProcessDPIAware() {.header: "<Windows.h>", importc: "SetProcessDPIAware".} |
07:04:45 | * | johnsoft quit (Read error: Connection reset by peer) |
07:05:10 | * | johnsoft joined #nim |
07:06:24 | * | nimnoob123 joined #nim |
07:11:22 | * | infinity0 quit (Ping timeout: 240 seconds) |
07:12:05 | nimnoob123 | feels good when things just work http://i.imgur.com/1Av2vqM.png, making progress w/ nim and sdl2 ;D - also learned that the ttf library requires all functions that return cint need to be discarded - might do a pull request later to make those discardable |
07:12:26 | nimnoob123 | procs* sorry :) |
07:15:22 | * | infinity0 joined #nim |
07:20:00 | ruzu | TEttinger: anything is possible |
07:25:21 | nimnoob123 | quick question: Is there a simpler way to write this var myfont_color : sdl2.Color = (uint8(0), uint8(0), uint8(0), uint8(0)) - (the uint8 part, sdl2.Color is a tuple of uint8's) |
07:26:21 | nimnoob123 | because it throws an error if I type it any other way w/out the typecasting of uint8's |
07:26:26 | * | fizzbooze quit (Ping timeout: 244 seconds) |
07:27:43 | TEttinger | nimnoob123: make a helper method that returns a Color, is passed 4 integers, and casts them all to uint8 internally before constructing a Color? |
07:28:38 | nimnoob123 | yeah i guess that works, is that the only solution when it comes to nim syntax? |
07:36:47 | * | Outlander quit (Ping timeout: 250 seconds) |
07:37:42 | * | heinrich5991 quit (Excess Flood) |
07:38:05 | * | heinrich5991 joined #nim |
07:48:03 | * | randomwalk quit (Quit: Page closed) |
07:50:19 | nimnoob123 | any plans on adding a parent keyword for the import dot syntax ex.: import parent.moduleInParentFolder, or is there something like that already? because the string syntax looks pretty ugly ".../moduleInParentFolder" |
07:50:41 | * | MyMind joined #nim |
07:50:59 | nimnoob123 | my class question of the night :) |
07:51:23 | nimnoob123 | last* |
07:51:54 | * | Sembei quit (Ping timeout: 245 seconds) |
07:53:49 | * | vendethiel quit (Ping timeout: 264 seconds) |
07:54:30 | * | vendethiel joined #nim |
08:01:59 | fowl | nimnoob123, the proper thing to do would be to check those calls for error |
08:02:33 | nimnoob123 | hmm? |
08:02:47 | fowl | the functions in sdl2/ttf |
08:02:51 | fowl | wont be discardable |
08:04:00 | nimnoob123 | oh you're talking about that |
08:04:42 | fowl | and use this for creating a color |
08:04:44 | fowl | proc color*(r, g, b, a: range[0..255]): Color |
08:05:09 | nimnoob123 | yeah |
08:05:17 | nimnoob123 | what about the import question |
08:06:19 | fowl | nimnoob123, well if parent module is on the search path then its just "parentmodule" for example the libs in sdl2/ could just import 'sdl2' |
08:07:53 | nimnoob123 | hmm, didn't really notice that |
08:10:45 | nimnoob123 | hmm yeah - compiler says it can't open the file - there's root, root/subfolder and root/subfolder/subsubfolder, my module in root/subfolder/subsubfolder can't import the module in that parent folder like you said - how would I know if the module is on the search path? |
08:11:30 | nimnoob123 | tbh i'd rather just do parent.moduleinparentfolder - easier to understand what's going on when viewing source |
08:13:11 | fowl | nimnoob123, so you want to use subfolder.module but you want to just call it module? |
08:16:28 | nimnoob123 | http://pastie.org/9974045 |
08:16:59 | * | BlaXpirit joined #nim |
08:17:06 | fowl | you want to use "parent." instead of "../", no, you cant do that |
08:17:18 | nimnoob123 | yeah |
08:17:56 | nimnoob123 | so: any plans on adding a parent keyword for the import dot syntax |
08:18:11 | fowl | i hope not |
08:18:24 | nimnoob123 | why not, looks much cleaner |
08:18:25 | fowl | too many keywords already |
08:18:33 | fowl | in your opinion |
08:18:39 | nimnoob123 | sure in my opinion |
08:18:43 | fowl | i would look at that and say 'there must be a parent directory' |
08:18:53 | nimnoob123 | that's the whole poitn |
08:18:55 | nimnoob123 | point* |
08:19:12 | fowl | then i wouldn't find a directory called 'parent' |
08:19:21 | nimnoob123 | oh my god lol |
08:23:06 | nimnoob123 | I'm going to bed, night |
08:23:09 | * | nimnoob123 quit (Quit: Page closed) |
08:23:10 | fowl | good night |
08:24:27 | * | TEttinger quit (Ping timeout: 245 seconds) |
08:27:45 | * | aidanh joined #nim |
08:31:02 | * | johnsoft quit (Read error: Connection reset by peer) |
08:35:12 | * | reem quit (Remote host closed the connection) |
08:42:26 | * | Trustable joined #nim |
08:47:22 | * | Trustable quit (Remote host closed the connection) |
08:48:08 | * | Trustable joined #nim |
09:03:34 | * | gokr joined #nim |
09:05:49 | * | gokr_ quit (Ping timeout: 264 seconds) |
09:12:20 | * | teapottime joined #nim |
09:27:08 | * | sillesta joined #nim |
09:27:40 | * | chemist69_ quit (Quit: WeeChat 1.1.1) |
09:27:50 | * | chemist69 joined #nim |
09:36:59 | BlaXpirit | How to check if compiler is Visual Studio? |
09:37:22 | dtscode | do you mean visual c++? |
09:37:24 | BlaXpirit | when defined(gcc): seems to work but |
09:37:26 | BlaXpirit | well yeah |
09:40:22 | * | kuzy000_ joined #nim |
09:43:39 | * | akiradeveloper joined #nim |
09:49:35 | * | dumdum joined #nim |
10:15:35 | akiradeveloper | When the c source code that is generated by nim compiler is huge. The compile time is like forever. Can I make it fast? I generate thousands of test cases for msgpack-nim by QuickCheck and the nim source code becomes huge. |
10:16:24 | akiradeveloper | I think more tests should be run but it's not practical at the moment. |
10:18:16 | * | czr quit (Remote host closed the connection) |
10:20:22 | * | antrix joined #nim |
10:25:44 | * | keyle joined #nim |
10:34:45 | Araq | akiradeveloper: -d:release produces less C code |
10:35:06 | Araq | but it doesn't take "forever" for most of us |
10:36:01 | def- | akiradeveloper: you mean with the unittest module? |
10:36:36 | akiradeveloper | look at this and assume what I am doing? https://github.com/akiradeveloper/msgpack-nim |
10:37:38 | akiradeveloper | produce a list of test cases (GenTests.hs) and generate a single test file (gentest.rb), compile and run |
10:38:04 | akiradeveloper | the number of test case is 1000 but it will take forever if I set it to 10000 |
10:38:57 | def- | akiradeveloper: ok, i just wondered because i had that problem with unittest |
10:38:59 | akiradeveloper | cc1 process (I guess it is gcc) never end |
10:39:11 | def- | akiradeveloper: so it's the C compiler that takes forever, not nim? |
10:39:54 | Araq | ah so you are complaining that the unittest module that is still not in the official documentation and we like to die causes problems for you ... |
10:40:02 | akiradeveloper | I think so. I look at the top. nim ends soon but the cc1 phase never end |
10:40:51 | akiradeveloper | oh... it ends in 1 minutes with release flag. no one can call this forever |
10:41:45 | akiradeveloper | Sorry to confuse you |
10:41:54 | def- | akiradeveloper: i guess it's not a good idea to create such huge source files |
10:42:40 | def- | akiradeveloper: i don't understand fully what you're doing, but creating a shorter source and some external files (that don't need to be compiled) would be the proper solution I guess? |
10:42:53 | def- | If you just want a quick fix, I bet tinycc compiles this quickly anyway |
10:44:06 | akiradeveloper | Nim can generate nim object from string? (like eval in Ruby) |
10:44:50 | * | pafmaf joined #nim |
10:45:00 | akiradeveloper | for example. If I can generate MyType(10) from a string "MyType(10)". Your solution can reduce compile time |
10:45:14 | fowl | akiradeveloper, there is marshaling |
10:45:26 | def- | http://nim-lang.org/marshal.html and http://nim-lang.org/typeinfo.html |
10:47:17 | akiradeveloper | Sorry, "MyType(10)" is function call. also possible with the libraries? |
10:47:50 | Araq | you can build a compile-time eval with macros |
10:47:59 | Araq | but no runtime eval |
10:48:02 | * | JinShil joined #nim |
10:48:38 | akiradeveloper | the string is read from external file. |
10:49:08 | fowl | to play with it use $$ and to() |
10:49:46 | akiradeveloper | ok |
10:49:51 | fowl | Araq, will nim target RCC++? |
10:50:46 | fowl | akiradeveloper, you can use load/store with stringstreams too |
10:52:05 | Araq | fowl: possibly, but I still think we only need to produce different code for accessing globals to solve the REPL problem |
10:52:37 | fowl | whats the repl problem |
11:01:03 | * | darkf_ joined #nim |
11:02:11 | * | Outlander joined #nim |
11:02:49 | Araq | to keep state between recompilations |
11:03:25 | * | darkf quit (Ping timeout: 264 seconds) |
11:09:23 | * | pafmaf quit (Quit: Verlassend) |
11:11:46 | * | JinShil quit (Quit: Konversation terminated!) |
11:14:36 | * | gokr nods in agreement and drinks more beer... |
11:15:08 | * | gokr quit (Quit: IRC for Sailfish 0.9) |
11:16:53 | * | antrix quit (Quit: Leaving) |
11:19:07 | * | gokr joined #nim |
11:20:47 | ruzu | time to make a compile-to-nim language :> |
11:22:53 | * | johnsoft joined #nim |
11:32:36 | keyle | :) |
11:32:50 | keyle | I wish I'd understood better the html dsl to make my own dsl. |
11:34:53 | * | darkf_ is now known as darkf |
11:35:48 | * | reem joined #nim |
11:40:05 | * | yymoto2 joined #nim |
11:40:11 | * | reem quit (Ping timeout: 252 seconds) |
11:55:15 | * | yymoto2 quit (Quit: leaving) |
11:56:45 | * | RayoGundead quit (Quit: Page closed) |
12:00:15 | * | akiradeveloper quit (Remote host closed the connection) |
12:01:11 | * | akiradeveloper joined #nim |
12:09:15 | * | dumdum quit (Ping timeout: 256 seconds) |
12:17:49 | * | federico3 quit (Ping timeout: 264 seconds) |
12:18:59 | * | federico3 joined #nim |
12:31:31 | * | federico3 quit (Quit: WeeChat 0.3.8) |
12:31:42 | * | federico3 joined #nim |
12:32:44 | * | akiradeveloper quit (Remote host closed the connection) |
12:37:28 | * | novist quit (Quit: ZNC - http://znc.in) |
13:08:14 | * | gokr1 joined #nim |
13:15:51 | * | keyle quit (Quit: <Morbo> Chitchat achieved!) |
13:22:15 | * | Etheco quit (Read error: Connection reset by peer) |
13:33:16 | * | akiradeveloper joined #nim |
13:38:13 | * | akiradeveloper quit (Ping timeout: 264 seconds) |
13:43:52 | * | akiradeveloper joined #nim |
13:44:27 | * | gokr1 quit (Quit: Leaving.) |
13:45:22 | * | panzone joined #nim |
13:54:50 | * | mpthrapp joined #nim |
14:13:41 | * | grumbly joined #nim |
14:15:00 | * | akiradeveloper quit () |
14:21:33 | * | darkf quit (Quit: Leaving) |
14:27:31 | * | grumbly quit (Quit: Page closed) |
14:28:27 | * | gokr1 joined #nim |
14:31:25 | * | aidanh quit (Ping timeout: 252 seconds) |
14:33:55 | * | panzone quit (Remote host closed the connection) |
14:35:51 | * | aidanh joined #nim |
14:38:01 | * | Var|Mobile quit (Ping timeout: 252 seconds) |
14:38:14 | * | panzone joined #nim |
14:39:29 | * | Var|Mobile joined #nim |
14:43:49 | * | dumdum joined #nim |
14:45:05 | * | infinity0 quit (Ping timeout: 256 seconds) |
14:48:08 | * | johnsoft quit (Ping timeout: 246 seconds) |
14:48:34 | * | infinity0 joined #nim |
14:48:43 | * | johnsoft joined #nim |
14:50:01 | * | BlaXpirit_ joined #nim |
14:52:43 | * | BlaXpirit quit (Ping timeout: 250 seconds) |
14:57:30 | * | BitPuffin joined #nim |
15:01:25 | * | MajorWork joined #nim |
15:01:48 | * | gokr1 quit (Quit: Leaving.) |
15:15:46 | * | Var|Mobile quit (Quit: AndroIRC - Android IRC Client ( http://www.androirc.com )) |
15:19:46 | * | Gonzih quit (Quit: WeeChat 1.0.1) |
15:21:02 | * | Gonzih joined #nim |
15:21:19 | * | elbow quit (Remote host closed the connection) |
15:23:15 | * | pregressive joined #nim |
15:24:16 | * | saml joined #nim |
15:48:33 | * | dumdum quit (Ping timeout: 256 seconds) |
15:52:35 | * | novist joined #nim |
16:01:58 | * | gokr quit (Quit: IRC for Sailfish 0.9) |
16:06:36 | * | dumdum joined #nim |
16:08:23 | * | ChrisMAN joined #nim |
16:10:32 | * | sampwing joined #nim |
16:23:37 | * | sampwing quit (Ping timeout: 252 seconds) |
16:38:50 | * | jholland joined #nim |
16:49:36 | * | BlaXpirit_ quit (Quit: Quit Konversation) |
16:49:52 | * | BlaXpirit joined #nim |
16:50:57 | * | pregressive quit (Read error: Connection reset by peer) |
17:02:10 | * | Etheco joined #nim |
17:09:28 | * | kniteli quit (Quit: Leaving) |
17:11:07 | * | teapottime quit (Ping timeout: 246 seconds) |
17:13:31 | * | nande joined #nim |
17:14:10 | * | yibter joined #nim |
17:19:27 | ekarlso | dtscode: you around ? |
17:22:55 | * | superfunc|lab joined #nim |
17:29:25 | * | pregressive joined #nim |
17:30:29 | * | johnsoft quit (Ping timeout: 246 seconds) |
17:31:09 | * | johnsoft joined #nim |
17:51:36 | * | jfchevrette joined #nim |
17:54:00 | * | shalabh joined #nim |
17:54:50 | shalabh | hello |
17:54:55 | * | dumdum quit (Ping timeout: 256 seconds) |
17:55:59 | emilsp | hey, there aren't any neural network libraries for nim are there ? |
18:02:16 | * | xcombelle joined #nim |
18:03:29 | * | gsingh93 joined #nim |
18:04:55 | fowl | emilsp, i have one in fowltek |
18:06:19 | fowl | mine is here https://github.com/fowlmouth/nimlibs/blob/master/fowltek/neural.nim |
18:06:54 | fowl | also theres a wrapper for libfann in there, the 'fast artificial neural network library' |
18:08:01 | emilsp | oh, that's great, thank you very much |
18:09:51 | fowl | sure |
18:19:12 | * | shalabh quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) |
18:28:17 | * | superfunc|lab quit (Ping timeout: 244 seconds) |
18:31:41 | * | kniteli joined #nim |
18:33:24 | emilsp | fowl, out of interest, what have you used the library for ? |
18:39:03 | * | dumdum joined #nim |
18:44:14 | * | emilsp quit (Read error: Connection reset by peer) |
18:48:43 | * | johnsoft quit (Ping timeout: 255 seconds) |
18:49:10 | * | johnsoft joined #nim |
18:52:23 | * | TEttinger joined #nim |
18:54:02 | * | randomwalk joined #nim |
18:54:52 | randomwalk | How do I insert a #define statement into code generated by importc? |
18:55:51 | randomwalk | #define WINVER 0x0601 will tell MinGW to give me the function calls I need. |
19:01:45 | Araq | randomwalk: just wrap it via .dynlib instead please |
19:02:31 | Araq | "[sdl2] Added discardable pragma to ttfInit (#29)" er guys, please stop doing that |
19:02:50 | Araq | you really shouldn't ignore every single return value |
19:02:57 | Araq | for "convenience" |
19:03:13 | * | Matthias247 joined #nim |
19:04:03 | * | johnsoft quit (Ping timeout: 250 seconds) |
19:04:22 | * | johnsoft joined #nim |
19:05:48 | * | Mat4 joined #nim |
19:05:52 | Mat4 | hello |
19:07:25 | Araq | servus |
19:16:27 | Mat4 | hi Araq |
19:16:59 | randomwalk | Araq: Thx. Nim is so easy. This code now turns off the damn DPI Scaling: |
19:17:01 | randomwalk | proc SetProcessDPIAware(): bool {.cdecl, dynlib: "User32.DLL", importc.} discard SetProcessDPIAware() |
19:17:40 | TEttinger | nice randomwalk |
19:17:59 | TEttinger | but it returns bool and discards? |
19:18:33 | randomwalk | I meant a newline there, but webchat makes it a space... |
19:18:57 | randomwalk | So I discarded it in my call |
19:21:50 | randomwalk | The only reason the Win32 API would return false to the call is if I create a window before calling that function. So yes, I should check the return value in production code, but I'm just learning nim....I don't know how to do that yet. :) |
19:24:18 | randomwalk | ...actually, I'll just log a warning if it's false.... too much chat...not enough code. :) |
19:28:27 | saml | https://github.com/saml/helloweb#example-run nim is the last place how can i make it faster? |
19:29:47 | * | shalabh joined #nim |
19:31:55 | * | shalabh quit (Client Quit) |
19:34:24 | def- | saml: i actually want to look into this. we're aware that the performance of asynchttpserver is not so good |
19:34:44 | def- | saml: you compile the nim code with "nim -d:release c", right? |
19:36:13 | def- | 37k requests/second isn't that bad, should be good enough for most workloads |
19:37:17 | Mat4 | take a lool at the go results as comparison |
19:37:37 | Mat4 | ^look |
19:38:09 | Araq | iirc --gc:markAndSweep produces a faster httpserver |
19:38:15 | saml | def-, yup |
19:38:31 | saml | yah go, js, java all beats nim |
19:38:40 | saml | nim is the only thing that uses only single core |
19:38:48 | saml | it's silly hello world test anyways :P |
19:39:45 | * | dumdum quit (Ping timeout: 256 seconds) |
19:41:40 | * | fizzbooze joined #nim |
19:46:28 | * | randomwalk quit (Quit: Page closed) |
19:51:14 | * | janprill joined #nim |
19:51:30 | BlaXpirit | verbosity: 0 in nim.cfg doesn't work |
19:54:10 | Araq | why wouldn't it? |
19:54:26 | Araq | the default value is set in nim.cfg ... |
19:55:08 | Araq | hrm no it's not |
19:57:23 | * | shalabh joined #nim |
19:57:36 | BlaXpirit | ``verbosity: 0`` Error: identifier expected, but found '0' ``verbosity: "0"`` no effect |
19:57:39 | Mat4 | hello shalabh |
20:00:05 | shalabh | Hi Mat4 |
20:00:10 | BlaXpirit | 136 :o |
20:00:30 | Mat4 | ah ok |
20:02:09 | shalabh | does anyone know when our gsoc application will be reviewed? |
20:03:28 | * | gsingh93 quit (Ping timeout: 264 seconds) |
20:04:51 | Araq | shalabh: we'll get results on 2nd of march |
20:12:15 | * | irrequietus joined #nim |
20:13:42 | * | shalabh quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) |
20:17:04 | * | shalabh joined #nim |
20:18:08 | * | gsingh93 joined #nim |
20:19:08 | * | shalabh quit (Client Quit) |
20:26:25 | * | bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
20:30:52 | * | janprill quit (Ping timeout: 255 seconds) |
20:31:08 | * | janprill joined #nim |
20:31:57 | * | pregressive quit () |
20:34:52 | * | BitPuffin quit (Ping timeout: 240 seconds) |
20:35:31 | * | Jesin quit (Quit: Leaving) |
20:35:55 | * | gsingh93 quit (Ping timeout: 250 seconds) |
20:39:02 | * | dts_ joined #nim |
20:39:02 | * | Jesin joined #nim |
20:41:34 | flaviu | saml: Doesn't your tester launch multiple threads (10) ? |
20:41:59 | * | clone1018_ quit (Ping timeout: 246 seconds) |
20:42:02 | saml | oh yah |
20:42:23 | saml | i'm probably wrong. for other languages, all cores max out. for nim, only one core maxes out |
20:42:28 | saml | from top |
20:44:54 | * | nande quit (Remote host closed the connection) |
20:45:02 | * | kjo joined #nim |
20:47:11 | * | shalabh joined #nim |
20:47:29 | shalabh | Araq:thanks |
20:48:37 | * | nande joined #nim |
20:58:19 | * | dts_ quit (Quit: Leaving) |
21:00:15 | * | jfchevrette quit (Quit: Textual IRC Client: www.textualapp.com) |
21:00:25 | * | xcombelle quit (Remote host closed the connection) |
21:05:44 | * | panzone quit (Quit: Leaving...) |
21:07:11 | * | Outlander quit (Ping timeout: 246 seconds) |
21:07:31 | Araq | saml: can you find out why that is? |
21:07:50 | saml | i thought asynchttpserver is single core? |
21:11:29 | mpthrapp | Do compiled nim programs require the nim RT to be on the machine that's executing them? |
21:12:37 | Araq | mpthrapp: no unless your nim installation has a weird setup |
21:13:21 | mpthrapp | Araq: Okay. So, if I compile the program on my machine, I can give it to a friend and they can run it without installing nim? |
21:13:35 | mpthrapp | Not the source, but the fully compiled .exe |
21:13:55 | * | clone1018_ joined #nim |
21:14:04 | * | fizzbooze quit (Ping timeout: 255 seconds) |
21:14:14 | Araq | yes |
21:14:30 | mpthrapp | Awesome, thanks. I'm just starting to learn nim, but I really like it. |
21:14:41 | mpthrapp | It's like compiled Python, but safer. |
21:18:13 | * | dtscode quit (Quit: ZNC - http://znc.in) |
21:18:16 | * | bjz joined #nim |
21:18:47 | * | dtscode joined #nim |
21:22:08 | * | pregressive joined #nim |
21:23:34 | * | dts|pokeball joined #nim |
21:24:04 | * | nande quit (Remote host closed the connection) |
21:25:34 | * | bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
21:26:59 | shalabh | nim doesn't have 'goto' statement, right? |
21:28:05 | BlaXpirit | shalabh, no, but block can do the useful things that might be done with goto |
21:28:33 | shalabh | BlaXpirit:do you mean breaking out of deeply nested loops? or something else? |
21:28:41 | BlaXpirit | mainly that |
21:28:48 | BlaXpirit | that's like the 1 use case of goto |
21:28:54 | shalabh | I noticied while has the 'computedGoto' pragma which is nice. |
21:29:24 | * | dts|pokeball quit (Quit: Leaving) |
21:33:09 | * | gsingh93 joined #nim |
21:33:35 | Mat4 | BlaXpirit: There are some other uses however quite special |
21:39:13 | * | reem joined #nim |
21:40:45 | BlaXpirit | I really can't find any other compilers except for `defined(gcc)` |
21:41:09 | * | janprill quit (Remote host closed the connection) |
21:41:17 | BlaXpirit | does not seem documented and is definitely not searchable |
21:41:55 | * | kjo2 joined #nim |
21:41:55 | * | kjo quit (Read error: Connection reset by peer) |
21:46:34 | Araq | BlaXpirit: read the very last question from here http://nim-lang.org/question.html |
21:46:46 | Araq | and now try to guess the conditional defines |
21:47:00 | Araq | I agree it's not optimal |
21:47:46 | * | janprill joined #nim |
21:48:12 | shalabh | what if i want a jump table without a while loop? |
21:48:21 | shalabh | of course i can just break at the end of each case.. |
21:48:45 | shalabh | but shouldn't the 'computedGoto' pragma be associated with the case statement and not the while? |
21:48:50 | shalabh | i feel i'm missing something.. |
21:49:07 | Araq | shalabh: than you can just use the 'case' statement and trust the Nim/C compiler to do the right thing |
21:49:18 | Araq | it only makes a difference in loops |
21:49:31 | shalabh | i see, ok |
21:51:01 | * | janprill quit (Remote host closed the connection) |
21:51:24 | Mat4 | shalabh: How do you build a jump-table without label pointers ? |
21:52:24 | shalabh | Mat4:see the 'computedGoto' pragma |
21:52:38 | shalabh | it builds the jump table for you, from your 'case' statement |
21:54:08 | Araq | well from the combination of 'while+case' actually |
21:56:08 | * | BitPuffin joined #nim |
21:56:28 | Mat4 | shalabh: ok, I've readed your statement as if you want to build up a branch table though the label-as-address extension the Gnu Compiler introduced |
21:56:58 | BlaXpirit | ok thanks |
21:59:43 | * | mpthrapp quit (Remote host closed the connection) |
22:00:22 | * | BitPuffin quit (Ping timeout: 240 seconds) |
22:05:02 | shalabh | Mat4: right |
22:05:38 | * | brson joined #nim |
22:07:37 | * | nande joined #nim |
22:09:19 | Mat4 | then its obvious you want to minimize the dispatch overhead by replacing the indirect call assembled though inlining direct branches, right ? |
22:10:57 | shalabh | yes i want to minimize the dispatch overhead |
22:11:07 | * | Demon_Fox joined #nim |
22:11:15 | shalabh | actually i was just wondering why 'computedgoto' needs to be inside a while |
22:12:45 | * | elbow joined #nim |
22:13:17 | * | Outlander joined #nim |
22:13:33 | Mat4 | for this, you will need the pointer address for generated labels |
22:14:02 | shalabh | right, nim already does that for me. |
22:15:16 | shalabh | all i do is write a 'while+case' statement and nim will generate C code that uses the computed gotos table. |
22:15:36 | * | elbow is now known as elbow_jason |
22:16:27 | Mat4 | right, you only can't access this table for inlining into a branch buffer |
22:17:10 | Araq | Mat4: I think apart from you, nobody has this problem ;-) |
22:17:29 | * | Outlander quit (Ping timeout: 246 seconds) |
22:17:55 | shalabh | Mat4:not sure what you mean |
22:18:12 | shalabh | why do i want access to the jump table? |
22:18:19 | Mat4 | take a look here: https://github.com/Mat2/Vanar/blob/master/Berana%20-%20Interpreter/interpreter-dtt-64.c |
22:18:33 | Mat4 | at the DECODE label |
22:19:57 | Mat4 | modern CPU's are superscalar with large pipelines which relate on efficient branch predicition because pipline stalls can result in somehat 20- over 100 clock cycles |
22:20:10 | * | fizzbooze joined #nim |
22:20:55 | Mat4 | this interpreter translate basic blocks of VM code to a list of direct branches (beside opcode fusion and software pipelining) |
22:21:41 | Mat4 | for bypassing the poor prediction rate of modern BTB buffers for indirect branches |
22:21:56 | shalabh | hmm, so it's kind of a jit? |
22:22:08 | Mat4 | a very simple one, yes |
22:22:12 | fizzbooze | I heard the Nim's GC isn't thread-safe. What exactly is meant by that? |
22:22:16 | shalabh | but just compiles to a sequnce of jmp instructions? |
22:23:11 | Mat4 | not directly, the jump translation is done by joining instructions reducing the dispatch overhead as addition |
22:24:24 | shalabh | not sure I understand. |
22:24:35 | shalabh | you want to avoid indexing the jump table? |
22:25:38 | Araq | fizzbooze: it means the GC is thread local and we use the type and effect system to ensure you don't screw it up. but it does limit expressitivity somewhat |
22:25:48 | Mat4 | I want to avoid the poor prediction rate for indirect branches which lead to BTB stalls (somewhat 20-42 cycles) by replacing them though direct variants |
22:26:13 | Mat4 | at runtime of course |
22:26:36 | Mat4 | at moment there exist no way to port this code to Nim |
22:26:45 | shalabh | so a direct branch is where the address is the instruction operand itself, right? |
22:27:09 | Mat4 | yes |
22:28:09 | elbow_jason | Araq: why are double underscore not allowed in identifiers? just curious. |
22:28:44 | Araq | elbow_jason: cause they are ugly and serve no purpose |
22:28:55 | elbow_jason | Araq: fair enough |
22:29:04 | shalabh | Mat4:do you have benchmarks from using this technique? |
22:30:20 | Mat4 | yes |
22:30:39 | shalabh | link? |
22:31:36 | Mat4 | uno momento |
22:33:11 | Mat4 | https://www.assembla.com/spaces/navm/wiki/Benchmarks |
22:33:30 | Mat4 | that's an older version as base for a forth environment |
22:35:35 | Mat4 | my current design execute single instructions down to 0.5 cycles (against mean ~0,33 for native code) dependent on the code sequence [Intel iCore I3] |
22:37:53 | ekarlso | dtscode: you about ? |
22:37:59 | Mat4 | please note gForth compiles directly to native code at basic-block level, a feature which the authors call 'dynamic super-instruction' |
22:40:46 | * | brson quit (Quit: leaving) |
22:43:28 | fizzbooze | 0 |
22:43:57 | fizzbooze | Araq how does the type and effect system prevent the user from screwing up? |
22:46:24 | Araq | fizzbooze: the compiler doesn't allow code is run in a different thread that is not gc-safe |
22:46:50 | Araq | I mean the proc you pass to a thread has to be gc-safe |
22:47:07 | Araq | and gc-safe means "doesn't access globals that contain GC'ed" memory |
22:47:10 | Mat4 | ciao |
22:47:19 | shalabh | bye |
22:47:24 | * | Mat4 quit (Quit: Verlassend) |
22:48:49 | Araq | and so a .gcsafe proc cannot do dangerous things and the GC can stay thread local |
22:49:18 | Araq | note that .gcsafe is a somewhat recent addition, so old versions of the language were simply unsafe |
22:49:37 | Araq | this is usually what people refer to when they say "Nim's GC is not thread safe" |
22:51:35 | shalabh | so the globals are GCed in the main thread only, and any other thread has an isolated heap? |
22:51:43 | Araq | yes |
22:51:48 | shalabh | nice |
22:51:52 | shalabh | good design if you ask me. |
22:52:15 | shalabh | shared mutable state is a bad pattern anyway. the complexity of multithreaded gc is not worth it. |
22:52:22 | Araq | the really sweet thing about this is that Nim's .noSideEffect was in the language since forever |
22:52:33 | Araq | and .noSideEffect implies .gcsafe :-) |
22:52:47 | shalabh | ah ok |
22:56:26 | shalabh | "Nim's GC is not thread-safe' sounds like a shortcoming |
22:56:51 | shalabh | It should be 'Nim has multiple concurrent GCs' |
22:56:58 | shalabh | *tread-local GCs |
22:57:03 | shalabh | is that accurate? |
22:57:07 | Araq | yes |
22:57:33 | shalabh | it's not a shortcoming. it's a big benefit, the GC in one thread will not affect another thread at all. |
22:57:52 | shalabh | but some kind of readonly shared memory would be nice. |
22:58:04 | Araq | hah |
22:58:07 | Araq | thing is |
22:58:10 | shalabh | cause you do want to share some things between threads |
22:58:13 | shalabh | or even an STM |
22:58:41 | Araq | good GCs require read or write barriers |
22:59:03 | Araq | so what seems to be "readonly" can easily end up "read and write" under the hood |
22:59:21 | Araq | so yes, I agree it would be nice to have |
22:59:27 | Araq | but it's not trivial to do |
22:59:37 | shalabh | ah i see. |
22:59:48 | Araq | and besides, you can always cast the 'ref' to 'ptr' and do your dirty reads |
23:00:00 | shalabh | I see |
23:00:26 | shalabh | well, in practice, you dont need to share all types of objects. you only need certain kind of data structures. |
23:00:40 | shalabh | e.g. binary blobs (caching), counters (stats) etc. |
23:01:21 | shalabh | if you have safe concurrent shared implemention for a few such data structures, i think it'll solve 99% of the use cases |
23:01:37 | Araq | yeah, but we currently don't have these ;-) |
23:01:54 | Araq | we'll get there though |
23:02:07 | shalabh | what's the system for inter-thread communication though, apart from what's passed in spawn? |
23:02:30 | Araq | we have some ugly old TChannel[T] type |
23:02:39 | Araq | which however, works quite well |
23:02:43 | shalabh | why ugly? |
23:02:46 | shalabh | channels are fine |
23:02:59 | shalabh | so it deep copies the objects sent? |
23:03:06 | Araq | yes |
23:03:29 | Araq | and it's better used via a global variable ;-) |
23:03:40 | elbow_jason | the channel? |
23:03:44 | Araq | yeah |
23:03:48 | elbow_jason | makes sense |
23:04:18 | Araq | yeah, but globals are seen as ugly ;-) |
23:04:29 | Araq | (I don't agree, but that's a different topic) |
23:05:22 | shalabh | nonsense, of course channels have to global, that's the point of sharing |
23:05:32 | elbow_jason | technically, (my goodness I'm out of my element here) as long as two errr thread-thingies are at least in the same scope the channel can be defined in the largest/most outter shared scope, right? |
23:05:37 | shalabh | maybe just call them 'shared' rather than 'global' |
23:06:55 | Araq | elbow_jason: not in Nim. thread procs cannot access any outer environments except global data (that doesn't use GC'ed data) |
23:07:18 | elbow_jason | Araq: ahh I see prevents races and such |
23:07:40 | * | johnsoft quit (Ping timeout: 264 seconds) |
23:07:44 | Araq | yup |
23:07:45 | shalabh | well, you should only be allowed to access data that's under your GC |
23:08:14 | Araq | shalabh: yes but by definition a "thread proc" runs in a different thread |
23:08:36 | Araq | but there are also thread local variables |
23:09:03 | Araq | and these work with the thread local GC |
23:09:14 | shalabh | can i create two disjoint, isolated heaps in a single thread if i want? |
23:09:27 | Araq | no the heap is attached to the thread |
23:10:02 | Araq | Jehan wants that what you describe, but he doesn't want it badly enough to implement it |
23:10:24 | shalabh | ok. another question - channels can be shared by any number of threads, right? i can use it like a work queue? |
23:10:34 | shalabh | yeah i dont want it badly either :) |
23:10:41 | Araq | and I don't have the time and would get the design wrong anyway since I don't really see the point |
23:10:58 | elbow_jason | Communicating sequential processes |
23:11:03 | shalabh | right the api/syntax would be tricky |
23:11:24 | shalabh | the point would be to just pass one of these heap things from one thread to another |
23:11:43 | Araq | shalabh: yes you can do your work queue with a channel |
23:14:05 | shalabh | excellent |
23:16:12 | Araq | so ladies and gentlemen, the famous "types API" landed in devel. |
23:16:36 | Araq | that means finally you can access a nodes *type* within a macro properly |
23:16:42 | Araq | without resorting to hacks |
23:17:33 | Araq | fowl: take it for a test drive |
23:19:57 | * | Outlander joined #nim |
23:21:22 | * | vendethiel quit (Ping timeout: 240 seconds) |
23:23:29 | ekarlso | Araq: what does that mean ? |
23:23:34 | * | vendethiel joined #nim |
23:25:10 | * | nande quit (Remote host closed the connection) |
23:26:23 | Araq | ekarlso: what does what mean? |
23:29:33 | elbow_jason | Philosophically: what does 'what' mean? |
23:29:36 | * | nande joined #nim |
23:35:43 | fowl | interesting :) |
23:38:37 | fowl | Araq, do i need -d:useNodeIds |
23:38:52 | Araq | no |
23:39:24 | Araq | and of course somebody needs to improve the docs for this thing |
23:44:41 | * | koz_ quit (Ping timeout: 250 seconds) |
23:46:04 | fowl | Araq, i get "node has no type" trying identifiers for types and variables |
23:46:06 | * | vendethiel quit (Ping timeout: 256 seconds) |
23:46:21 | BlaXpirit | :) |
23:46:28 | fowl | am i doing it wrong https://gist.github.com/fowlmouth/dc5dba4c17a56c5636f2 |
23:47:00 | Araq | fowl: yes. 'expr' implies lazy semantic checking |
23:48:05 | fowl | ah |
23:49:03 | elbow_jason | "It compiles to javascript" |
23:49:07 | elbow_jason | wuuuut |
23:49:44 | elbow_jason | is that still supported? and if so, how does one use that functionality? |
23:50:24 | Araq | it's supported but not many use it, so it's not well tested |
23:50:40 | Araq | but we do use it for the website itself |
23:50:50 | Araq | the Nimble package listing to be precise |
23:51:10 | shalabh | does it produce source maps to aid debugging? |
23:51:16 | shalabh | (when compiling to js) |
23:51:25 | Araq | no, it generates line tracing code instead |
23:51:35 | Araq | source maps didn't exist when I wrote it |
23:52:12 | shalabh | ok |
23:52:17 | Araq | fowl: but macro foo[T](t: T): stmt doesn't work either :-/ |
23:52:26 | Araq | but it should ... |
23:52:41 | * | vendethiel joined #nim |
23:53:50 | Araq | but hrm ... 't' remains an nkIdent |
23:54:56 | * | irrequietus quit () |
23:55:07 | Araq | macro foo(t: stmt): stmt works though (why does this type check?) |
23:56:33 | * | Matthias247 quit (Read error: Connection reset by peer) |