<< 14-03-2014 >>

00:00:04flaviuis the nimrod bitshift unsigned across all implementations?
00:04:43*brson quit (Ping timeout: 264 seconds)
00:14:37*brson joined #nimrod
00:16:24*brihat left #nimrod (#nimrod)
00:25:42*zielmicha quit (Quit: Connection closed for inactivity)
00:25:46*CARAM joined #nimrod
00:26:04*nequitans_ joined #nimrod
00:26:53*CARAM quit (Remote host closed the connection)
00:30:01*nequitans_ quit (Ping timeout: 240 seconds)
00:35:15*brihat joined #nimrod
00:48:21*NimBot joined #nimrod
00:49:41*nolan_d quit (Ping timeout: 240 seconds)
00:51:11*CARAM joined #nimrod
00:52:01*brihat quit (Ping timeout: 240 seconds)
00:52:25*brihat joined #nimrod
01:07:39*grumio2_ left #nimrod (""th-th-th-th-that's all, folks!"")
01:08:06*DAddYE quit (Remote host closed the connection)
01:08:44*DAddYE joined #nimrod
01:14:07*DAddYE quit (Ping timeout: 240 seconds)
01:18:23*rveach|2 joined #nimrod
01:23:34flaviuIs there any way to get the compiler to give me a file's AST? I only really need the imports and doc comments though.
01:27:17*q66 quit (Ping timeout: 255 seconds)
01:35:07*CARAM quit (Remote host closed the connection)
01:44:24*brson quit (Ping timeout: 255 seconds)
01:59:19*XAMPP quit (Ping timeout: 264 seconds)
02:09:10*DAddYE joined #nimrod
02:13:13*DAddYE quit (Ping timeout: 240 seconds)
02:20:49flaviuparseFile seems to be what I'm looking for
02:21:02*rveach|2 quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/)
02:23:50fowljson.parsefile?
02:24:53*Demos joined #nimrod
02:28:46flaviufowl: thanks, but I'm going for getting the AST of a compilation run, so I have to hook into the compiler. I'm not parsing json.
02:30:54fowlah ok
02:35:45*DAddYE joined #nimrod
02:40:41*flaviu quit (Remote host closed the connection)
02:43:48*eigenlicht joined #nimrod
02:45:35*BitPuffin quit (Ping timeout: 255 seconds)
03:08:11*nolan_d joined #nimrod
03:08:25*rejuvyesh[away] is now known as rejuvyesh
03:33:51*CARAM joined #nimrod
03:46:24*DAddYE quit (Remote host closed the connection)
04:05:13*Demos quit (Ping timeout: 240 seconds)
04:32:46reactormonkbtw, issue #1000 \o/
04:33:05reactormonkAraq, wanna put up a small announcement on the homepage?
04:43:21*Demos joined #nimrod
04:59:11Skrylarmeep
05:10:07*nequitans_ quit (Ping timeout: 264 seconds)
05:37:41*Boscop_ quit (Read error: Connection reset by peer)
05:38:06*Boscop_ joined #nimrod
05:57:49*DAddYE joined #nimrod
06:16:07*Demos quit (Ping timeout: 264 seconds)
06:20:38*grumio2 joined #nimrod
06:26:53*superfunc` joined #nimrod
06:26:58*molixiaoge joined #nimrod
06:42:12*grumio2 quit (Quit: leaving)
06:56:28*molixiaoge quit (Ping timeout: 245 seconds)
07:11:48*runvnc__ quit (Quit: Leaving)
07:19:25*skyfex_ quit (Quit: Computer has gone to sleep.)
07:44:49*Mordecai joined #nimrod
07:45:09*Mordecai is now known as Guest12220
07:47:55*psquid quit (Ping timeout: 264 seconds)
08:27:51*awestroke joined #nimrod
08:28:15*zielmicha joined #nimrod
09:05:10*sspiff joined #nimrod
09:08:06sspiffhi, I tried to build nimrod (on Mint 16), and it failed using build.sh
09:08:30sspiffI ran the final linking command, but moved -lm to the end of the command line instead of at the beginning, and it worked fine
09:10:55sspiffdoes the generated C code adhere to any specific standard (c89? c99?)
09:11:16sspiffand is there any way to just generate the C code and not run the C compiler?
09:11:32sspiffand is there any way to remove the -ldl dependency? :)
09:11:46sspiff(those are all my questions, you're safe now)
09:12:23*DAddYE quit (Remote host closed the connection)
09:15:15*psquid joined #nimrod
09:15:15fowlsspiff, 0.9.2 is ancient now, everybody runs the shiny new devel branch
09:16:48fowlg2g. read the readme its just a few steps. gl
09:18:31*Guest12220 quit (Ping timeout: 264 seconds)
09:29:25*awestroke quit (Quit: No Ping reply in 180 seconds.)
09:29:31*awestroke joined #nimrod
09:57:22*BitPuffin joined #nimrod
10:03:13*VegBerg joined #nimrod
10:03:34VegBergHello
10:03:58VegBergI am trying to compile babel, but I get this error: babelpkg\packageinfo.nim(4, 14) Error: cannot open 'version'
10:08:19*CARAM quit (Remote host closed the connection)
10:20:01VegBergNever mind, I have resolved my issue.
10:20:20*VegBerg quit (Quit: Page closed)
10:27:27*BitPuffin quit (Read error: Operation timed out)
10:37:03*awestroke quit (Remote host closed the connection)
11:04:59Araqsspiff: --compileOnly doesn't run the C compiler, the produced C is "real world C" and makes use of GCC or visual C features
11:07:21Araqwelcome btw
11:11:43sspiffAraq: thanks!
11:12:02sspiffand there's no getting around -ldl?
11:12:42Araqdynlib ends up using dlsym
11:12:58Araqyou can try to get rid of it with --dynlibOverride
11:13:12Araqpatches are welcome once you figured it out ;-)
11:13:45Araqin theory it's possible and not even that hard but I bet you need to patch something somewhere to be able to get rid of -ldl
11:16:19Araqvvl
11:16:23Araqbll
11:16:24Araqbbl
11:43:40*BitPuffin joined #nimrod
12:22:46*flaviu joined #nimrod
12:47:05*OrionPK joined #nimrod
12:51:15*Kooda joined #nimrod
12:51:22*darkf quit (Quit: Leaving)
12:55:51*flaviu quit (Remote host closed the connection)
13:13:22*zielmicha quit (Quit: Connection closed for inactivity)
13:31:00*easy_muffin joined #nimrod
13:43:03*Kooda quit (Quit: leaving)
13:45:37*askatasuna joined #nimrod
14:07:00*io2 joined #nimrod
14:10:40*Demos joined #nimrod
14:28:32*io2 quit ()
14:57:41*io2 joined #nimrod
15:02:37*flaviu joined #nimrod
15:03:18*Demos quit (Ping timeout: 240 seconds)
15:13:54*flaviu quit (Remote host closed the connection)
15:18:33*superfunc` quit (Ping timeout: 245 seconds)
15:31:57*psquid quit (Quit: work)
15:40:08*nolan_d left #nimrod (#nimrod)
15:47:05*Endy joined #nimrod
16:06:49*easy_muffin quit ()
16:50:01*sspiff quit (Quit: Leaving)
16:54:01*[1]Endy joined #nimrod
16:57:13*Endy quit (Ping timeout: 240 seconds)
16:57:13*[1]Endy is now known as Endy
17:03:24*Endy quit (Ping timeout: 252 seconds)
17:07:13*DAddYE joined #nimrod
17:20:38*BitPuffin quit (Ping timeout: 240 seconds)
17:26:33*easy_muffin joined #nimrod
17:27:13*BitPuffin joined #nimrod
17:41:37*BitPuffin quit (Ping timeout: 240 seconds)
17:42:37*BitPuffin joined #nimrod
17:46:31*Puffin joined #nimrod
17:47:52*CARAM joined #nimrod
17:48:25*BitPuffin quit (Ping timeout: 240 seconds)
17:57:30*Puffin is now known as BitPuffin
17:59:59*easy_muffin quit ()
18:00:42*Boscop_ is now known as Boscop
18:08:49*BitPuffin quit (Ping timeout: 240 seconds)
18:09:22*Matthias247 joined #nimrod
18:10:20*flaviu joined #nimrod
18:10:59flaviuIs anyone actually using `nimrod scan` for anything? It'd be great if it provided information about the location of the tokens
18:11:17flaviuBut it'd break things that are using it already
18:11:24dom96first time I heard about 'nimrod scan'
18:11:37flaviuIt prints the token stream of a file
18:13:50*CARAM quit (Remote host closed the connection)
18:20:21flaviuOk, submitted pull request 1003
18:23:14Araqflaviu: thanks will look at all these PRs this weekend
18:36:36*evil_CarpNet quit (Quit: Leaving)
18:37:50*zielmicha joined #nimrod
18:37:55*CARAM joined #nimrod
18:38:00*q66 joined #nimrod
18:40:34Araqflaviu: what do you use "nimrod scan" for?
18:41:00Araqalso it's not documented, so you can in fact pretty much change everything ;-)
18:41:34*rejuvyesh is now known as rejuvyesh[away]
18:42:22Araqping fowl
18:44:45NimBotAraq/Nimrod devel ae4b5a8 Dominik Picheta [+0 ±3 -0]: File descriptors are now removed from fds list explicitly in close().... 2 more lines
18:44:50*flaviu quit (Remote host closed the connection)
18:45:58fowlAraq, hey
18:46:17Araqdo you happen to have an opencl binding anywhere?
18:46:17fowlAraq, im going to the store then ill brb
18:46:24fowlno
18:46:28Araqok thanks
18:47:19fowlthis seems to be a regression : https://gist.github.com/fowlmouth/9554171
18:47:41fowlits calling the template instead of the proc
18:47:57Araqyeah
18:48:03Araqwell
18:48:31fowli know - its not great code and when i realized this existed i just removed the template
18:48:52Araqit's a regression
18:49:05Araqbut I'm not sure whether it's a bug
18:49:21Araqimmediate means it doesn't participate in overloading resolution
18:49:32Araqand immediates are now preferred over other stuff
18:49:37*askatasuna quit (Quit: WeeChat 0.4.3)
18:50:22Araqhowever since it's not "dirty" it should bind 'getShapes'
18:53:25*CARAM quit (Remote host closed the connection)
19:03:43*CARAM joined #nimrod
19:21:08*freddy3 joined #nimrod
19:22:18*seubert joined #nimrod
19:23:38*Demos joined #nimrod
19:37:27*freddy3 quit (Quit: leaving)
19:40:31dom96hi seubert
19:40:57seuberthi!
19:41:59*Mat3 joined #nimrod
19:42:04Mat3hi all
19:42:51dom96hello Mat3
19:46:26*clovis joined #nimrod
19:47:27dom96hi clovis
19:47:42clovishi :)
19:47:56*CARAM quit (Remote host closed the connection)
19:48:45*CARAM joined #nimrod
19:49:42*CARAM quit (Remote host closed the connection)
19:50:21clovisI was surprised to find nimrod such a beautiful language
19:50:33dom96That's nice to hear :)
19:50:59clovisI had heard about it but was more focused on Rust for a while
19:51:27clovisI think I could be a lot more productive with Nimrod
19:51:34dom96You should definitely get Nimrod a chance, and tell others to do the same.
19:52:42dom96*give
19:52:55Mat3hi dom96
19:53:03Mat3and clovis
19:53:13clovishi there
19:54:53clovisThe latest thing I found out about was StrongSpaces. It makes some sense
19:56:31clovisWell I should probably dig in somewhere with a toy project..
19:56:39Demosit does. Although I would say you should enable it with a pragma an not a compile option
19:57:11clovisDemos, I used the #! comment
19:57:23clovisIs that a pragma?
19:57:55Demosno.. I was wrong
19:58:13clovisAre there other settings that can be enabled the same way?
19:58:18Demoswhen it was initially discussed it was going to be a compiler optime/pragma, it is better this way
19:58:21dom96It's certainly innovative, we'll see how well it works in practice.
19:58:51Demosthere are the source code filters, not sure about other stuff
19:59:26clovisYeah. When I really tried I could make a confusing expression using strong spaces. But in general I think it reduces noise
19:59:59clovisAre you using Nimrod for any large project yet?
20:00:01EXetoCDemos: only during development/testing of this process?
20:00:15clovisI guess the language is still in flux
20:00:42DemosEXetoC, what do you mean?
20:00:52EXetoCclovis: other than the compiler I guess
20:01:29EXetoCclovis: The Aporia IDE is large-ish I think
20:01:39Araqhi clovis welcome
20:01:41EXetoCDemos: nevermind
20:01:48clovishi, thanks
20:01:57Araqdom96: tests/async/C/tasyncawait.nim (reExitcodesDiffer -> reSuccess) let's hope it sticks that way
20:02:34dom96Araq: Stop judging the results of my tests :P
20:02:49clovisah, EXetoC. Yes that is an ambitious project
20:04:03Araqclovis: the forum, our build farm, the compiler, c2nim, niminst, babel, aporia, ... all written in nimrod
20:04:18dom96clovis: I wrote Aporia, among many other projects and there isn't much I had to change as Nimrod evolved.
20:04:22clovisneat
20:04:46EXetoCand that :> all of which are basically official tools, but that doesn't really matter
20:05:05dom96I can name some personal projects that I created :P
20:05:27clovisTried to get a feel from the forum about T/E/P -prefixes, but couldn't get clarity. Are they to stay or on the way out?
20:05:34dom96Jester, ipsum genera, nimkernel, nael, c4hbot ...
20:05:39EXetoCon the way out
20:05:44dom96My little secret opencv thingy
20:05:47clovisthanks
20:06:08EXetoCand some commercial project apparently, but I have no idea what that is
20:06:36clovisQuite a few then, dom96 :)
20:06:51dom96yep.
20:07:05Araqspeaking on which ... I plan to rename EInvalidValue to InvalidValueError etc.
20:07:20Araqas everybody likes the Error suffix
20:07:24dom96Yes, and make sure to change it to a ref.
20:07:40dom96So that we can write: raise InvalidValueError(msg: "Blah")
20:08:05EXetoCnot even Err? come on, stand your ground :p
20:08:55AraqEXetoC: nah 'Err' must be bad
20:09:03Araqotherwise Ruby would use it
20:09:19EXetoC-.-
20:09:47Mat3invalErr (looks readable to me)
20:10:54EXetoCway to exaggerate ;)
20:11:02Mat3*lol*
20:11:24AraqMat3: you still seem to think that programs are compiled and run by a computer. In reality they are printed out and hang-up as posters over a programmer's bed
20:11:57*flaviu joined #nimrod
20:11:59dom96hrm, I was planning on creating a poster and doing just that.
20:16:12fowlAraq, we all want our code to end up in a split-second shot of a movie about hackers
20:16:33Demoswait why do exceptions need to be refs to use the constructor?
20:17:05AraqDemos: because (ref Foo)(a: 1, b: 2) hasn't implemented yet
20:17:11Demosand I am still going to use E/T prefixes myself, at least for a while
20:17:22DemosI have already expressed my issues with that though
20:17:33Araqhu?
20:17:47NimBotAraq/Nimrod devel ac02ffc Dominik Picheta [+0 ±1 -0]: Fixes compilation of asyncio2 on Windows.... 3 more lines
20:17:47Araqso do you like them or not?
20:18:00Demosjust that is not bad, but any kind of user defined initialization function should not be called by memory allocation procs
20:18:19DemosI like T/E, I am wary of ref initialization
20:18:49Demoswould prefer like makeref(initFoo()) where initFoo returns a value type
20:18:52dom96Asyncio2 should now work on both Windows and Linux.
20:19:09Demosbut that is not what (ref Foo)(a: 1, b: 2) is, not quite
20:19:23dom96Likely very buggy still, but you're welcome to test it.
20:19:55Demosis there a function that can make a path relitive to another path in os?
20:21:37DemosI wrote program that is half a clone of GNU stow and half a clone of gobo's tools. But I would love to make the symlinks like ../../Applications/blarg/verison, so chroot works
20:21:50dom96Araq: Please take a look at my tasyncawait test. The interface is still a bit low-level. For example: the dispatcher needs to be supplied to most functions which relate to the socket. This could be a big gotcha when creating a new socket and when closing a socket.
20:22:28dom96Araq: I'm thinking that a slightly higher level interface can help with that. I'll make an AsyncSocket type and it will handle the dispatcher stuff automatically.
20:22:40dom96Araq: What do you think?
20:23:10*matobet joined #nimrod
20:23:24Matthias247dom96: thought the same thing. I would probable associate the socket with an EventLoop which generates an AsyncSocket out of a normal Socket
20:23:53Araqhi matobet welcome
20:24:12dom96Matthias247: Wouldn't that result in the same thing? The dispatcher that I mentioned is really the event loop.
20:24:32dom96I think the dispatcher should be a thread-local global var.
20:24:38Matthias247dom96: Yes. Only that I would call it EventLoop ;)
20:24:57matobetAraq: hello
20:25:03dom96hey matobet
20:25:07AraqDemos: no there isn't and when I tried to do that in the compiler it was so buggy I removed it
20:25:17Matthias247hmm no, I wouldn't make it thead-local but would still allow multiple event loops in a thread
20:25:26Matthias247if anyone really wants it
20:25:48Matthias247but as soon as a Socket is bound to an EventLoop you can't move it away from it and send it to another thread
20:25:57Demosyeah symlinks could be hard. If I was using BSD I could put an envirenment var in the link
20:26:22Matthias247so you would probably get a Socket an .accept(), then call .makeAsync(eventLoop) and that would return you an AsyncSocket
20:26:27Demosmaybe we can clone a version from another library/language, or was the problem inherent to the UNIX FS/symlinks?
20:26:39Matthias247which additionally to normal read/write would have asyncRead() and asyncWrite() methods
20:27:06Araqdom96: I dunno. in general backrefs like you suggest suck
20:27:49dom96Matthias247: IOCP only allows one IO completion port per thread IIRC
20:28:14Araqdom96: I think a thread local dispatcher variable is better
20:28:18Matthias247dom96: I never used IOCP directly, but I don't think so
20:29:21Matthias247dom96: don't see a limitation here? http://msdn.microsoft.com/en-us/library/windows/desktop/aa363862%28v=vs.85%29.aspx
20:30:49Matthias247hmm, GetQueueCompletionStatus says: "This function associates a thread with the specified completion port. A thread can be associated with at most one completion port. "
20:31:16dom96Araq: Hrm, what do you mean? Isn't that what I suggested?
20:31:59dom96Matthias247: Well I'm not sure why you would need multiple event loops anyway
20:32:26dom96Matthias247: As for sending sockets to other threads: you can do that, just unregister the socket from the dispatcher and send it to the thread.
20:32:34Matthias247dom96: some GUI frameworks use nested event loops for dialogs. But it's nasty
20:32:39dom96(Well, at least I think you can)
20:32:51Matthias247you don't really want to have multiple event loops
20:33:23Matthias247but sometimes it happens because you use multiple libraries where each has it's own and you somehow have to integrate them
20:33:44clovisWould it be possible to use iterators?
20:33:59dom96Yeah, but in that case you don't need multiple event loops from the same library.
20:34:21Matthias247When you send the socket to another thread it can only work safely when there are no active read or write operations
20:34:46dom96Just call each event loop's poll/do_events or whatever function to do work for x ms and it should be fine.
20:35:35dom96Matthias247: I bet I could create a thread safe function which would do that.
20:35:36Matthias247if Nimrod really would provide a thread-local Eventloop and every library uses that consequently then you also would avoid the problem
20:35:41Matthias247that's the same thing QT does
20:35:55AraqMatthias247: yeah that's my hope
20:35:57Matthias247where each QThread employs an event loop
20:36:13clovisAs long as it is standardised it is good
20:36:25Matthias247ok, the more I think about it the more I like it :)
20:36:53dom96If we do introduce this magical transparent dispatcher then it would be nice to have a way to override that I think.
20:38:00dom96Well actually, the user will still need to write startDispatchLoop or something.
20:38:01Matthias247but I wouldn't like a too tight binding of the "runtime" into the language
20:38:40Matthias247thisThread.getEventLoop().run()
20:38:55*CARAM joined #nimrod
20:39:16Araqdom96: you could get rid of the dispatcher parameter everywhere and just expose a 'swapDispatcher' for the people who know better
20:39:29dom96Araq: Yeah, that was my thought.
20:39:33EXetoClet's bind Qt!
20:39:49Matthias247you could make an interface for an eventloop and allow to set this ;)
20:40:11EXetoCanother fun weekend project
20:40:11*BitPuffin joined #nimrod
20:40:16dom96EXetoC: do it
20:40:21Araqdom96: since we agreed we'll get the api wrong anyway, let's do it this way
20:40:38dom96Araq: lol?
20:40:40Araqit's also nicer for toy examples
20:41:06EXetoC*laughs confusingly*
20:41:32dom96EXetoC: precisely
20:42:57Matthias247some nice features I appreciated from other eventloop implementations: Have a run() and a run_once() function, make custom functions queueable (with and without timeout) and integrate a "microtask queue"
20:43:21*matobet quit (Quit: Page closed)
20:45:31dom96Araq: Take a look at https://github.com/Araq/Nimrod/blob/devel/tests/async/tasyncawait.nim
20:45:46dom96You know what would make it nicer? If void in generics worked.
20:46:11dom96Please fix that when you get a chance.
20:46:16clovisIs libuv not sufficient?
20:47:03dom96clovis: A pure nimrod implementation is a lot more sexy. :P
20:47:10clovisAh ;)
20:47:16Matthias247yes, and it's one dependency less
20:47:34flaviuIs anyone implementing regexes in nimrod?
20:47:55Matthias247and libuv doesn't allow something like socket.async_read(buffer, 1000)
20:47:58DemosI think bable should be able to deal with native deps, but I have no idea how we would do that
20:48:17Demoserm nimrod has the re module, although I guess that wraps pcre
20:48:23EXetoCflaviu: there's the 're' module
20:48:29EXetoCand a module called pegs
20:48:34EXetoC(PEG)
20:49:13Matthias247if you use libuv you would also have to integrate it's build system (gyp)
20:49:30clovisNot that nice
20:49:43dom96Demos: I don't think that's babel's job.
20:50:06Matthias247but I agree that it's a very decent library
20:50:13fowldom96, you dont use any result in this gist, what are the pfuture[int]s for
20:50:32dom96fowl: Because I can't use 'void' in generics.
20:50:58flaviuEXetoC: I'm aware of re, but it depends on perl. Thanks for peg, thats what I was looking for
20:51:04dom96Matthias247: The plan is to allow the usage of libuv instead of IOCP or epoll.
20:51:19clovisAnyway, every framework has its own event loop nowadays - even sdl if you need gfx
20:52:18Araqdom96: I fixed it weeks ago
20:52:25Matthias247dom96: why would you want it when you already have a good native implementation integrated?
20:53:40Matthias247I would have gone for client.send(disp, ...) instead of the other way around :)
20:53:58Matthias247But if the explicit disp will go then it doesn't matter
20:54:05*CARAM quit (Remote host closed the connection)
20:54:05dom96Araq: oh, awesome.
20:54:35dom96Matthias247: Because libuv is likely faster.
20:54:36*Endy joined #nimrod
20:55:13Matthias247dom96: When your implementation is good enought it won't be ;)
20:55:44Araqdom96: don't count on it, libuv likely spends all its time in 'if (errno) goto error' checks :P
20:55:57fowldom96, wicked macros in asyncio2
20:56:18dom96Matthias247: Indeed. :)
20:56:26dom96Araq: haha
20:56:57Matthias247and libuv is from api side really designed to provide a good basis for node and js
20:57:02Demosdom96, yeah, maybe a library that deals with it using staticExec and stuff, it would be fairly hacky
20:57:05Matthias247and not necessarily for your use case
20:58:01Matthias247you would have a start_read, some kind of read callback and an end_read. And not an async_read(buffer, size)
20:58:40Araqdom96: all we need is a 'gorge' section in a babel file
20:59:04Araqthen babel can run custom nimrod install programs
20:59:46*CARAM joined #nimrod
21:00:01dom96or just have a file called babelsetup.nim
21:00:19Araqyeah
21:00:27Matthias247the uv source is more C Preprocessor stuff than anything else ;)
21:00:39Araqpython's package manager does something like that iirc
21:02:26Matthias247dom96: i'm currently fixing the TIpAddress exceptions stuff. Do you insist on more specific error messages? I thought about it myself - but came to the conclusion that I like a consistent error message better than telling the user what exactly is wrong. I think an error message shouldn't be tutorial about how a valid address should look like :)
21:03:22dom96Matthias247: I would prefer to have a detailed error than a vague one.
21:03:41Matthias247ok. Can do that
21:03:41dom96If you make them detailed enough they will imply your current error anywa.
21:03:43dom96*anyway
21:03:51AraqMatthias247: it sucks to translate exception messages into more detailed error messages. nobody does it.
21:05:10Demoswell then we can have a nimrod library for compileing software with CMAKE
21:05:44Matthias247Araq: I ususally just crash and then I'm happy to read the message in the stack trace :)
21:08:35seubertwhat do y'all use as editors for nimrod
21:08:49dom96Aporia!
21:08:59Matthias247sublime text with NimLime
21:09:02Araqis cmake that "we can't write parsers so you have to use whitespace before semicolons" thing?
21:09:23seubertdom96: ah haha :D
21:09:45Araqseubert: Aporia!
21:10:20flaviuseubert: Vim
21:10:50seubertgood to see there is a variety of usages
21:13:16*brson joined #nimrod
21:13:46DemosAraq, ... no
21:13:54Demosthe syntax is kinda ugly
21:14:02Demosstarted LIKE FORTRAN WITH CAPS
21:15:11EXetoCdom96: nimrod source file for what? is this still about external dependencies?
21:16:17AraqEXetoC: yes
21:16:56Araqwe could support .bat/.sh scripts but then that's not portable so we should support nimrod "scripts" instead
21:17:57*shodan45 joined #nimrod
21:18:19Matthias247dom96: made an update
21:20:50EXetoCAraq: what would it do?
21:21:32AraqEXetoC: check that your C compiler supports 'memcpy'
21:21:49Araqcheck that this computer has a CPU ... OK
21:23:06dom96"can you see this? Hey human, please verify that you can see this so that I know that we have a working display!"
21:23:11dom96Matthias247: thanks
21:25:07EXetoCreally? I thought you meant just things like gtk
21:25:17*freddy3 joined #nimrod
21:25:25Araqhi freddy3 welcome
21:25:48freddy3thanks
21:26:05Araqdon't thank me, I'm just the greeting bot
21:26:08EXetoCanyway, I suppose you could have interfaces for common package formats, in which case you could add information about "external" deps for various platforms
21:26:15dom96Matthias247: I'll pull it. But next time please make sure your lines don't exceed 80 chars.
21:26:34Demosyou can point CMake at a git repo and have it download, build, and install into a user-provided prefix
21:26:46Matthias247dom96: ok. Didn't know whether there was a policy
21:27:00DemosI use it so I can checkout my c++ project do a new computer and just say make deps and have everything set up
21:27:04NimBotAraq/Nimrod devel cf43130 Matthias Einwag [+0 ±1 -0]: Added a IpAddress structure to the net module
21:27:04NimBotAraq/Nimrod devel e0692fc Matthias Einwag [+0 ±1 -0]: Use character ranges from strutils.
21:27:04NimBotAraq/Nimrod devel 35d9be1 Matthias Einwag [+0 ±1 -0]: $ for TIpAddress now prints in the recommended format
21:27:04NimBotAraq/Nimrod devel 09a5a50 Matthias Einwag [+0 ±1 -0]: raise exceptions through newException
21:27:04NimBot2 more commits.
21:27:07Matthias247dom96: And I'm still unsure where I can break lines with nimrod and where not
21:27:39AraqMatthias247: after ',' and binary operators and ( [ {
21:27:51DemosAraq, what about ;
21:27:52Araqthat's the rule of thumb
21:28:01Matthias247Araq: ok thx. And how should I indent in the next line?
21:28:14Matthias2472 more spaces or same level or doesn't matter?
21:28:30Araq2 more spaces, same level won't work
21:28:37EXetoCdeb, rpm etc
21:28:48Araqand Demos is right after ';' too of course
21:28:56Matthias247ok
21:29:10DemosEXetoC, I dont know how well deb and rpm support installing into a non-root prefix
21:30:45EXetoCDemos: does it matter? I'm referring to non-nimrod deps
21:31:31DemosI mean not really, but if we support deb/rpm we would be installing locally, otherwise we sould just call the package manager
21:32:23EXetoCyes that should work
21:32:35dom96Araq: I usually find it tempting to indent the next line to align with the params of the previous line, if the previous line is a proc declaration or a proc call.
21:32:38dom96Is that bad?
21:32:54Araqno I do the same, sometimes
21:33:26EXetoCI do that only rarely
21:34:01*Araq notices the recent blog post didn't raise complaints about the syntax
21:34:37*Araq thinks he now knows what the mainstream wants :P
21:34:45EXetoCwell, not for procs
21:35:36AraqDemos: what do you know about OpenCL/GPU programming?
21:35:59Demosvery little, I have never worked in OpenCL or CUDA
21:36:09Araqok too bad
21:36:22Matthias247Araq: I don't think the reddit and hn users are "mainstream" developers ;)
21:36:38*Endy quit (Ping timeout: 240 seconds)
21:37:29DemosRight, but we are not going to be popular with mainstream developers until we are actually better for their domains. We need to stableize
21:38:04Matthias247yes, you have to get some reputation at the "freaks" so that it spreads further :)
21:38:38Matthias247(or you have to get a big company that uses it)
21:40:25*flaviu quit (Remote host closed the connection)
21:40:55AraqDemos: I'm with you. we need stability.
21:41:24Demosbut even then you need to be stable and better than what people are using for the domains you are targetting.
21:42:21DemosLook at Go: Not a very interesting language but they were able to get it done really fast, and get tools out. And it is better than C++ and Java for server stuff (probably, I know little about web programming)
21:42:47EXetoCdom96: I just think it gets in the way of the important stuff
21:43:08AraqDemos: yes, I know
21:43:14EXetoCand sometimes you have to re-indent in quite a few places as a result of renaming
21:43:24Matthias247Demos: I'm not even sure that it's better. But they are good at persuading that they are ;)
21:43:47Matthias247and the thing about stability and tools(!) is absolutely true
21:44:36AraqGo also has google behind it
21:44:39Demosit is simpler, if I was a python or ruby programmer and I needed more speed Go would be reasonable, not having to learn c++ is a good thing. Go is just /smaller/
21:44:44Demosalso true
21:45:04Matthias247anything without a proper IDE, debugger and package system won't have a chance by now
21:45:12Araqand they announced it when there were 3 fulltime devs working on it already
21:45:13EXetoCMatthias247: most people probably just want to get things done, so yeah
21:45:17Matthias247but nimrod is already very good here
21:45:26Araq*3 fulltime devs*
21:45:26EXetoCand last time I checked, quite a few people wrote code for money :>
21:45:31DemosMatthias247, I agree, although a custom IDE is overkill
21:45:43Araqhow many fulltime devs does nimrod have?
21:45:47Araq0.
21:46:08Matthias247Demos: yes, you don't need that. Dart uses Eclipse. That's fine
21:46:33Araqthat's the major problem we have. everyting else is just irrelevant in comparison
21:46:35fowlthere are infinite monkeys working around the clock on the compiler, what we lack is tests.
21:46:46Matthias247Araq: I think they have even way more working on Dart. Guess >> 10
21:47:03*cark quit (Write error: Connection reset by peer)
21:47:21Araqfowl: we have over 600 tests.
21:47:25renesac[17:07:05] <Araq> speaking on which ... I plan to rename EInvalidValue to InvalidValueError etc. <-- why the "Error" suffix? It can only appear when raised or catch, so it is obviously an error. The suffix is redundant
21:47:26*cark joined #nimrod
21:48:06Trixar_zaWho cares? True developers don't give a damn, hobbiest like me don't care either. It's only lazy dumbass newbs that give a crap out things like an IDE
21:48:09EXetoCs/can't/usually does appear only/
21:48:11Trixar_zaBut yeah - what do I know :|
21:48:27Matthias247renesac: you can also use Exception types without raising them. I think it's ok. And consistent with what other languages do
21:48:49DemosTrue developers use ed.
21:48:50Matthias247Trixar_za: I care ;)
21:49:02Trixar_zaSee previous statement :P
21:49:18Demosand vim and emacs are essentially IDEs
21:49:33Trixar_zaI still suck at vim
21:49:36Matthias247Trixar_za: I can decide in quite large software projects which tools may be used and which not
21:49:57Matthias247Trixar_za: and things without an IDE (or other missing tools) would be kicked very soon from the list
21:50:00Trixar_zaWho hasn't?
21:50:21renesacMatthias247, where else you would use those types?
21:50:35DemosMatthias247, to be fair people use C++ and although that has IDEs, they rarely work
21:50:53Matthias247renesac: e.g. you can also deliver errors by callbacks
21:51:08AraqTrixar_za: I can easily work without IDEs but I prefer an IDE, if it works ;-)
21:51:10renesacI don't like this trade of short prefixes for long suffixes...
21:51:22Matthias247Demos: they are far batter than no IDE. And visual studio and QT Creator work quite good
21:51:25EXetoCI do prefer prefixes
21:51:48Matthias247renesac: that's what IDE's and autocompletion are for ;)
21:52:09renesacMatthias247, and it would be unclear if it didn't had the error suffix?
21:52:12Trixar_zaAraq: True, but I've used too many text editors like geany to stop now :P
21:52:18DemosMatthias247, you have never used VS on a larger project. And Qt creator falls apart even faster. VAX is good though. Debugger support is supah important as well, but the only IDEs that really do that well are XCode and VS
21:52:39EXetoCbecause it simplifies looking things up in alphabetically sorted lists
21:52:49renesacI don't like languages that can only be used inside IDEs...
21:52:58AraqI still miss Delphi (5-6 that is) ...
21:53:00renesacand I like lines 80 characters long
21:53:12EXetoCrenesac: 79? :pp
21:53:19renesacor 79
21:53:19renesacyeah
21:53:21Demosit can also be hard to get nimrod projects supported in an IDE, since IDEs like to use their own build system, or assume that you use make or something
21:53:28renesacthe divider is at 80
21:53:44DemosI hear Delphi had fantastic tooling.
21:53:48EXetoCyeah me too. people just want to make things wider and wider just because widescreen monitors are getting more common
21:53:59Trixar_zahehe - tooling
21:54:38Matthias247Demos: nothing > 100kloc I admit. And the older VS break quite fast. But with 2012 I had no problems
21:54:38Matthias247the problem is with c++, because it has no standard build system. So every IDE integrates it's own
21:54:47Trixar_zaBut isn't Qt Creator more RAD than IDE?
21:55:06dom96renesac: Errors like "EOS" need the "Error" suffix.
21:55:26Demosyeah, although many other languages don't have a standard build tool either
21:55:29Trixar_zaOh hey dom96
21:55:30DemosTrixar_za, nope
21:55:31AraqDemos: indeed. best IDE ever. fast as hell and yet full of features. the debugger also was a decade ahead of what others had.
21:55:41dom96Which coincidentally will not clash with the osError proc.
21:55:42EXetoCdom96: I think prefixes are better
21:55:47Demoswait which one, XCode or VS
21:55:48dom96*now
21:55:51Matthias247QT Creator is probably the best c++ IDE I've used
21:55:54dom96hi Trixar_za, long time no speak.
21:55:54Trixar_zaNever actually used it and I've coded interfaces in pyQT and PySide :\
21:56:19Matthias247apart from the debugger, which is super-slow
21:56:19Trixar_zaYeah, it's been a while - how is your editor doing?
21:56:25*zielmicha quit (Ping timeout: 240 seconds)
21:57:56*zielmicha joined #nimrod
21:58:38Matthias247And I still have the opinion that programming with a staticly typed language and a good IDE is much faster and less error-prone than with javascript or any other dynamic thing
21:58:59Matthias247Half of the time you only have to press ctrl+space and the IDE codes for you ;)
21:59:40Trixar_zaYeah, that's not improving my opinion of your coding ability :P
22:00:10Matthias247lol
22:00:43EXetoCMatthias247: yeah, just use variants or something if necessary
22:01:47dom96Trixar_za: Not doing very well. Kind of losing hope when it comes to GTK
22:02:06Matthias247Trixar_za: It has nothing to do with a being a better or worse coder. Good tools only help you to get things done faster. And not having to remember about every function and every parameter in gigantic libraries
22:02:26Trixar_zadom96: I know the feeling. Qt just seems so much better - except with WebkitQt of course.
22:03:11EXetoCdom96: how so?
22:03:13Trixar_zaNever had that problem, but then again I have a pretty good memory
22:03:28Trixar_zaSame excuse to why I forget to comment
22:03:39EXetoCI know you hade some issues with resizing, but that's probably not the only one
22:05:06dom96EXetoC: I constatly have issues with almost everything.
22:06:02Matthias247and being fucked up through every typo (like you are in JS) is not what you desire
22:06:02Matthias247I'm doing production code in 8 languages and frameworks. There's no chance I can remember all the libraries
22:06:02Matthias247so you either use an IDE or you are browsing the library references most of your work time
22:07:28dom96EXetoC: GTK feels like an endless struggle sometimes.
22:07:51renesacAraq, does the 'resize()' proc initialize the extra memory by default? I should, for consistency with 'create()'
22:07:56EXetoCdom96: you think some of these issues can be wrapped away? :>
22:08:15dom96EXetoC: What do you mean by 'wrapped away'?
22:08:26Araqrenesac: indeed it does unless 'realloc' is mapped to C's realloc
22:08:37renesachum, good
22:08:46renesacand there is no resizeu()?
22:09:02Araqno
22:09:16AraqI guess we should add that
22:09:17EXetoCdom96: with a.. wrapper
22:09:30EXetoCrather than just a binding
22:09:44renesacyeah (thought I would prefer as an optional argument as I said earlier)
22:09:44DemosI have heard GTK is pretty bad, it takes the "lets reinvent c++ in c and totally ignore everything that makes C good"
22:10:12EXetoCas in GObject and stuff?
22:10:35dom96EXetoC: oh. I doubt it.
22:10:54dom96EXetoC: Most of the issues stem from GTK's limitations.
22:11:39dom96It took me over 2 years to figure out why scrolling a text view to a specific line sometimes works and sometimes doesn't
22:12:00dom96And after fixing it I'm still not entirely sure about the exact reason why the fix is necessary.
22:12:06EXetoCWith or without asking anyone?
22:12:26dom96Oh yeah, the only reason I finally figured it out was thanks to someone on GIMPNet.
22:12:26EXetoC^_^
22:12:41dom96http://picheta.me/articles/2013/08/gtk-plus--a-method-to-guarantee-scrolling.html
22:12:50dom96The issue was so important to me that I wrote about it on my blog :P
22:12:52DemosI really do wonder what a really well designed C windowing tool would look like
22:13:11Araqiup?
22:15:32Demoshm, looks pretty nice
22:17:18Demosthere is also elementary, not sure how good that is though
22:18:20Araq"Known Issue (Compiler): when building with Open Watcom the additional controls crash. When you add debug information to the main IUP library the problem solves. We tried to track down this error but it does not occurs with debug information and our attempts without debug does not gives any results. So the IUP main library for Watcom is now distributed with debug information. (since 3.0)"
22:19:17Araqso it doesn't work with open watcom. big deal. what do you mean "open watcom itself hardly works and is dead"?
22:19:30Demosnever mind then
22:19:37*Matthias247 quit (Ping timeout: 240 seconds)
22:19:53*Matthias247 joined #nimrod
22:20:20*Araq is waiting for a macosx port of IUP. For 5 years now.
22:20:49*eigenlicht quit (Ping timeout: 240 seconds)
22:23:39EXetoCoh -.-
22:24:29DemosI was looking at the <control.h> and <draw.h> man pages from plan9, they look good. I have been thinking about how GUI libs are typically pretty classic OOP, but if you have callbacks I hardly see why that is needed
22:26:49*zielmicha quit (Ping timeout: 240 seconds)
22:27:14*zielmicha joined #nimrod
22:27:39Mat3Demos: Take a look at FLTK
22:27:53EXetoCAraq: OS X is mentioned a few times on the website
22:28:15DemosMat3, FLTK code looks good, but we are talking about C GUI libraries
22:28:18DemosFLTK is c++
22:29:10Araqthe problem with IUP and the like is that "simple" doesn't cut it and most of the time you need a crticial complex component
22:29:44Araqlike a source editor widget
22:29:51EXetoCI suspected that. So, are there any decent alternatives?
22:29:54EXetoCdom96?
22:30:01EXetoCright
22:30:02Araqor like a browser "widgets"
22:30:05Demoswell Qt, and KParts
22:30:18Demosbut again C++, I do like Qt though
22:30:21Demoshard to wrap
22:30:59AraqI think c2nim plus perhaps a few minor patches is up to the task
22:31:00EXetoCwe do have a C++ generator, but my guess would be that it still requires a lot of work
22:31:12Araqto wrap Qt
22:31:20EXetoCreally? amazing
22:31:50AraqEXetoC: well c2nim supports c++ now
22:34:39BitPuffinerr
22:34:49BitPuffinif c2nim can barely handle C how could it possibly handle Qt
22:36:00Mat3Demos: TK (without TCL) ?
22:36:35dom96EXetoC: My bet is still on webkit.
22:38:22dom96It allows for the greatest flexibility and people nowadays don't give a shit about performance.
22:38:52dom96As is the case with Atom.
22:39:04AraqBitPuffin: "barely handle C"? it handles C just fine, you need to edit the header. wooohooo big deal.
22:39:08dom96It not only uses webkit but also is written in Node.js IIRC.
22:39:54Mat3my personal favourite would be EFL (Enlightement Foundation Libraries)
22:40:19AraqMat3: Tk without TCL is only possible in theory last time I checked.
22:40:26Matthias247it is. But I think it's major performance problem comes more from the html rendering than from node.js logic code
22:40:32EXetoCdom96: that's fine as long as you have the ability to choose. as is the case with Qt for example
22:40:42Araqthere are no docs on how to do that
22:40:43EXetoCbut I can't say I know too much about it
22:42:36Mat3Araq: Good to know, thanks
22:43:09EXetoCMat3: All I know is that Enlightenment, which seemed like a solid product, is powered by it
22:43:48EXetoClet's see if the documentation is any good
22:44:56*CARAM quit (Remote host closed the connection)
22:46:07Araqgood night guys
22:46:10*Demos_ joined #nimrod
22:46:17EXetoCbb
22:46:45*psquid joined #nimrod
22:47:35Demos_I looked at EFL a bit, it came across as very macroey and kinda ugly
22:48:32Demos_the other issue with wrapping qt is moc, but I guess we could just clone moc with macros
22:48:34EXetoC:<
22:48:46Mat3ciao Araq
22:54:10Mat3EXetoC: http://docs.enlightenment.org/auto/evas/edje_main.html <- can't see any ugly concepts beside the C syntax
22:57:33Mat3this library uses a formal description and so abstracting the interface from GUI construction
22:58:34Mat3which is in my opinion a nice (and very old) concept
23:03:01Mat3ciao
23:03:15*Mat3 quit (Quit: Verlassend)
23:04:43*darkf joined #nimrod
23:19:22*flaviu joined #nimrod
23:24:30BitPuffinAraq: yes but that counts as barely
23:24:33BitPuffinif it handles C
23:24:38BitPuffinyou shouldn't have to edit it
23:25:10dom96BitPuffin: Did you see my awesome async stuff?!
23:25:18*flaviu quit (Read error: Connection reset by peer)
23:26:43*flaviu joined #nimrod
23:30:20dom96macros.nim(506, 12) Error: invalid type: 'void' :(
23:37:49*freddy3 left #nimrod (#nimrod)
23:44:34*Demos quit (*.net *.split)
23:44:37*Demos_ quit (*.net *.split)
23:44:38*cark quit (*.net *.split)
23:46:45*noam__ joined #nimrod
23:48:48*Demos joined #nimrod
23:51:09*brson_ joined #nimrod
23:55:54*psquid quit (*.net *.split)
23:55:55*brson quit (*.net *.split)
23:55:57*noam_ quit (*.net *.split)
23:55:57*vendethiel quit (*.net *.split)
23:55:58*dom96 quit (*.net *.split)
23:56:04*dom96 joined #nimrod
23:58:04*noam_ joined #nimrod