<<09-02-2013>>

00:00:00Araqproc makeCString(x: string): PRope = strutils.escape(x).toRope
00:00:18reactormonkyeah, about that
00:07:52reactormonkAraq, ehh, I found a scoping issue with templates
00:09:53reactormonkcurl http://sprunge.us/ZAZN > foo.nim && nimrod -d:nodejs foo.nim && node nimcache/foo.js
00:10:04reactormonk http://sprunge.us/HhWB
00:10:47Araqyeah yeah yeah, I know I know
00:13:02reactormonklooks rather ugly to fix
00:15:22reactormonkI think I should look out for a job in QA
00:28:41*SchalaZeal joined #nimrod
00:29:09SchalaZealIs openarray deprecated in favor of varargs?
00:29:32AraqSchalaZeal: no, but they are slightly different
00:30:48SchalaZealhmm
00:30:52SchalaZealhow?
00:31:47Araqread the manual
00:33:20SchalaZealhmm... I'm reading the latest and it says nothing for openarrays
00:33:29SchalaZealjust varargs
00:34:41SchalaZealoh!
00:34:59SchalaZealtutorial has it
00:38:51*Zerathul quit (Quit: ChatZilla 0.9.89 [Firefox 18.0.2/20130201065344])
00:43:52SchalaZealhmm... in the middle of making another JS wrapper, wondering if this would be accurate: proc browserOpera*(): bool{.importcpp: "Prototype.Browser.Opera", nodecl.}
00:44:09reactormonkSchalaZeal, nope, use importc
00:44:13SchalaZealokay
00:44:21reactormonkand the nodecl isn't necessary iirc
00:44:29SchalaZealah...
00:45:49SchalaZealI was trying to wrap EaselJS last week when I came across something troubling: a child class that apparently redefines a superclass's variable
00:46:04reactormonkhuh
00:46:35SchalaZeallike.... hmm...
00:47:45SchalaZealEaselJS's DisplayObject and its child class BitmapAnimation both have two separate `cache` variables
00:48:28SchalaZealoh
00:48:30SchalaZealwait...no
00:48:59SchalaZealwe have an instance of the equivalent of multi-methods here
00:49:52SchalaZealthing is... should I use method syntax for a JS wrapper?
00:50:25Araqyou shouldn't
00:51:18SchalaZealwell right now I have one field in TDisplayObject called cache, a proc pointer, and then in a child class TBitmapAnimation there's an overriding of that
00:51:32SchalaZealor polymorphism
00:51:35SchalaZealnot sure
00:52:21Araqyou have to think differently to approach JS wrapping ;-)
00:53:33Araqit's not hard: you have to do is to ensure that nimrod's primitive JS backend will produce the proper JS *syntax*
00:54:01Araqin JS: obj.f(x)
00:54:03SchalaZealhmm
00:54:32SchalaZealso a string object could be an int for all it cares?
00:54:44SchalaZealhypothetically speaking
00:55:02Araqyes
00:55:14SchalaZealthat DOES make it easier
00:56:49SchalaZealHmm... when I importc, do I have to specify it exactly how it's typed in the JS file?
00:57:51SchalaZealBecause in JS you can call it like Prototype.Browser.WebKit, however... here's how it's written in the source: https://github.com/sstephenson/prototype/blob/ecacc02/src/prototype/prototype.js#L76
00:58:11Araqhow it's called is what matters
00:58:19SchalaZealah
00:58:24SchalaZealthat clears things up
00:59:01Araqproc p() {.importc: "Prototype.Browser.WebKit.DoIt".}
00:59:02Araqp()
00:59:07Araqwill produce:
00:59:19AraqPrototype.Browser.WebKit.DoIt();
01:00:27*fowl joined #nimrod
01:00:35SchalaZealI see
01:05:11Araqok good catch the manual doesn't mention openarrays ...
01:05:18Araqfixing that
01:11:29reactormonkAraq, I assume the scoping is uglier to fix?
01:12:07*SchalaZeal quit (Quit: Konversation terminated!)
01:12:32Araqreactormonk: it's in genRepr(), ecmasgen.nim:1223
01:13:39Araqdunno how to fix it
01:16:47*SchalaZeal joined #nimrod
01:18:49reactormonkAraq, why is true 1 and false 0 in the JS backend?
01:20:35Araqugh, bug
01:23:05SchalaZealAlso, I just realised something. If Nimrod may have a Java generator (say for Android apps or something similar) or a C# generator for CLR.... I don't know how Nimrod would handle interfaces.
01:23:40reactormonkSchalaZeal, well, produce jvm bytecode for starters ;-)
01:23:55AraqNimrod runs on Android, ask gradha when he's around
01:24:05SchalaZealah
01:24:20reactormonkAraq, and go through the pull requests once in a while
01:24:44SchalaZealalso I'm trying to port something from Dart, which uses interfaces... so uhm....... yeah I have no idea what to do there
01:25:13Araqagain, how is an interface invoked? obj.m(x)?
01:25:40SchalaZealwell see, you could have class Foo extends Bar implements Baz
01:25:44Araqthen it's: proc m(obj: A, x: B) {.importcpp.}
01:26:21Araqdeclare a converter for the type relation
01:27:37SchalaZeallike if........ Listener is implemented by Foo, Bar, Baz, have type Listener = ref TFoo | ref TBar | ref TBaz?
01:28:46Araqconverter toListener(x: Foo): Listener = return cast[Listener](x)
01:28:54Araqconverter toListener(x: Bar): Listener = return cast[Listener](x)
01:29:01Araqconverter toListener(x: Baz): Listener = return cast[Listener](x)
01:29:10SchalaZealhmm
01:29:11Araqor perhaps:
01:29:24Araqconverter toListener(x: Foo | Bar | Baz): Listener = return cast[Listener](x)
01:29:52SchalaZealI'm wondering why not use a proc/method for that?
01:29:53Araqif the compiler doesn't chew on that
01:30:19Araqbecause the converter will be called for implicitly to do the type conversion
01:30:26SchalaZealah
01:30:43Araqconverters only have names for consistency
01:30:55Araqso that you can invoke them explicitly too
01:31:47SchalaZealI see. So does the type definition for Listener I specified apply or do you mean something different?
01:32:17Araqhrm
01:32:27AraqI would make it a first class type
01:32:37Araqtype Listener = ref object
01:33:05SchalaZealah ok
01:40:11Araqgood night
01:40:18SchalaZealnight
01:42:02*SchalaZeal quit (Quit: Konversation terminated!)
02:16:53*Anaphaxeton joined #nimrod
02:25:35*Anaphaxeton quit (Ping timeout: 255 seconds)
02:26:09*q66 quit (Quit: Quit)
02:28:16*Anaphaxeton joined #nimrod
02:47:43*Anaphaxet0n joined #nimrod
02:47:59*Anaphaxeton quit (Read error: Connection reset by peer)
02:51:37*Anaphaxet0n quit (Client Quit)
03:00:23*Anaphaxeton joined #nimrod
03:02:46*Anaphaxeton quit (Client Quit)
03:11:42*Anaphaxeton joined #nimrod
03:26:02*rking joined #nimrod
03:48:03reactormonkAraq, WTF? stuff is final by default?
04:17:22reactormonkproc foo(x:seq[any]) = echo 1 # crashes the compiler
06:57:59shevyhehe
08:05:39*gour joined #nimrod
09:36:07*gour quit (Quit: WeeChat 0.4.0)
10:04:30*gour joined #nimrod
10:09:37*gour quit (Quit: WeeChat 0.4.0)
10:45:48*fowl quit (Ping timeout: 264 seconds)
11:38:33*q66 joined #nimrod
11:45:21*fowl joined #nimrod
11:47:19*gour joined #nimrod
11:54:08*gour quit (Quit: WeeChat 0.4.0)
12:21:42*gour joined #nimrod
13:24:24*gour quit (Quit: WeeChat 0.4.0)
13:39:38dom96hello
13:40:15*gour joined #nimrod
13:49:00*gour quit (Quit: WeeChat 0.4.0)
13:53:02*gour joined #nimrod
14:08:48gourreactormonk: ping...i re-build and re-installed nimrod from the scratch and today I get the following: http://pastebin.com/uaBhBrr5
14:31:08*FreeArtMan joined #nimrod
14:35:28Araqgour: interesting ...
14:35:38Araqso it looks like some heisenbug ... :-/
14:56:25gour??
15:00:56*gour wonders whether Araq consider quantum mechanics or something else
15:11:59*mwcampbell joined #nimrod
15:18:18Araqwelcome mwcampbell
15:18:33mwcampbellHi. I've been here before, though it's been over a year.
15:18:53Araqoh alright
15:19:14Araqwell it's still at 0.9.0 :-/
15:19:38mwcampbellI wasn't going to ask about your release timeline. :)
15:20:06Araqhey, plan is 1.0.0 at the end of this year ...
15:20:10mwcampbellNimrod always accesses libraries other than libc by loading DLLs or .so's at runtime, right?
15:20:38Araqthat's the default implementation for most wrappers, yes
15:21:03mwcampbellSo there's an alternative, if I want to, say, statically link libcurl?
15:21:39Araqyeah, but you have to edit libcurl.nim to do that
15:22:01mwcampbellSpeaking of libcurl, why do you have both a libcurl wrapper and your own HTTP and FTP clients?
15:22:39Araqlibcurl wrapper was first and may be less risky to use ;-)
15:23:12mwcampbellI'll use the pure-Nimrod client if I can, because your dead code elimination is awesome.
15:23:20Araq:D
15:24:07Araqthe networking stuff tends to be not as stable as the interface constantly adapts to new language features ;-)
15:24:45Araqfor instance, the async stuff now uses closures but may change again to use Nimrod's new first class iterators
15:25:11Araqwhich provide C#-like await/async features as a side-effect :-)
15:25:28mwcampbellnice
15:27:20mwcampbellBack to an earlier topic, I think it might be a mistake to load shared libraries at runtime by default rather than referencing them at link time. The latter enables more static analysis (e.g. "dumpbin /imports" to see a program's dependencies)
15:27:39AraqI noticed ;-)
15:27:46mwcampbell(dumpbin is a tool from VC)
15:28:19Araqit's nice to not require "devel"-stuff on linux or import libraries
15:30:04mwcampbellIs there any way to use Nimrod with the MSVC toolchain?
15:30:39Araqyeah and zahary uses their debugger for nimrod code
15:30:54mwcampbellNice.
15:31:10AraqI don't do it, so I can't say how good it works in practice
15:31:15mwcampbellFor a project that I'm thinking of doing in Nimrod, one requirement is portability to Windows CE. (yes, old Windows CE)
15:31:25gourhmm
15:31:40mwcampbellI'll take care of any CE-specific issues that come up
15:31:51Araqexcellent
15:32:10AraqI don't think we use any advanced features of the win API
15:32:39mwcampbellI already know that the DLL names are all different
15:32:51gourso, nimrod is quite capable to do multi-platform (gui) projects?
15:33:16*FreeArtMan quit (Ping timeout: 246 seconds)
15:33:36mwcampbellgour: Nimrod has bindings for Win32 and GTK.
15:34:11*FreeArtMan joined #nimrod
15:34:32gourmwcampbell: yeah, i'm looking for gtk3, but having qt/wx would be nice as well
15:35:09mwcampbellQt and wx would be difficult because they're C++ APIs
15:35:31*gour nods
15:36:02gourbut, iirc there was some talk to improved
15:36:13gourC++ side of ffi
15:36:19gour*improve
15:36:36gouror maybe i'm wrong
15:36:49mwcampbellAnother option would be to do your application back-end in Nimrod and give it a C API, then do the front-end in C++ with whatever toolkit you want.
15:37:08mwcampbellsee the cross-calculator example
15:37:33Araqyou should really at least consider lazarus for the front-end
15:37:39gouri'd rather stay away from C(++)
15:37:49Araqnative UI with UI builder on Mac, Windows and Linux
15:38:14mwcampbellSpeaking of Nimrod exporting a C API, what happens if Nimrod functions are called from multiple threads?
15:38:15gourAraq: what would be the place for nimrod then, why not pascal all over?
15:38:26mwcampbellDo I have to call NimMain or some other initialization function in each thread first?
15:39:34Araqyou have to call NimMain, yes; I'm not sure it's been tested for multi-threading
15:39:44Araqgood point, will look into that
15:41:24mwcampbellAraq: I guess this is off-topic here, but I'm curious about why you like Object Pascal better than C++. In both cases, OO was added on to an ancestral language.
15:41:50mwcampbellAlso, how similar is Lazarus to Delphi?
15:42:18mwcampbellI can see some Pascal/Delphi influence in Nimrod. The "T" prefix by convention for user-defined types, for instance.
15:48:15Araqgour: I can't follow, what's the difference between C++ and Pascal for the frontend for that matter? you can also simply use C++ for the whole application then
15:49:44gourAraq: the question is, why not doing whole project in pascal instead of just front-end?
15:50:20Araqgour: why not doing the whole project in C++ instead of just front-end?
15:52:06Araqmwcampbell: the differences between OP and C++ are not small: C++ added OO on top of a weakly typed language
15:53:13Araqthe OO additions to pascal feel much less bolted on IMO
15:53:39gourAraq: i simply believe to deserve something better than C(++) in 21st century
15:53:51gouri used C++ in the era of zortech c++
15:55:10Araqbut anyway, Nimrod is not particularly object oriented anyway, so that's not where I put the focus on for a programming language comparison
15:55:58gourbut nimrod is modern, type-safe language etc.
15:55:59mwcampbellNow you've got me curious about Object Pascal and Lazarus...
15:56:15gourme too :-)
15:56:44Araq*shrug* I'm not worried :-)
15:57:25AraqI don't use it anymore, I use Nimrod instead
15:57:42Araqmaybe you'll come to the same conclusions ;-)
16:00:06mwcampbellI suspect that Nimrod is better for programming in the large simply because it has garbage collection.
16:00:36mwcampbellAnd the project I mentioned earlier that involves a port to Windows CE may well still be a good fit for Nimrod.
16:00:56mwcampbellBut for right now, I've got this very small project to do, that's dominated by the GUI and calls to the Windows API. I may just do that one in Pascal with Lazarus
16:01:03mwcampbell(once I learn the language)
16:06:50AraqNimrod also has a macro system, a more advanced type system, an effect system and yet kicks python's ass for scripting :P
16:20:12q66Araq, btw, i finally added macros to my lang
16:24:06Araqq66: well? how powerful have you made them?
16:24:32q66Araq, for now they can't extend the syntax and they are non-hygienic, but i'll add hygiene eventually
16:24:39q66they're quite powerful, but simple
16:25:03q66the basic idea is that macro is like a function that runs at compile time - it takes inputs that are implicitly quoted, and it's supposed to return an AST node
16:25:15q66so e.g.
16:25:15q66macro add(a, b) -> quote (unquote a + unquote b)
16:25:23q66you could write that like
16:25:26q66macro add(a, b) do
16:25:31q66 return quote (......)
16:25:32q66end
16:25:50q66and in that form you can execute different stuff (like node processing) at compile time as well
16:26:02Araqcheck out how nimrod does it then
16:26:16q66the expansion syntax is then like
16:26:18AraqI think the split between template and macro is quite nice in nimrod
16:26:21q66print(add!(5, 10))
16:26:42Araqbecause for simple macros ("templates") you don't have to deal with quoting
16:26:56q66I roughly based mine on this http://elixir-lang.org/getting_started/5.html
16:27:07q66of course my AST is totally different
16:32:10gourAraq: dmitry (http://www.dmitry-kazakov.de/) active in Ada does not like (read some threads) generics considering them unstable, but not sure whether it is in general or just implementation in Ada...maybe you know about it?
16:34:06Araqwell Ada's generics were quite useless for what I liked to do with them back in the days
16:34:27Araqthat's all I know about it
16:34:48AraqI recently figured out that GNAT's "unbounded_string" is a bad joke
16:35:14gourok, that's useful to know
16:35:18Araqin fact, it's one of the worst pieces of code I've ever seen in a standard library
16:36:08Araqit copies the whole string whenever you append a single character
16:36:21gourinteresting algorithm
16:37:07Araqand then the compiler likely copies that again into your variable as strings have value semantics in Ada
16:37:39Araqoh it also mallocs the new buffer of course
17:05:21gourAraq: i must say that lazarus/fpc look tempting...thank you for the pointer
17:06:48*fowl quit (Quit: Leaving)
18:10:20dom96Araq: Talked to the github guy today in person and he said that the linguist stuff should be done in a weeks time.
18:11:53Araqdom96: ok ...
18:17:25AraqI believe that when I see it, sorry dom96
18:17:48dom96same :P
18:17:56dom96just giving you an update ;)
18:26:27reactormonkgour, so it should work by now
18:27:29reactormonkAraq, btw, I buggered around old issues
18:28:38AraqI noticed, reactormonk thanks for that ...
18:28:54AraqI got 20 mails full of noninformation
18:28:59Araq:P
18:29:00reactormonkAraq, lawl
18:29:16reactormonkAraq, disable it then
18:29:22Araqyou know ... these bugs may be old
18:29:33Araqbut that doesn't mean somebody fixed them in the meantime
18:29:39reactormonkAraq, I checked.
18:30:03reactormonkAraq, those without any comments of mine aren't fixed.
18:30:30Araqwhat do you mean?
18:30:40Araqthey are all not fixed
18:30:45reactormonkAraq, some are
18:30:55Araqnot in my opinion
18:31:10Araqoften there is some underlying issue that at least I want to look at again
18:31:13reactormonkthat's good enough.
18:36:08Araqhow come you have the rights to close bugs btw?
18:36:56reactormonkAraq, I don't
18:54:32mwcampbellAraq: You mentioned earlier that one advantage of loading DLLs dynamically at run time is that you don't need import libraries. But on Windows, at least, there's a way to create the import library from the DLL
18:55:00Araqmwcampbell: yeah but this is not reliable
18:55:31Araqafaik you can't really determine the calling convention
19:02:50reactormonkAraq, what is a calling convention exactly?
19:05:56reactormonkIs it as lowlevel as how the arguments go onto the stack?
19:06:25Araqreactormonk: exactly
19:10:19gourreactormonk: should i update nimrod or its mode?
19:11:18reactormonkgour, if it works, nope
19:14:11*shevy quit (Read error: Operation timed out)
19:24:43gourreactormonk: i do not see that it works..."foobar". gives nothing, there is no 'suggestion' buffer etc.
19:27:39reactormonkgour, but the above nimrod idetools works?
19:28:50gourreactormonk: yeah, that was that 'shell command', but withing emacs, nothing
19:29:31*shevy joined #nimrod
19:30:49reactormonkgour, anything in /tmp/nimrod-idetools-stderr ?
19:34:50gourreactormonk: nope, it does not even exist today
19:35:15reactormonk:-(
19:37:48reactormonkgour, grab *scratch*, (debug-on-entry 'nimrod-call-idetools)
19:38:06reactormonkgo to EOL, hit C-x C-e
19:38:11reactormonktry again with "foobar".
19:38:41reactormonkgour, or wait, first go to the . and M-x ac-complete-nimrod-completions
19:41:22gourreactormonk: it reports writing some /tmp/nimrod-suggest* file
19:42:02reactormonkgour, couldn't surpress that so far :-/
19:44:09reactormonkgour, then try the debug stuff
19:44:43reactormonkto undebug, call (cancel-debug-on-entry 'nimrod-call-idetools) (write it to scratch, C-x C-e with the cursor after the ) )
19:45:49gourok, debug is off
19:46:03reactormonkit should be on...
19:46:18gouri mean, it's cancelled
19:46:35reactormonkdon't do that yet. That's just here for cleaning up.
19:47:11gourahh, too late...i already executed cancel-xyz statement
19:47:17gourshould i activate it again?
19:47:22reactormonkyes.
19:47:57reactormonkthen call ac-complete-nimrod-completions somewhere appropriate
19:49:24gouri did on the point of "foobar".
19:49:32reactormonkcool
19:49:36reactormonkdoes the debugger pop up?
19:49:55gourno
19:50:13reactormonkgood
19:50:22gouronly report about written file in minibuffer
19:50:58reactormonk... wtf?
19:51:19reactormonkThe only place where I write that file is inside the method nimrod-call-idetools
19:52:14reactormonkthe debugger pops up only if I call it via ac-complete*
19:52:26goursomething is strange...
19:52:37reactormonkemacs version?
19:52:42gour24.2.1
19:52:59reactormonk... whut
19:55:49Araqreactormonk: Because local > imported. So it isn't ambiguous. And this keeps the naming for both targets the same.
19:55:56Araqgood to know
19:56:05AraqI wasn't aware of that rule ...
19:56:10Araq:P
19:56:44reactormonkAraq, ... what? You wrote the freaking compiler
19:57:16Araqexactly
19:57:31AraqI know it has been introduced for templates
19:57:41Araqthat it also works for procs is ... hm
19:57:56reactormonkunexpected sideeffect?
19:58:06reactormonkthe compiler works in mysterious ways.
19:58:19AraqI guess zahary did it this way for consistency
19:58:29Araqso that we have the same rules for procs and templates
19:59:24Araqin fact, I always wondered if we should consider scopes for overloading resolution
19:59:51reactormonkimo yes.
20:01:42reactormonkzahary, doc for serve? :-)
20:06:11mwcampbellHas anyone developed a web application server framework for Nimrod yet?
20:07:13mwcampbellNot necessarily a full-stack framework like Rails or Django, with ORM, form helpers, etc. Just a way to receive HTTP requests, call a function based on the URL, and send responses.
20:07:32reactormonkAraq, do we have an http server lib?
20:09:28Araqmwcampbell: "Jester" does that
20:09:53Araqthough most recent versions of the compiler can't compiler it anymore ;-) I'll fix it once I find the time
20:10:26Araqreactormonk: httpserver is part of the stdlib
20:11:15Araqmwcampbell: we also have a JavaScript backend, you can compile a subset of nimrod to JS
20:11:37Araqmeaning that you can at least re-use your input validation stuff on the client
20:15:12*gour wonders if nimrod is going to be web-development framework or push itself as system language :-)
20:15:36reactormonkgour, web? unlikely
20:22:47mwcampbellCan the HTTP server in the standard library only handle one request at a time?
20:34:30*XAMPP quit (Quit: Leaving)
20:40:20Araqmwcampbell: it's not multi-threaded, but it can work in async mode
20:43:45reactormonkmwcampbell, node-style
20:48:31mwcampbellAnd in async mode it can handle more than one request at a time?
20:48:48mwcampbellI ask because I notice some request-related fields in TServer
20:49:34dom96hrm, that's a good question.
20:50:21mwcampbellIt seems to me that there should be a TRequest type, a new instance of which is created for each request.
20:52:14dom96Jester can handle multiple simultaneous downloads.
20:52:17dom96Just tested this.
20:54:54mwcampbellWhat's the URL for Jester?
20:55:06dom96From the implementation of httpserver it seems that it currently does not support multiple simultaneous requests.
20:55:14dom96Jester can use the httpserver module or the scgi module.
20:55:24dom96https://github.com/dom96/jester
20:55:52mwcampbellI think I like SCGI better anyway
20:56:00Araqit's not important anyway, is it? you should use something like nginx
20:56:22*gour runs hiawatha happily
20:56:37Araqotherwise you need to re-implement its efficient handling of static pages, load balancing, logging, etc.
20:56:48dom96indeed.
20:57:05dom96httpserver is absolutely fine for testing.
20:57:45Araqmwcampbell: http://forum.nimrod-code.org/ is built on Jester
20:57:47dom96We can always improve it, but it's not that important. I doubt it will ever be as good as nginx.
20:58:08dom96and build.nimrod-code.org :)
20:58:25reactormonkgour, oh, I got to strip away the ""
21:03:50gournp
21:05:40reactormonkseems to be something else... whatever.
21:06:23*gour quit (Quit: WeeChat 0.4.0)
21:10:18reactormonkAraq, should I separate the kwin and the other commits?
21:10:50AraqI don't care much if every commit is acceptable :P
21:10:57reactormonkwell, are they?
21:11:25Araqdid you change the makeJSString stuff?
21:12:06reactormonknope. What should it be?
21:12:14AraqI told you
21:13:15*gour joined #nimrod
21:13:21reactormonkNever heard of reusability?
21:13:56Araqwhat's that to do with it?
21:13:57reactormonkI can add an {.inline.} if that helps
21:14:04Araqwhat are you talking about?
21:15:41reactormonkwell, it's 3 code points I'd sed into there, not just good old strutils.escape
21:16:21AraqI told you to make a proc makeJSString(s: string): PRope and use that in ecmasgen.nim
21:16:43Araqaka rename makeCString to makeJSString
21:17:00reactormonkoh, meh. Didn't read carefully enough. Sorry
21:17:08Araqnp
21:18:23reactormonksure I shouldn't call it makeECMAString? ^^
21:20:34*FreeArtMan quit (Ping timeout: 244 seconds)
21:20:43Araqnah, I'm about rename all this ecma crap
21:20:56Araqeverybody calls it javascript
21:21:19Araqin fact, I'll happily accept a pull request that renames it
21:22:47reactormonkthere we go.
21:27:05*gour quit (Quit: WeeChat 0.4.0)
21:38:13*XAMPP joined #nimrod
21:38:13*XAMPP quit (Changing host)
21:38:13*XAMPP joined #nimrod
21:40:17*XAMPP quit (Read error: Connection reset by peer)
21:42:12reactormonkAraq, oh well, force pushing killed your comment
21:42:55mwcampbellI was looking at the captcha module in nimforum, and I noticed that the Cairo objects are explicitly destroyed at the end of createCaptcha. Is there not a way to let the garbage collector clean them up?
21:44:23Araqmwcampbell: there is
21:44:32Araqwe have both finalizers and destructors
21:44:47Araqhowever C bindings use neither
21:45:06Araqhowever, destructors are still not completely implemented
21:45:23Araqand finalizers require you to wrap the object in a GC'ed object
21:46:57*gour joined #nimrod
21:47:43gourreactormonk: does 0.14. solve the problem?
21:48:24gour.profile does not work here...besides, i use zsh, but found the following (if 0.1.4 is not solution) - https://github.com/purcell/exec-path-from-shell
22:02:59gournow it works with exec-path-from-shell package
22:08:38reactormonkgour, just customize nimrod-command
22:09:23gourreactormonk: ok, but the question remain how to use it without invoking ac-complete-* ?
22:10:07reactormonkgour, oh, good old tab. auto-complete should do that with the settings I used
22:11:03gourreactormonk: where to set those things? i've seemingly everything installed and the dialog pops-up when invoked manually'
22:11:14reactormonkgour, let me look it up
22:18:37reactormonkgour, what is 'Ac Trigger Key'?
22:18:41reactormonk... in customize
22:22:10gouroops...its' nil
22:23:31reactormonknew version published
22:23:42reactormonk... which sets the trigger key to tAB
22:23:53reactormonkgour, no oops, my fault to not see it.
22:24:29reactormonkcan't help any further with the nimrod-command except to tell you to customize it :-(
22:25:37gourreactormonk: how one defines tab? as TAB?
22:26:06reactormonkgour, package-list-packages => update
22:28:24gourcool, now it works
22:28:29reactormonk\o/
22:28:50reactormonknext stage is to use the signature somehow
22:29:03reactormonkAraq, pull pull pull >:)
22:29:16gourheh...now i'm just sad why Araq told me about lazarus :-/
22:30:29reactormonk^^
22:33:58Araqgour: why?
22:34:30gourAraq: 'cause it looks good and reactormonk just helped me to make nimrod-mode working
22:35:35NimBotAraq/Nimrod f7f8230 Simon Hafner [+0 ±1 -0]: rawEcho hack for kwin target
22:35:35NimBotAraq/Nimrod 029b654 Simon Hafner [+0 ±1 -0]: fix for exit code of compiler (JS bug?)
22:35:35NimBotAraq/Nimrod bddbfde Simon Hafner [+0 ±1 -0]: hack for long string literals in C bugs in JS. Fixed.
22:35:35NimBotAraq/Nimrod c8ae632 Araq [+0 ±3 -0]: Merge pull request #327 from Tass/master... 3 more lines
22:36:41Araqgour: I told you about it months ago
22:37:08AraqI'm sure you'll forget about it soon and will return
22:37:12gouryes, but then I could not hear
22:37:47gourreally? it can produce native-looking guis for every platform
22:38:00gourwhich looks better than e.g. having gtk on mac
22:38:41reactormonkgour, tk tile should be good too
22:39:23Araqgour: you cannot use FPC/Lazarus anyway because it is not Ada :P
22:40:46gourreactormonk: well, i've heard that new(er) Tk looks much better using native look, but have to see something
22:41:14gourAraq: i'm not so attached to Ada as i was to haskell/D...so, everything is possible ;)
22:53:42gouri forgot most of the pascal and not familiar with fpc's extensions, but i'm sure there is no question that nimrod is much better designed as a whole...however, the question is whether writing multi-platform gui apps is niche which it wants to cover or is more suitable for other tasks (like gaming, as system language etc.)
23:18:52Araqgour: the real question IMO is what kind of widgets you need
23:19:25Araqfor instance I really prefer GTK's source editor over Lazarus's
23:20:19Araqand if you don't need any advanced widgets IUP could be an alternative too
23:20:35gourIUP?
23:20:55gouri believe that gtk+ would be good-enough
23:21:05Araqhttp://www.tecgraf.puc-rio.br/iup/
23:22:32gournot sure if it's not simple enough...there is also question about the support
23:24:06gourdoesn't lazarus use gtk (on linux)?
23:24:13Araqit does
23:24:42Araqand can also use QT but I don't know how stable the QT backend is
23:25:05gourthe work is done for cocoa as well
23:25:36Araqtrue; iup should get a cocoa backend too
23:25:53Araqbut apparently they removed that goal
23:26:05Araqtoo much work I guess
23:26:24gourbut there are anyway no iup bindings for nimrod, right?
23:26:37Araqthere are :P
23:26:42gourohh
23:27:03gourwhat about gtk3? soon?
23:27:14Araqask dom96
23:27:38gourahh, right, he is IDE guy
23:27:47dom96hah
23:28:02dom96According to Araq I'm the sockets guy :P
23:28:08Araqgour: http://www.tecgraf.puc-rio.br/iup/en/toolkits.html
23:28:23dom96As for gtk3, in my opinion it's not worth supporting yet.
23:29:08dom96A nicer gtk2 wrapper is planned, perhaps I will create a gtk3 wrapper at the same time.
23:29:25gourhhm team - 2, last update - 2011/04...it's not very thrilling
23:30:30Araqthat's not up to date
23:30:31gourdom96: gtk bindings are mostly wrapper over C API or there is some type-security which nimrod can provide?
23:31:08Araqnimrod almost always improves type safety at least a bit
23:31:16Araqas the language is stricter than C
23:31:25dom96yes, but I want to add some extra safety to the gtk wrappers
23:31:37gourwhat about memory management?
23:31:40dom96as well as perhaps closure support for the signals
23:32:02Araqmemory management is as bad as in C for the gtk wrapper
23:32:15gourhmm
23:32:50Araqbut it's not that bad for GTK, is it?
23:33:28Araqstuff ends up being owned by the window and released once the window is closed
23:33:39Araq(I think)
23:34:22dom96GTK has its own reference counting mechanism.
23:37:43*mwcampbell quit (Quit: Leaving)
23:38:24*gour --> sleep
23:39:09gourtomorrow i plan to do some 'divination' to discern what is the status of language candidates, including nimrod...
23:39:12gour'night
23:39:17*gour quit (Quit: WeeChat 0.4.0)
23:51:39*mwcampbell joined #nimrod