<< 14-05-2014 >>

00:01:09*xenagi joined #nimrod
00:03:15njoejoeThanks dom96 changing line 32 helped. I have opened an issue on nimrod's github issues.
00:10:05*brson quit (Ping timeout: 258 seconds)
00:11:43*brson joined #nimrod
00:12:23*brson quit (Client Quit)
00:25:17*brson joined #nimrod
00:45:41*q66 quit (Quit: Leaving)
00:56:43*DAddYE quit (Remote host closed the connection)
00:57:17*DAddYE joined #nimrod
00:57:57*DAddYE_ joined #nimrod
00:57:57*DAddYE quit (Read error: Connection reset by peer)
00:58:10*DAddYE_ quit (Remote host closed the connection)
01:06:33*bjz joined #nimrod
01:06:42*bjz quit (Client Quit)
01:07:51*bjz joined #nimrod
01:20:33*flaviu joined #nimrod
01:23:34*brson quit (Ping timeout: 240 seconds)
01:23:36*wan quit (Ping timeout: 276 seconds)
01:27:28*brson joined #nimrod
01:30:09*superfunc joined #nimrod
01:32:15superfuncmy professor ended up really digging nimrod haha, he said it reminded him of pascal
01:35:06superfuncls
01:35:52EXetoCcd
01:36:19*wan joined #nimrod
01:36:28EXetoCgreat. it shares some thing with pascal indeed
01:42:18*superfunc quit (Ping timeout: 240 seconds)
01:44:27*superfunc joined #nimrod
01:59:11VarriountUpdated https://github.com/Araq/Nimrod/wiki/NEP-1
02:00:00*reactormonk joined #nimrod
02:06:27Demosyay!
02:06:48VarriountDemos: ?
02:07:15*hoverbear joined #nimrod
02:07:17*hoverbear quit (Max SendQ exceeded)
02:07:58*hoverbear joined #nimrod
02:08:14Demosabout superfunc's professor
02:08:19DemosI think I was late to the party
02:09:07Varriounthoverbear: Witness, the first Nimrod Enhancement Proposal - https://github.com/Araq/Nimrod/wiki/NEP-1
02:18:48*hoverbear quit ()
02:19:14flaviuVarriount: Can you enforce the style you've outlined?
02:19:21*superfunc quit (Ping timeout: 252 seconds)
02:19:41flaviuLike tools that can say "This is wrong, make it look differently"
02:20:07fowlVarriount, see, once you have rules you need police to enforce them ^
02:20:38Varriountflaviu, fowl Hopefully I can modify 'nimrod pretty' to output stuff
02:20:39fowlnext you'll need to tax the users so you can pay the police
02:21:09Varriountfowl: Pay the police for what? I'm a law abiding citizen. *wink*
02:21:10fowllike two steps later you have a full blown government =(
02:21:51Varriount"You have been arrested for charges concerning improper stylization of Nimrod code"
02:22:11Varriountfowl, flaviu: What do you think of the style guidelines?
02:22:50fowllooks ok
02:23:13flaviuVarriount: Reasonable, include something about requiring variable names to have meaning. Eg, no h, x, w, s, num1, num2
02:23:49fowlVarriount, you can probably use ```nimrod to colorize the wiki
02:24:12Varriountflaviu: I would, but that might be contradictory to several parts of the compiler source code.
02:24:28flaviuVarriount: Exactly my goal
02:24:47NimBotnimrod-code/packages master 73072bf boydgreenfield [+0 ±1 -0]: Add murmur, a simple MurmurHash 3 wrapper
02:24:47NimBotnimrod-code/packages master 2cdcc59 Billingsly Wetherfordshire [+0 ±1 -0]: Merge pull request #54 from boydgreenfield/master... 2 more lines
02:25:52Varriountflaviu: Ah, what some wouldn't give for documented compiler internals...
02:26:00flaviuVarriount: The enum rule shouldn't apply to pure enums
02:26:14*superfunc joined #nimrod
02:26:20fowlflaviu, this is for the std lib
02:26:33superfuncyay indeed
02:26:55fowlflaviu, pure enums not used anywhere in the std lib
02:27:58flaviufowl: ./pure/net.nim: IpAddressFamily* {.pure.} = enum
02:28:33fowloh
02:28:39fowli was just guessing :p
02:29:09flaviuThat's the only one there is lol, the guess was pretty good
02:29:40flaviuI may just be used to Java, but I prefer pure over the prefixes
02:30:28fowlflaviu, usually the pure name i would give the enum conflicts with a name i want to use for something else
02:31:09fowleither that or the pureEnum.field is too long compared to peField
02:31:30flaviuIt may be longer, but its 10x clearer.
02:31:49flaviuYou can also locally import its contents I think for individual methods
02:32:12Varriountflaviu: Prefixes are needed so that you know what enum an identifier is referencing.
02:32:33flaviudom96: 'Tutorial: Hacking the Nimrod compiler: Pragmas' is woefully out of date
02:33:15flaviuVarriount: That's what pure does. Instead of mleSomething, its MyLongEnum.Something
02:33:45Varriountflaviu: You mean {.pure.}, right?
02:33:49flaviuYes
02:34:11VarriountWhich also has the side effect of stripping runtime information as well?
02:34:29fowlVarriount, no, pure is a new pragma for enum
02:34:56flaviu‍{.pure.} is overloaded to mean something special for enums
02:35:09VarriountI'm not sure I like the varying overload behaviors.
02:35:39fowlVarriount, tbf i dont think pure ever did anything for object types
02:35:59Varriountfowl: It strips runtime type information from them.
02:36:29fowlVarriount, that would make inheritance impossible
02:36:57Varriountfowl: Yep! Or rather, it makes certain kinds of inheritance impossible.
02:37:15VarriountI remember Araq commenting about that once.
02:37:33VarriountAnyway, it says so in the Manual -> http://nimrod-lang.org/manual.html#pure-pragma
02:37:54fowlVarriount, ah interesting
02:38:11fowlVarriount, you can make a pure,inheritable object, but as soon as you inherit from it it loses "pure"
02:39:08fowlVarriount, i believe that harkens back to the day when object was inheritable by default (when {.final.} made sense)
02:39:23VarriountI still don't like the fact that {.pure.} behavior for enums is very different from its behavior for regular types.
02:39:28fowl"This is necessary for binary compatibility with other compiled languages."
02:39:49VarriountI'd rather have an {.explicit.} pragma instead
02:39:51fowlyou should have brought up your concerns when the feature was introduced, like a year ago
02:40:29VarriountWell, I either A) Wasn't here, or B) Hadn't been introduced to Nimrod yet.
02:40:45VarriountWhat do you suggest, I travel back in time?
02:40:56fowlVarriount, if possible yes
02:41:46fowlslap my mom if you see her
02:42:47Varriountfowl: I I could travel in time, I would likely use that ability for more grandoise efforts, like warning Brandon Eich about the terrible use JavaScript would be put through, or preventing James Gosling from coming up with Java
02:43:10VarriountOr even slaying the beast that is PHP
02:44:42DemosVarriount: javascript and PHP have created some pretty neat products
02:45:36Demoslike lets say you want to do graphics, you could use languages with sound engeneering like lisp or nimrod and spend thousands of LOC getting a cube on the screen, or you can write 30 lines of JS
02:45:40Demosjust saying
02:46:25VarriountDemos: I wouldn't /prevent/ javascript from being created, I would merely warn Brandon about what it would be used for.
02:46:48Demosfair
02:47:06VarriountAs for PHP...
02:47:14Demosyeah bomb it from orbit
02:47:20Demosonly way to be sure
02:58:03VarriountHm. For an enum containing file event types, should I use "feSizeChanged" or "feResized"
03:01:12fowlfeFileSizeIsANewValue
03:05:58flaviufeSizeChanged would be better because it doesn't make any assumptions
03:06:37fowli agree
03:18:58*hoverbear joined #nimrod
03:21:47hoverbearHow can I fix this issue when installing `haste-compiler`?
03:21:52hoverbearWrong chan.
03:21:54*def-_ joined #nimrod
03:22:12hoverbear:(
03:23:34hoverbearVarriount: Looks more like a style guide to me?
03:25:26*def- quit (Ping timeout: 252 seconds)
03:32:18*superfunc quit (Ping timeout: 240 seconds)
03:36:30*brson quit (Quit: leaving)
03:38:33*xenagi quit (Quit: Leaving)
03:39:30*superfunc joined #nimrod
03:59:30renesacVarriount, a video you should like: https://www.destroyallsoftware.com/talks/wat
04:07:23*flaviu quit (Remote host closed the connection)
04:30:34*springbok joined #nimrod
04:42:56fowlVarriount, i take back what i said about inheritable,pure, it doesnt work, pure is useless
04:47:07Skrylarisn't pure strictly the "don't emit overhead, trust me i'm a doctor" flag
04:47:54fowlSkrylar, no, its from a time when "object" was inheritable by default and {.final.} was relevant
04:59:16*boydgreenfield quit (Quit: boydgreenfield)
05:04:30*askatasuna quit (Ping timeout: 265 seconds)
05:05:39*askatasuna joined #nimrod
05:13:14Skrylarfowl: hrm. the manual still says pure is used on objects to prevent RTTI data and making sure they're C-compatible
05:15:18*superfunc quit (Ping timeout: 240 seconds)
05:24:52fowlSkrylar, yeah it still says that
05:25:24*noam_ joined #nimrod
05:28:39*noam quit (Ping timeout: 276 seconds)
05:32:31*boydgreenfield joined #nimrod
05:40:41*hoverbear quit ()
05:44:48*noam joined #nimrod
05:46:54*noam_ quit (Ping timeout: 240 seconds)
05:49:16*superfunc joined #nimrod
06:04:03*boydgreenfield quit (Quit: boydgreenfield)
06:11:33*Demos quit (Read error: Connection reset by peer)
06:14:15*superfunc quit (Ping timeout: 258 seconds)
06:20:47*BitPuffin quit (Ping timeout: 255 seconds)
07:11:46Varriountrenesac: I'm saving that in my bookmarks
07:24:51*superfunc joined #nimrod
07:29:00*ehaliewicz joined #nimrod
07:45:33*kunev joined #nimrod
07:55:06*io2 joined #nimrod
08:12:51*BitPuffin joined #nimrod
08:24:44Araqhmm what's new in the history ... blaming 1 letter vars for everything ... check
08:27:58fowlAraq, your one letter vars arent normal like i,j,k, they're a,n,p, etc
09:02:58Araqyeah p: TParser ... it's as if I know I'm writing in a statically typed language
09:04:06Araqfinding good names also takes more time than writing and debugging it ...
09:05:53*askatasuna quit (Ping timeout: 252 seconds)
09:08:05*superfunc quit (Ping timeout: 264 seconds)
09:31:56*DAddYE joined #nimrod
10:04:58*springbok quit (Ping timeout: 245 seconds)
10:08:02*springbok joined #nimrod
10:08:43*springbok quit (Changing host)
10:08:43*springbok joined #nimrod
10:48:38*ehaliewicz quit (Ping timeout: 240 seconds)
11:14:29reactormonkdom96, ye rebuilding sources?
11:47:44*DAddYE quit (Remote host closed the connection)
11:48:14*DAddYE joined #nimrod
11:52:55*DAddYE quit (Ping timeout: 265 seconds)
11:54:23*DAddYE joined #nimrod
11:56:42*darkf quit (Ping timeout: 240 seconds)
11:57:29*DAddYE quit (Remote host closed the connection)
12:05:35*askatasuna joined #nimrod
12:17:18*rixx left #nimrod ("Foyfoy!")
12:31:35*askatasuna quit (Ping timeout: 252 seconds)
12:58:27*DAddYE joined #nimrod
13:02:38*DAddYE quit (Ping timeout: 240 seconds)
13:14:58*DAddYE joined #nimrod
13:19:22*DAddYE quit (Ping timeout: 258 seconds)
14:14:57EXetoCAraq, that part of assignLocalVar is not being reached
14:15:33EXetoCif s.constraint.isNil: ... volatile ...
14:15:53*DAddYE joined #nimrod
14:16:06EXetoCso the output remains the same
14:20:29*DAddYE quit (Ping timeout: 252 seconds)
14:38:22EXetoCnvm
14:38:42EXetoC"system undeclared" is the only remaining error
14:48:20EXetoCno everything after too. had to remove nimcache
14:50:12EXetoCtrying some things now
14:54:02EXetoCAraq, is applying the header pragma the right way to go? how will these procs be made available to other targets? with compile-time conditionals?
15:03:30*bjz quit (Ping timeout: 240 seconds)
15:04:07*kunev quit (Quit: leaving)
15:06:38EXetoCcompiler/nimcache/stdlib_sockets.cpp:816:42: error: invalid conversion from ‘const char*’ to ‘NCSTRING {aka char*}’ [-fpermissive] LOC18 = gai_strerror(gairesult_154608);
15:08:13EXetoCI might've forgotten a step again
15:13:02*noam quit (Quit: Leaving)
15:16:27*DAddYE joined #nimrod
15:20:53*DAddYE quit (Ping timeout: 258 seconds)
15:27:54*jcrubino joined #nimrod
15:30:34*silven quit (Quit: No Ping reply in 180 seconds.)
15:31:15*silven joined #nimrod
15:40:37EXetoCyeah I did. only C proc errors left
15:42:40*silven quit (Quit: No Ping reply in 180 seconds.)
15:43:03*silven joined #nimrod
16:02:18*untitaker quit (Ping timeout: 240 seconds)
16:05:43*Matthias247 joined #nimrod
16:09:33*untitaker joined #nimrod
16:17:25*DAddYE joined #nimrod
16:19:31*hoverbear joined #nimrod
16:21:30*DAddYE quit (Ping timeout: 240 seconds)
17:01:38*Matthias247 quit (Read error: Connection reset by peer)
17:04:17*springbok quit (Ping timeout: 255 seconds)
17:14:38*q66 joined #nimrod
17:14:38*q66 quit (Changing host)
17:14:38*q66 joined #nimrod
17:18:01*DAddYE joined #nimrod
17:22:18*DAddYE quit (Ping timeout: 240 seconds)
17:27:54*BitPuffin quit (Ping timeout: 240 seconds)
17:42:50*nande joined #nimrod
17:45:22*brson joined #nimrod
17:55:07*superfunc joined #nimrod
18:28:38*superfunc quit (Ping timeout: 240 seconds)
18:47:04wan"Using the implicit result variables allows both the Nimrod compiler and its various backends to perform special optimizations" Oh, I'd like to know more! What does it do compared to 'return'?
18:48:16wanWhat are the optimizations in the c produced?
18:49:25EXetoCit simply allows the return value to be referenced multiple times, rather than pushed to just before leaving the proc
18:49:50EXetoC{:} matches both openarray[tuple[k: string, v: T]] and openarray[T]. it's syntactic sugar involving only the former, right? so I guess it's a bug
18:51:59*rufusROFLpunch joined #nimrod
18:53:51wanEXetoC: yes, I'm familiar with the use of the implicit result variable, I was more looking for answers on "what's the difference in the code generated"
18:55:12rufusROFLpunchI downloaded the windows installer for nimrod (I tried this with both the 64-bit and 32-bit binary installers). I'm attempting to compile a file (echo.nim) that contains only the line 'echo ("hello world")' and I'm getting and error: " error: request for member 'data' in something not a structure or union"
18:55:14EXetoCit allows you to re-use that part of the stack. I'm no expert, but it probably matters in some cases, when the compiler can't infer some things
18:55:23rufusROFLpunchdoes anyone know what might be causing this?
18:56:55wanEXetoC: to answer my own question (I just made a simplistic test to see the generated c): when using 'return ...' instead of 'result = ...', it adds a goto and a label in the generated c. Not much difference, then, I suppose (I'm expecting gcc or clang to optimize it away)
18:57:44EXetoCalias reduction might be relevant too. maybe someone has something to add
18:59:21EXetoCyeah I'm sure they can optimize away things in simple cases. it might matter in more complex situations
18:59:46wanrufusROFLpunch: I'm not a windows user, so I'm not able to help here. The single-line helloworld line compiles for me on linux.
19:00:48rufusROFLpunchhmm, alright
19:01:03EXetoCthat's unfortunate if it is indeed the 0.9.4 release
19:01:50*Demos joined #nimrod
19:05:33*BitPuffin joined #nimrod
19:06:40*kunev joined #nimrod
19:14:21wanalright, result IS better. It can avoid at least a copyString in a slightly less simplistic proc. Here to see my tests: https://gist.github.com/idlewan/ceeebc2c67c0f7299bce
19:17:22*rufusROFLpunch quit (Quit: Page closed)
19:18:39EXetoCwith --opt=speed?
19:18:49EXetoCs/=/:
19:21:23wanwith -d:release
19:22:39EXetoCno optimizations will be performed then. the source files in the nimcache directory should confirm this
19:25:59wanwell, the copyString is still there when using --opt:speed. Anyway, I thought -d:release was to get the most optimized with a simple-to-use CLI option?
19:27:54EXetoCtry both. it just disables most debug constructs.
19:28:09EXetoCin nimrod.cfg: "@if release or quick: obj_checks:off ... @end"
19:28:24EXetoC@if release: opt:speed @end
19:28:25EXetoCok nvm
19:29:57wanyes it's also in the user guide (http://build.nimrod-lang.org/docs/nimrodc.html): release | Turns off runtime checks and turns on the optimizer.
19:31:06EXetoC^_^
19:43:37*hoverbear quit ()
19:52:29*hoverbear joined #nimrod
19:53:03jcrubinoany numbers available for a rough comparison of java and nimrod?
19:53:31*Varriount_ joined #nimrod
19:57:16*Varriount quit (Ping timeout: 258 seconds)
19:57:55*BitPuffin quit (Ping timeout: 252 seconds)
20:02:16Varriount_EXetoC: I don't know what error rufusROFLpunch was encountering. I just tested the nimrod installer in a clean Windows vm (again) and everything works perfectly
20:02:42*Varriount_ is now known as Varriount
20:03:42fowljcrubino, yes, nimrod is number 1, java is number nothing
20:04:08jcrubinothanks: thats what I suspected but your numbers confirm it
20:04:19fowl:D
20:04:46*Varriount curses the fact that Java is taught in so many beginner CS courses.
20:05:18*Matthias247 joined #nimrod
20:05:25VarriountHi Matthias247
20:05:42*Jesin quit (Quit: Leaving)
20:08:20Matthias247hi
20:14:04EXetoCVarriount, but 100% OO automatically makes your code awesome
20:20:40VarriountEXetoC: Exactly. New programmers just can't handle java's... "awesomeness"
20:21:59dom96hi
20:22:39dom96Varriount: Thank you for investigating rufusROFLpunch's issue. Too bad he left so soon :\
20:40:51*kunev quit (Quit: Lost terminal)
20:47:42*jcrubino quit (Quit: Leaving)
21:07:20*superfunc joined #nimrod
21:09:28*BitPuffin joined #nimrod
21:12:27*superfunc quit (Ping timeout: 276 seconds)
21:22:35*xtagon joined #nimrod
21:23:34*BitPuffin quit (Ping timeout: 240 seconds)
21:27:28*flaviu joined #nimrod
21:34:11*BitPuffin joined #nimrod
21:36:05*superfunc joined #nimrod
21:36:52NimBotAraq/Nimrod new_spawn 31b8fd6 Araq [+5 ±2 -0]: 'parallel' statement: next steps
21:49:30AraqEXetoC: that's the documented behaviour of {:}
21:50:02Araq{:} is sugar for an array
21:51:50milosnevening
21:51:57milosnhi Araq
21:52:01milosnthe nimrod master :P
21:52:03milosn:)
21:53:34EXetoCAraq, when is it not sugar for one that takes tuple elements?
21:55:23Araq{:} == [], {"foo": "bar} == [("foo", "bar")]
21:55:35Araqhi milosn
21:59:10EXetoCwell it would allow for nicer document constructors
21:59:30EXetoCbut
22:00:51EXetoCI think one was an openarray but the other was just an array. I don't know if it'll work for seqs though
22:01:34*hoverbear quit (Ping timeout: 240 seconds)
22:01:46*hoverbea_ joined #nimrod
22:02:03EXetoCso it's a limitation then, rather than a bug. I guess it'd complicate things
22:02:24Araqyup
22:09:08*noam joined #nimrod
22:21:56*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
22:25:14EXetoCI've reverted to openarray/array overloading, which is a little cryptic, but it works. can I rely on that?
22:26:10EXetoC"openarray[tuple[k: string, v: TBsonCtor]]" is considered a better match than "array[T, TBsonCtor]"
22:34:11NimBotAraq/Nimrod devel e54ab22 Dominik Picheta [+0 ±1 -0]: Fixes #1197.
22:35:55*springbok joined #nimrod
22:35:55dom96njoejoe: ^
22:38:39milosndom96: you remember i asked you about newroking modules ... i can seem to find those procs for ssl you mentioned
22:38:48milosnwrapSocket() and context one
22:38:53milosnwhich module are they in?
22:38:59milosn*cant
22:39:13dom96Their docs may be missing
22:39:18milosnuh
22:39:26dom96https://github.com/Araq/Nimrod/blob/devel/lib/pure/net.nim#L455
22:39:34dom96Because they require 'ssl' to be defined.
22:39:38dom96And the docgen doesn't do that.
22:42:08milosnhmm cool its all in net
22:42:24milosnare doc strings about these beeing experimental still true?
22:44:11dom96yes
22:44:17dom96well
22:44:34dom96It works. But I can't guarantee that it's secure.
22:46:15milosnahaha
22:46:18milosnexcellent
22:46:20milosn:)
22:49:13fowllol
22:59:41*superfunc quit (Ping timeout: 252 seconds)
23:01:17*darkf joined #nimrod
23:07:23*Matthias247 quit (Quit: Matthias247)
23:07:54*darkf quit (Ping timeout: 240 seconds)
23:17:19*silven_ joined #nimrod
23:18:33*silven quit (Ping timeout: 276 seconds)
23:20:09*darkf joined #nimrod
23:30:25*hoverbea_ quit ()
23:47:01*Kazimuth joined #nimrod