<< 23-06-2014 >>

00:00:07dom96and then people say 'yes' when they mean that they don't mind?
00:00:11BitPuffinor when people say "as the question" :)
00:00:19OrionPKwell. fuck.
00:00:19Varriountdom96: Yes.
00:00:27dom96OrionPK: I know right.
00:00:29VarriountThe emotional connotation supplied with the answer is far more important than the answer itself, in that case.
00:00:35OrionPK:-\
00:00:36EXetoCeither he could care a lot less, or just a little less. one of those
00:00:58VarriountEXetoC: I he could care not at all.
00:01:02Varriount*Or
00:01:08dom96https://www.youtube.com/watch?v=om7O0MFkmpw
00:01:55BitPuffinVarriount: well you can't care less than not at all
00:02:04BitPuffinso saying so makes a person look douchey
00:02:55EXetoCmaybe you can 'not care' a negative amount
00:03:12EXetoCI guess it wraps around then
00:03:42BitPuffinI ain't not got no money
00:04:49dom96That video has graphs and shit.
00:04:57dom96It explains it pretty well.
00:08:46Varriountdom96: Regarding watching a directory for changes to itself on windows, I'm just gonna make it so that a directory can be watched like a file for now.
00:09:52dom96Varriount: I think it may be best for you to just implement as you think is best. Once I can test it, it will be easier for me to determine what I dislike :P
00:16:52*saml_ joined #nimrod
00:17:40*flaviu joined #nimrod
00:18:40*superfunc quit (Quit: leaving)
00:19:12flaviu12% faster
00:19:57flaviudid a message get dropped?
00:20:05flaviu"BitPuffin: FYI, my new is actually faster with the memcpy than standard PThing()"
00:21:25Araqit's 12% faster but it's also wrong
00:21:45Varriount*gasp!*
00:22:08flaviuI was thinking something like that, I'm not really sure how this interacts with everything
00:22:40NimBotnimrod-code/babel master a541387 Dominik Picheta [+0 ±1 -0]: Normalise cmd line pkg name and ver range parsing.
00:22:40NimBotnimrod-code/babel master 0d6dabb Dominik Picheta [+0 ±1 -0]: Added docs for uninstall command to readme.
00:23:56flaviuAraq: Can you elaborate on how its wrong?
00:24:56AraqGC'ed fields need the write barrier to be invoked
00:25:04Araqmemcpy is not a write barrier
00:26:23flaviuBut isn't GC single threaded? I'm not sure I understand the purpose of having a write barrier
00:26:37Araqyes
00:26:41Araqyou don't understand
00:26:42EXetoCbut is it only a little wrong? if so, go for it
00:26:51Araqand yet you pretend to know everything
00:27:05Araqand come up with old stuff like 'new T'
00:27:10Varriountflaviu: But a single core may execute instructions out of order, right?
00:27:16Araqwhich I explained in the past why it's a bad idea
00:27:19Araqbut no
00:27:55Araqit's because "I'm unwilling to break code"
00:28:05Araqeven though that has nothing to do with anything
00:28:23flaviuVarriount: Sure, but its designed to be impossible to tell its executing out of order. As far as your program is concerned, it doesn't notice
00:28:23flaviuAraq: I haven't seen your reasoning why its a bad idea in the past
00:28:40flaviuOr I've forgotton
00:28:56Varriountflaviu and I are inquisitive.
00:29:17flaviuDo you have a link or a couple keywords I could use to google?
00:29:32Araqnah, it's all in the IRC logs
00:29:38Araqbut here is the short version:
00:30:32Araq"new T" is quite stupid, given that it doesn't work as soon as you need a factory
00:33:03*saml_ quit (Ping timeout: 240 seconds)
00:36:36Araqand what's wrong the current constructors anyway? Foo(field: 1, fieldB: ") ?
00:36:48Araqthat you dislike 'ref object'?
00:36:51flaviuI've found the relevent logs http://build.nimrod-lang.org/irclogs/16-02-2013.html
00:36:54Araqseriously?
00:37:04flaviuaround 22:00
00:37:36OrionPKthe 'could care less' thing is a generalization
00:37:37flaviuAraq: Not at all. I think it'd become redundant
00:37:40OrionPKnot all americans speak that way :P
00:38:29flaviuI also think it has the potential to cause more trouble than its worth, but I'm sure theres ways to mitigate that
00:40:51Araqconstructors are functions anyway and it sucks that this is wrong
00:41:16flaviuAraq: If I understand your factory point correctly, I'd also like to say that `new T()` is literally a function that takes a T and returns a ref T. That means that `new factoryForT()` is equally valid
00:41:55Araqthis is not at all how 'new' works in C#/Java/C++ though
00:42:16Araqnew Foo(a, b).method() works in Java
00:42:22Araqit's parsed as
00:42:25flaviuOnly recently IIRC
00:42:34Araq(new Foo(a, b)).method()
00:44:15flaviuI'd also like to mention another idea that would complement having this method very well: making method that shadow a type's name be valid
00:44:15flaviuMuch more complicated to implement, but it would effectively allow constructors
00:44:29Araqthe point is that 'new T' takes a *type* but for factories this is wrong as a factory returns T or *some subtype of T*
00:44:55Araqnew factoryForT doesn't really solve anything
00:45:12Araqas then I need to know I shouldn't pass T to 'new'
00:45:24Araqmight as well call factoryForT then
00:45:30Araqwithout the 'new'
00:45:47*saml_ joined #nimrod
00:46:02Araqand before you mention it
00:46:14Araqyes the T(...) syntax we ended up with has the same problem
00:49:43Araqunfortunately construction is special semantically no matter how hard you try not to make it special
00:52:02*saml_ quit (Ping timeout: 264 seconds)
01:00:30*brson quit (Quit: leaving)
01:00:37*brson joined #nimrod
01:03:27*goobles quit (Quit: Page closed)
01:03:39*saml_ joined #nimrod
01:09:30*gsingh93_ joined #nimrod
01:11:08*ehaliewicz joined #nimrod
01:13:12BitPuffinAraq: again nobody said it's because you are unwilling to break old code that this particular thing is the way it is, you are making a fool of yourself by suggesting it :P
01:14:45flaviu Actually, "BitPuffin: Araq is pretty unwilling to break backwards compatibility, even with small things that are ugly"
01:15:12BitPuffinflaviu: and where in that does that say that this means that this is ugly and this is why this is the way it is?
01:15:37BitPuffinWhat that explains is that you are unlikely to get your change through, regardless if you are right or not
01:15:50BitPuffinnot that this is something that should be fix
01:15:52BitPuffinsemantics
01:15:58BitPuffinit's what we do
01:16:26BitPuffinalso context
01:16:37BitPuffinI said that I don't really care for one over another
01:16:38flaviuBitPuffin: The context implies that, but I guess the implication wasn't intentional
01:16:46BitPuffinso why would I suddenly hting that this is ugly all of a sudden
01:16:52BitPuffinso no the context doesn't imply that, you are wrong
01:17:13flaviuOk
01:17:13BitPuffinthe sentence on its own implies that
01:17:34BitPuffinor actually no
01:17:36BitPuffin:P
01:17:38BitPuffinit doesn't
01:17:44BitPuffinthe sentence on its own speaks about the general case
01:20:12flaviuAraq: I'm still not really sure what you're saying. Can you give a concrete example for clarification?
01:20:26*q66 quit (Quit: Leaving)
01:22:33BitPuffinPFoo(a: 2) doesn't allocate currently does it?
01:22:36Araqflaviu: T(...) has been introduced because we really need it, but at least I didn't make the grammar complex for it
01:22:36flaviuJust to clarify, my `new` idea is not that `new` takes a type. Its that `new` just takes an object from anywhere, and moves it to the heap. `var a: MyType; var b = new a`, the value of a == the value b is pointing out
01:22:43flaviuBitPuffin: Yes, it does
01:22:55BitPuffineven on the heap?
01:23:11flaviuMy understanding is that it allocates to the heap
01:23:23BitPuffinhmm oh wait
01:23:26BitPuffinright
01:23:42BitPuffinI'm just used to doing new(PFoo) and then setting values because new let's you set a finalizer
01:24:01Araq'new T' introduces a weird special parsing rule or else is not like C#
01:24:36Araqand my apologies
01:24:49AraqI didn't understand your 'new'
01:24:57flaviuAraq: My proposal for `new` is literally what you see in that gist, I want that method to go into system.nim without any changes but the fence bugfix
01:25:25Araqwhat gist again?
01:25:44flaviuhttps://gist.github.com/flaviut/2ec636b67512acaec79f
01:27:15Araqno way
01:27:19Araqyour emit is wrong
01:27:27Araqthe real solution is:
01:27:35Araq result[] = obj
01:28:01Araqand btw that you can't take the addr of a parameter is an essential feature of the language
01:28:12Araqand not something we forgot to implement
01:28:28BitPuffinit wouldn't be safe
01:28:35flaviuThanks, I'm not really sure about the semantics of `[]` so I didn't know thats how you use it.
01:28:44BitPuffinflaviu: think *
01:29:25AraqI need to sleep now, good night
01:29:42flaviuI'm open to that change, and any other you find necessary, the goal of what I said is to clarify that I don't want a language change like that method, I want _that method_
01:30:07f0wlyou want to change more stuff
01:30:19BitPuffinfoo *new(foo f) { foo * nf = (foo*)malloc(sizeof(foo)); nf* = f; return nf; }
01:30:26BitPuffinthe nf* = f; nf[] = f
01:30:53flaviuf0wl: The other changes I came up with are 100% optional and completely orthogonal to the `new` issue
01:31:04flaviuBut would compliment it very well
01:31:06BitPuffinshould probably not call it new
01:31:15BitPuffinwith the C*'s
01:31:39*ehaliewicz quit (Remote host closed the connection)
01:31:44BitPuffinprobably better with something like heap or something
01:31:45f0wlno option to pass finalizer
01:32:08BitPuffinf0wl: very important
01:32:33Araqflaviu: I gave this solution on the forum once
01:32:39Araqcalled it 'create' perhaps
01:32:42Araqbut I said
01:33:04Araq"why is this missing from system.nim then? Because I never need it"
01:33:18Araqso why do *you* need it?
01:33:47flaviuBecause I don't want to use type prefixes, and I want to be able to allocate on both the heap and the stack with concise syntax
01:34:20Araq(ref T)(a: 1)
01:34:24AraqT(a: 1)
01:34:29Araqthere you go
01:34:49Araqmaybe (ref T)(a: 1) doesn't work yet, but that's a bug then
01:35:20flaviuI don't like having parans around `(ref T)`, but I can put up with it
01:35:30flaviuwhen that syntax works, I'll use that
01:36:03f0wlallocate on both the heap and the stack -- have fun defining this api
01:37:03flaviuf0wl: What do you mean?
01:37:28f0wldefining functions that act on Foo or ref Foo
01:38:06flaviuOh, I'd just ask for a Foo when I only need read access, and ask for a var Foo when I need to write
01:38:26Araqf0wl: that will get easier with auto-deref
01:38:41Araqbut I agree it doesn't come up all that often
01:39:39Araqgood night
01:54:29*f0wl quit (Quit: Leaving)
02:15:39VarriountAnyone ever put thought into how enums might be extended, without breaking api code that uses the enum members with case statements?
02:19:23*superfunc joined #nimrod
02:54:17*brson quit (Read error: Connection reset by peer)
03:25:39*superfunc quit (Quit: leaving)
03:25:59*superfunc joined #nimrod
03:34:28*joelmo quit (Quit: Connection closed for inactivity)
03:41:35*saml_ quit (Quit: Leaving)
03:53:35*flaviu quit (Ping timeout: 240 seconds)
03:57:23*superfunc quit (Quit: leaving)
04:18:06*fowl joined #nimrod
05:01:50*vendethiel quit (Quit: q+)
05:13:19*fowl quit (Quit: Leaving)
05:29:30*gsingh93_ quit (Quit: Connection closed for inactivity)
05:40:45*gkoller joined #nimrod
06:03:38*io2 joined #nimrod
06:03:48*io2 quit (Client Quit)
06:05:04*hoverbear quit ()
06:05:27*hoverbear joined #nimrod
06:05:28*hoverbear quit (Client Quit)
06:29:22*joelmo joined #nimrod
06:52:26*BitPuffin quit (Ping timeout: 244 seconds)
07:38:11*BitPuffin joined #nimrod
07:46:22*MayurYa joined #nimrod
07:46:31*MayurYa quit (Changing host)
07:46:31*MayurYa joined #nimrod
07:58:31*kunev joined #nimrod
08:08:13*ARCADIVS joined #nimrod
08:21:44*foodoo joined #nimrod
09:09:12*ARCADIVS quit (Quit: WeeChat 0.4.3)
09:11:27*pafmaf_ joined #nimrod
09:11:28*pafmaf_ quit (Client Quit)
09:11:46*pafmaf joined #nimrod
09:14:05*pafmaf quit (Client Quit)
09:17:16*pafmaf joined #nimrod
09:18:39Araqhi pafmaf welcome
09:18:53pafmafhi
09:19:04pafmaf(haven't been here in a while)
09:46:08*io2 joined #nimrod
09:46:25*Mat3 joined #nimrod
09:46:28Mat3hello
09:51:24Mat3I get an compilation error:
09:51:33Mat3Error: internal error: GetUniqueType
09:51:46Mat3No stack traceback available
09:54:16*io2 quit (Ping timeout: 260 seconds)
09:54:17Mat3I do not know the reason because the error message is to unspecific
09:55:00Mat3any hint would be nice
09:57:39Mat3ok, found the error, 'var aIlCpuOpcode = array [0..16, uInt8]' instead of 'var aIlCpuOpcode: array [0..16, uInt8]'
10:00:26*MayurYa quit (Ping timeout: 264 seconds)
10:04:08AraqMat3: yeah ... I know
10:04:31AraqVarriount: please do me a favour and mark all closure bugs with a new 'closure' tag
10:04:40Araqthese are all about to get fixed :-)
10:04:50Araqbbl
10:08:40Mat3Araq: Can I assume that changing the current error messages to somewhat more specific descriptions is not a trivial task ?
10:15:55EXetoCunspecific indeed, but that's kind of the nature of internal errors. those are always considered bugs
10:29:25*noam__ joined #nimrod
10:31:55*io2 joined #nimrod
10:32:32*noam quit (Ping timeout: 244 seconds)
10:43:58AraqMat3: indeed
10:44:27Araqwell it's not *that* hard to give line information here
10:44:39Araqbut the proper fix looks entirely different
10:51:32Mat3I see
10:55:38Araqin fact I'm thinking of how to support "types as a first class citizen"
10:55:58Araqvar x = int should be disallowed
10:56:10Araqbut var x = type(int) is not unreasonable
11:00:05*pafmaf quit (Quit: This computer has gone to sleep)
11:09:34EXetoCso = instead of : and it's a typedesc
11:19:50Araqthat's how it currently is
11:20:05Araqmy plan is to require 'type' so that the intention is quite clear
11:25:29dom96hello
11:27:36Araqhey dom96
11:28:46dom96hi Araq
11:29:36Araqdom96: an example that requires nested closures would be good now
11:30:57dom96Araq: Jester, new-async branch, tests/asynctest.nim
11:31:07dom96That's perhaps too complicated though
11:31:19Araqbah gist it or something simpler
11:31:31dom96I can't gist it
11:31:39dom96Is it so hard to clone the repo?
11:32:05Araqyep
11:32:56dom96It's easier than me coming up with a new example
11:33:38Araqit's called "distributed thinking"
11:33:59Araqdon't let the master brain do everything
11:34:03dom96no, it's called "araq being lazy" :P
11:36:00*io2 quit (Ping timeout: 260 seconds)
11:39:23*pafmaf joined #nimrod
11:44:45dom96Araq: https://gist.github.com/dom96/8bd8db6c57a7fa712a14
11:45:23Araqdom96: ok thanks
11:45:33Araqlet's see if that is simple enough
11:49:25*Mat3 quit (Quit: Verlassend)
11:50:20dom96yay, gradha tested babel.
11:50:29dom96and found a bug
12:03:00NimBotnimrod-code/babel master 6b03336 Dominik Picheta [+0 ±1 -0]: Fixes #42.
12:06:27EXetoCuniverse: fixed
12:07:38dom96hah :D
12:08:11dom96Life, the Universe and Everything: fixed :)
12:14:07*shevy quit (Ping timeout: 272 seconds)
12:19:02*shevy joined #nimrod
12:21:27*untitaker quit (Ping timeout: 245 seconds)
12:23:37*shevy quit (Ping timeout: 272 seconds)
12:27:04*untitaker joined #nimrod
12:35:01*io2 joined #nimrod
12:35:02*io2 quit (Client Quit)
12:35:26*io2 joined #nimrod
13:26:01*darkf quit (Quit: Leaving)
13:35:38*gkoller quit (Ping timeout: 276 seconds)
13:40:29*shevy joined #nimrod
13:58:38*foodoo quit (Quit: so long and thanks for the fish)
14:46:54*kunev quit (Quit: leaving)
14:47:59*pafmaf quit (Quit: This computer has gone to sleep)
14:49:17*kunev joined #nimrod
14:56:17*io2 quit ()
15:02:14*kunev quit (Ping timeout: 244 seconds)
15:33:59*Johz joined #nimrod
15:35:39*dom96 quit (Excess Flood)
15:38:37*dom96 joined #nimrod
15:41:43*nahamu left #nimrod ("WeeChat 1.0-dev")
15:44:08*fowl joined #nimrod
16:08:45*pafmaf joined #nimrod
16:12:58*superfunc joined #nimrod
16:13:16*hoverbear joined #nimrod
16:18:42*BitPuffin quit (Ping timeout: 244 seconds)
16:23:41*Jesin quit (Quit: Leaving)
16:32:31*noam__ is now known as noam
16:33:34*brson joined #nimrod
16:50:24*io2 joined #nimrod
16:55:37*brson quit (Quit: leaving)
16:55:46*brson joined #nimrod
16:56:44*goobles joined #nimrod
17:00:33*xtagon joined #nimrod
17:02:06*brson quit (Ping timeout: 240 seconds)
17:03:21*brson joined #nimrod
17:15:48*q66 joined #nimrod
17:19:15*Matthias247 joined #nimrod
17:23:19*BitPuffin joined #nimrod
17:36:10*Trustable joined #nimrod
17:38:19*Jehan_ joined #nimrod
17:39:25*kunev joined #nimrod
17:40:50*fowl quit (Quit: someone shoot me)
17:46:01*brson quit (Ping timeout: 244 seconds)
17:51:15superfuncsup Jehan
17:51:44*brson joined #nimrod
17:51:49Jehan_Hi, superfunc!
17:52:05superfuncHows it going?
17:55:35*Mat3 joined #nimrod
17:55:43Mat3Good Day
17:55:59superfuncHey Mat3, welcome
17:56:09Mat3hello superfunc
18:00:12*brson quit (Ping timeout: 245 seconds)
18:06:30Jehan_One of the things that I seriously hate about Dart is how complicated it is to build it from scratch.
18:07:02*brson joined #nimrod
18:08:08superfuncI haven't had to chance to mess with it yet, though I really respect one of the guys working on it
18:09:02Jehan_I like it a lot, which makes it frustrating how annoying it can be to deploy.
18:09:23superfuncIts posed to be an alternative to JS right?
18:10:02Jehan_Not really.
18:10:08Jehan_It is a general purpose language.
18:10:44superfuncOh ok, I had only heard about in that context. Thats cool
18:11:10Jehan_Honestly, it's probably more interesting for non-web stuff. :)
18:11:22Jehan_Or where you need both so that you require only one language.
18:12:23Matthias247Jehan_: the good thing is that you usally don't need to build it from scratch
18:12:27superfuncThat's funny, since their website calls it a "web language" lol
18:12:34Jehan_But one of the strengths of Nimrod is that you essentially can deploy the entire compiler with a project assuming that there is a functioning C compiler.
18:13:01Jehan_Matthias247: Depends. If you write tools that you want arbitrary other people to run, you do need that.
18:13:05*nequitans_ joined #nimrod
18:13:32superfuncIts one of my favorite parts about Nimrod.
18:13:43*hoverbea_ joined #nimrod
18:14:20Jehan_superfunc: Having it as a JS replacement was probably the original motivation, but the library and the language go way beyond what you need for that.
18:14:37Matthias247I guess if you are targetting windows or osx then binary dart is fine. linux - don't know about libc dependencies
18:14:59Matthias247and for embedded dart is simply not supported - contrary to nimrod
18:15:13Jehan_Matthias247: Has to run on Windows, OS X, Linux, Solaris, and BSD at least.
18:15:23superfuncJehan_: That's cool, I'll throw it on the never ending list of things to learn (^.^);
18:16:10Matthias247don't know if solaris and bsd support is worthwhile :)
18:16:14Jehan_superfunc: I've seriously been toying with using it as a kinda-sorta scripting alternative to Python and Ruby.
18:16:18Matthias247in terms of user-base
18:16:33Jehan_Matthias247: Hard requirement for me.
18:16:37*hoverbear quit (Ping timeout: 264 seconds)
18:16:47Matthias247somewhere was written that it is also considered for android. But I guess that's more a rumor
18:17:14Matthias247I would however like it. More than java
18:17:54Jehan_Hmm, I'm not sure that it's well-suited for Android.
18:18:03Jehan_On the other hand, the same could have been said about Dalvik.
18:18:43Matthias247I think they could add support for Binder IPC and therefore access to most of android framework quite easily
18:18:46*pafmaf quit (Quit: This computer has gone to sleep)
18:18:46Jehan_To this day, I'm not sure why Google considered it so important to have a JIT language on a mobile platform.
18:18:57Jehan_So important that they disregarded all alternatives, too.
18:19:05Matthias247but I don't know if they would like to rewrite the whole UI framework
18:19:54Matthias247the question is what were the alternatives? C++? Don't think so, if they want a big developer base
18:20:05Matthias247Mono would have been nice :)
18:20:15Jehan_Matthias247: Why a JIT in the first place?
18:20:31Jehan_It's not like ARM hardware is oozing spare processor cycles.
18:21:18Jehan_Especially given how patents prevent them from optimizing Dalvik to the maximum extent possible.
18:21:21superfuncThere was a post on reddit about Go getting support through the NDK
18:21:34superfuncI'd much rather write Go than Java
18:22:14Matthias247Jehan_: but what be a non-jitted easy-to-use and high-performant language?
18:22:18Jehan_superfunc: Depends on the application domain.
18:22:54Jehan_Matthias247: There are enough around, and they could easily have designed one themselves?
18:23:10superfuncIn general, I just find it more enjoyable. If I am working alone, I don't mind Java, but whenever I have to collaborate with others, their code seems to bloat really really fast
18:23:16Matthias247Jehan_: examples? :)
18:23:20Jehan_High performance is only a function of the backend, more or less.
18:23:37Jehan_Matthias247: Take Delphi, add a GC, done.
18:24:08superfuncAnon. Classes everywhere, though lambdas may mitigate that
18:24:23Matthias247I think Java was mostly for having a broad developer base. Which you don't have when you take something very special or make your own thing
18:24:56Jehan_Matthias247: Not according to the letters that were shown in Oracle v. Google.
18:26:05Jehan_Even so, they could have just statically compiled the Java code.
18:26:36Jehan_But Android, like iOs, is a platform where you can pretty much pick your own language and people WILL adjust.
18:26:53Matthias247yes, that would have been another option
18:26:59Jehan_It's not like Objective-C had a whole lot of mindshare prior to iOS.
18:27:39Matthias247yes. But Apples Market position is and was different
18:27:57Matthias247people bought iphones because they are cool, not because of objective-c or something else
18:28:35Matthias247and the developers simply have to take the only tool that was available to make apps for it. And they do it - because they want to make money
18:28:36Jehan_And the same would have gone for Android customers.
18:28:47Matthias247android startet with a very small market share
18:29:07Matthias247Could have easily failed when nobody wanted to do apps for it
18:29:09Jehan_Nobody bought Android phones because apps were writtten in Java.
18:29:41Mat3hmm, after take a first look at it, I see no real advantage of Dart against Javascript
18:29:49Jehan_If anything, they hamstrung their market position by using an inefficient JVM implementation.
18:30:07superfuncHas anyone messed around with getting nimrod working on android?
18:30:17Jehan_Mat3: Type checking, the fact that it has a standard library for non-web stuff?
18:30:25superfuncTYPES
18:30:28superfuncTYPES MATTER
18:30:32Jehan_superfunc: Would be a lot of work.
18:30:58Mat3that's not an advantage in my opinion
18:31:13superfuncJehan_: I may mess with it once we hit 1.0
18:31:28Matthias247static typing is a hudge advantage for me
18:31:31superfuncThough getting Qt4 or Qt5 bindings is higher on my list after finishing my game
18:31:35Jehan_Mat3: Totally fine, but there are people who prefer typed languages.
18:31:37goobleswhy wouldn't nimrod work on android, doesn't it compile to c?
18:31:39Matthias247and dart has a very well thought out standard library
18:32:05superfuncMatthias247: Yes
18:32:16Jehan_goobles: It would, the problem is creating the library bindings.
18:32:48Jehan_Possibly bootstrapping stuff, too, I don't know enough about Android on the native level, but nothing unsurmountable there.
18:33:04superfuncJehan_: Couldn't you just write logic in Nim and call to it through the NDK with the UI layer handled in Java
18:33:10Araqwe have an andriod project in the distribution
18:33:26Jehan_superfunc: No idea.
18:33:41Araqso yes, nim works on android
18:33:47Jehan_I have to say, I'm a smartphone luddite, so this is mostly just of theoretical interest to me.
18:34:11gooblesi think you can make 100% native apps now for android
18:34:17superfuncYeah, I own a blackberry right now for gods' sake
18:34:27Jehan_goobles: I know you can, just not sure what is involved.
18:34:33Matthias247the C standard library is different between android and linux. Therefore not every linux code compiles on android
18:34:54Matthias247glibc vs bionic
18:36:51Matthias247superfunc: of course you could do such mixed projects on Android. The main problem would be that the build and distribution process is much harder than with only java code
18:37:15Jehan_Which reminds me that I'm still curious why a JVM backend for Nimrod would be impossible. Not very efficent, sure, but why impossible?
18:38:09Araqafaik the unsafe stuff doesn't really work well with the rest of Java's object model
18:38:52Araqbut ok, "impossible" is overblown
18:38:58Jehan_Araq: True, but the same goes for the CLR.
18:39:06Jehan_At least in part.
18:39:09Araqno the CLR is much better
18:39:57Jehan_Araq: No disagreement that the CLR is tons better as a backend, but that particular issue it doesn't handle much better?
18:40:30Jehan_At least I can't see how one would implement copyMem, for example.
18:41:20Araqwhat's the problem? it supports arbitrary casts
18:41:52Araqand pointer arithmetic too
18:42:58Jehan_Hmm, isn't the implementation somewhat constrained with respect to that, too?
18:43:19Jehan_Pointer arithmetic is doable on the JVM, too, just very inefficient.
18:44:42dom96I have an iOS app written in Nimrod on my iPad and it works well. As for Android, it also worked last time I tested it (albeit in the emulator). Gradha is the man to speak to about this.
18:44:51Mat3as I know the CLR features a very rich type model (the stack ISA however is as inefficient and obsolete than the JVM one)
18:46:01AraqJehan_: CRL supports cast[pointer](myobject), JVM does not
18:46:33Araqthat means you pretty much need to emulate another virtual machine on the JVM
18:46:50Araqand have no useful interop with Java libraries
18:47:06Araqyou can compile C to the JVM with this approach
18:47:18Araqbut it's completely unuseful
18:47:43Jehan_Araq: You could do pointers as pairs (reference to underlying array, offset).
18:48:05Araqthat's what we do for the JS backend, for some pointer types
18:48:07Jehan_Pointer arithmetic for other stuff is undefined in C, after all. :)
18:49:01Jehan_But I'm not a big fan of the JVM myself, mostly just playing devil's advocate.
18:49:05Araqyes fat pointers are a solution for pointer arithmetic, but not for the missing cast primitive
18:50:07Araqbut this could all be wrong anyway, Java's unsafe stuff evolves too
18:50:13gooblesjvm zzz, compile it to lua!
18:50:13Araqand I'm not up to date
18:50:14Jehan_And I'd have to look up the ECMA spec myself, but I'm not sure if you really can do arbitrary casts in the CLR.
18:50:46Jehan_Well, there's sun.misc.Unsafe ..
18:51:58Mat3goobles: because of LuaJIT this would be indeed a good choice except, that the Lua VM documentation is poor
18:52:18gooblesnot the VM, just lua code
18:52:21Jehan_One concern with arbitrary pointer casts in the CLR would also be that it'd be tricky to get pinning right.
18:52:37gooblesthe VM bitcode isn't even the same between lua/luajit
18:52:46Mat3goobles: I so not see how a language like Nimrod would compile to Lua well
18:53:06gooblesit probably would suck ya
18:57:48Mat3well, Lua is extensible- instead of the mess compiling Niomrod to Lua, the Lua environment can be extended into a Nimrod friendly IL representation
18:58:07Mat3^Nimrod
18:58:14gooblesmake it so you can run a nimrod program, change the nimrod code while it is running, never have to restart;0 Nimrod would replace obj/java yaahh
18:59:06gooblesa static typing lua(nimrod) would be pretty sweet
18:59:26Mat3probably a good strategy
19:00:17*superfunc quit (Quit: leaving)
19:00:18*Mat3 I would extend LuaJIT instead of the plain Lua sources
19:01:01gooblesluajit can do some tricks where it removes allocations it might not be as bad as you would think to just compile into lua
19:01:14gooblesbut the lua GC don't scale very far
19:01:21AraqMat3: I would do the same, but luajit's code is really hard to follow
19:01:31Jehan_What Araq said. :)
19:01:43*kunev quit (Quit: leaving)
19:02:03Araqgoobles: the JS backednd has been designed to be able to produce Lua code instead of JS as well
19:02:03Jehan_It's also why I'm reluctant to invest much in LuaJIT. It's still essentially a one-man project, from what I know.
19:02:22Araqthe plan was to use LuaJIT for the new compiletime evaluation engine
19:03:28Araqbut when I wrote vm.nim I was fed up with code generators that munge strings
19:04:17Araqalso I was afraid to debug this nimrod->LuaJIT->unsafe code for the FFI stack ;-)
19:06:07Mat3ok, understandable. I had studied LuaJIT some time ago (specially the assembler version of its interpreter)
19:06:44*pafmaf joined #nimrod
19:09:34Mat3the ISA is still somewhat similar to the standard Lua VM which implements a canonical RISC encoding (like MIPS 32)
19:09:55Araqthe ISA is not the hard part of it ;-)
19:10:38AraqJehan_: that luaJIT is a one man project wouldn't be a problem if Mike hung out in IRC
19:10:39Mat3yes. My point is that this ISA would be no more difficult to handle than any native-code compiler for common RISC architectures
19:11:05Jehan_Araq: Possibly.
19:11:29Jehan_That said, he's both brilliant and productive. Didn't mean this to be criticism of his person.
19:14:02AraqHe is also not a single person but a team of developers :P
19:14:48Jehan_?
19:14:59goobles0-o
19:15:10Mat3ciao
19:15:11EXetoChe cloned himself?
19:15:18EXetoCMat3: bai
19:15:26*Mat3 quit (Quit: Verlassend)
19:15:56Araqwell rumors exist he doesn't exist :P
19:16:08Araqbut he is a team
19:16:54*Puffin joined #nimrod
19:17:17*fowl joined #nimrod
19:19:05*BitPuffin quit (Ping timeout: 272 seconds)
19:30:24*ARCADIVS joined #nimrod
19:30:54dom96hi ARCADIVS
19:31:12ARCADIVSHello
19:41:35*gkoller joined #nimrod
19:41:55VarriountHello everyone!
19:42:32Varriount:D
19:45:04dom96hey Varriount
19:45:49Varriountdom96: I have filemon.nim done, however there's some sort of memory leak occuring that I'm trying to track down.
19:46:28VarriountAraq: I don't suppose there's any easy way to see what allocations are hanging around?
19:47:11AraqVarriount: no, but it's a planned feature
19:47:49Araqbut the leak might become a crash with --gc:markAndsweep
19:48:06VarriountThanks, I'll try it.
19:48:19Araqyou really shouldn't store closures, refs, strings in a ptr
19:48:34Araqdom96 had the same bug with the OVERLAPPED struct
19:49:04VarriountI'm not using pointers for anything other than interfacing with some system code.
19:49:13VarriountMostly string conversion.
19:55:09VarriountHopefully the problems in my own code, and not the asyncdispatch code...
19:59:46VarriountAraq: Should GC_fullCollect() normally error?
20:00:01Araqno?
20:00:23Araqerror in what way? crash?
20:00:43Araqoh you mean that it doesn't clean up everything
20:00:47Araqwell yes
20:01:00Araqit can leave lots of stuff alive which you know is dead
20:01:11Araqthanks to the conservative stack marking
20:01:21VarriountAraq: Yes, it crashes the program
20:01:36Araqwell it shouldn't
20:01:50VarriountHm, then it's probably something on my end.
20:04:53goobleswhy u crash nimrod varriount?
20:05:02gooblesstop you that
20:05:23Varriountgoobles: Because nimrod ate my yogurt.
20:09:37*brson quit (Quit: leaving)
20:10:12*brson joined #nimrod
20:13:32VarriountThat was... odd
20:14:22gooblesbrson whats up with rust
20:14:41VarriountA procedure which was only supposed to be called once was called 3 times.
20:15:00gooblesis it recursive !
20:15:17VarriountNo...
20:16:04VarriountHm.. I wonder if capturing a parameter which is a closure in another closure is causing the problem...
20:16:24gooblesi like closures they are best
20:16:34VarriountIndeed.
20:16:34gooblesyou need not fear the closure
20:18:34brsongoobles: lots of meetups happening. one this week in sf. still trying to finalize core semantics
20:21:15*ARCADIVS quit (Quit: WeeChat 0.4.3)
20:25:52fowli wrote a thing for lua interop
20:25:55fowlhttps://gist.github.com/fowlmouth/fa6e3498d39e7c81c9dc
20:26:05fowlwill write something similar for python later
20:31:35VarriountGah. How am I supposed to debug this?
20:31:53*hoverbear joined #nimrod
20:31:55*ARCADIVS joined #nimrod
20:32:01*hoverbear quit (Max SendQ exceeded)
20:32:17fowlVarriount, with an iron will and a stolid heart?
20:32:30VarriountAraq: For some reason, the GC is crashing when a particular closure (which calls GC_fullCollect) is called 3 times
20:32:40*hoverbear joined #nimrod
20:33:12dom96Varriount: Show us the code
20:34:21*hoverbea_ quit (Ping timeout: 255 seconds)
20:35:58Varriountdom96, Araq: https://gist.github.com/Varriount/b53e67ad749793bdfc38
20:36:26VarriountOh, wait, forgot the other module
20:39:45dom96Varriount: I think you're missing a GC_ref in watchDir
20:43:14Varriountdom96: Nope.
20:43:27Varriountdom96: The closure itself performs an implicit ref.
20:44:05Varriountdom96: Anyway, adding a ref/removing the decref still causes the crash.
20:46:18dom96what removes the crash?
20:46:28dom96(and causes the memory leak you mentioned)
20:47:08*gkoller quit (Quit: gkoller)
20:50:58Varriountdom96: Well, I don't know what causes the memory leak, other than removing the entire closure.
20:51:45VarriountThe crash results from calling GC_fullCollect, but that's just an artificial speedup of whatever causes the crash.
20:52:23VarriountEven without GC_fullCollect, the crash happens (it just takes a lot longer to happen.
20:52:36VarriountI'm thinking that maybe it's something cyclic?
20:56:31*superfunc joined #nimrod
21:02:43VarriountI'm gonna see if stuffing everything implicitly captured in the closure into the change handle will work.
21:20:06VarriountAraq: Is there anyway to get more information from the GC about what it's choking on? Say, compiler build flags or something?
21:27:12*Jehan_ quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
21:28:21*superfun1 joined #nimrod
21:28:45*superfun1 quit (Client Quit)
21:29:10*superfunc quit (Quit: leaving)
21:29:30*superfunc joined #nimrod
21:29:35AraqVarriount: lots of things
21:30:16Araqstart with -d:useGcAssert -d:useSysAssert
21:39:31*ARCADIVS quit (Quit: WeeChat 0.4.3)
21:41:13*Johz quit (Ping timeout: 264 seconds)
21:42:03*Puffin quit (Ping timeout: 240 seconds)
21:42:29*Puffin joined #nimrod
21:45:51superfuncls
21:46:01superfuncwhoops
21:53:35*io2 quit ()
21:53:37*superfunc quit (Ping timeout: 272 seconds)
21:55:54VarriountAraq: Turning on GcAssert did something. I'm getting a new traceback which mentions GcUnref
21:58:54VarriountAraq: Yay! Thanks for the advice. One of the structure's reference count was being decreased by an outside force.
22:03:14*Trustable quit (Quit: Leaving)
22:05:18Araqan outside force?
22:06:41Varriountasyncdispatch
22:07:26Varriountpoll() decrements the reference count of the Overlapped structure it processes.
22:27:09*EXetoC quit (Read error: No route to host)
22:33:06*EXetoC joined #nimrod
22:46:42*ARCADIVS joined #nimrod
22:59:30*Matthias247 quit (Read error: Connection reset by peer)
23:00:31*ARCADIVS quit (Quit: WeeChat 0.4.3)
23:05:32*ARCADIVS joined #nimrod
23:12:09*darkf joined #nimrod
23:12:25*nequitans_ quit (Ping timeout: 264 seconds)
23:15:06*pafmaf quit (Quit: Verlassend)
23:24:14NimBotnimrod-code/babel master 99ae796 Dominik Picheta [+0 ±1 -0]: Updated developers docs.
23:24:14NimBotnimrod-code/babel master abb0e22 Dominik Picheta [+1 ±0 -0]: Added changelog.
23:25:24*hoverbear quit ()
23:27:51*fowl quit (Quit: Leaving)
23:28:52*flaviu joined #nimrod
23:33:45NimBotnimrod-code/babel refs/tags/v0.4 05ac7d5 Dominik Picheta [+0 ±2 -0]: Version 0.4.0
23:34:19*fowl joined #nimrod
23:34:27*dorei joined #nimrod
23:36:08dom96https://github.com/nimrod-code/babel/releases/tag/v0.4
23:36:10dom96:D
23:36:29*Joe_knock joined #nimrod
23:36:40*Demos joined #nimrod
23:37:10Araqdom96: congratulations!
23:37:21dom96thanks!
23:39:46NimBotnimrod-code/babel master 05ac7d5 Dominik Picheta [+0 ±2 -0]: Version 0.4.0
23:54:38dom96http://forum.nimrod-lang.org/t/482
23:54:44dom96voila
23:55:31dom96*cricket sound*
23:55:41shevyis there a central repository for babel packages?
23:55:57flaviushevy: github.com/nimrod-code/packages
23:56:37flaviudom96: I had irc closed, so I was a bit late to see it