Log of the #nice channel on irc.freenode.net

Using timezone: Central European Time
* bonniot leaves02:33
* arjanb leaves02:42
* bonniot joins09:51
* karltk joins10:04
<bonniot>hi10:05
<karltk>hi bonniot 10:09
will/does nice allow for type inference in the style of ocaml, ie foo() { return 10; } -> int foo?10:10
<bonniot>it does it for the return type of anonymous functions (closures)10:12
and it is planned to extend it to anonymous function parameters too
<karltk>but not for named functions?10:13
<bonniot>there is also already the possibility to let the type of local variables to be inferred
<karltk>yeah, and local var type inferrence is nice:)
<bonniot>for named inner functions it should be possible too, you're right10:14
for named toplevel functions/methods, there is no inferrence for several reasons
<karltk>I looking for a statically typed language which sort of looks and feels like a dynamically typed language.10:15
<bonniot>the first one is that methods are "open", so that you can add implementations in other packages. therefore that code is unavailable to do type inference. it's even possible to declare a method without any implementation, in which case type inference is down right impossible
the second reason is that for toplevel methods, it's usually a good idea to write the types for documentation purposes10:16
karltk: sounds interesting ;-)10:17
<karltk>yeah, I certainly see the documentation aspects.
(and the technical reasons on "open" methods)
<bonniot>ok
so nice can partially help you since there is _some_ inference, but it does not go all the way, for technical and philosophical reasons10:18
<karltk>as my host reveals, I'm part of the gentoo project, a linux distribution. most of our tools are written in python, given its rad nature.
<bonniot>what do you think about python and ocaml?10:19
<karltk>however, as our tools become really complex, and maintained by multiple people, we of course run into the area where static typing and/or heavy unit testing is required.
<bonniot>(is there a nice port for gentoo?)
yes, I can imagine ;-)
<karltk>I like ocaml, but it's so different from mainstream languages that we cannot really standardize on it.10:20
so, I'm looking for something that's familiar to most people
<bonniot>ok
<karltk>I think all of us like python for its rapid turnaround.
it's high-level, which makes you generally more productive.10:21
but eventually, the dynamic typing comes around and bites you:(
<bonniot>yes
<karltk>as for a nice port. iirc, I tried making an ebuild for it, but I couldn't get the compiler to bootstrap properly.10:22
<bonniot>you can have a high-level, statically typed language :-)
<karltk>we have this policy that all packages must compile from source on installation time, for both very practical and philosophical reasons.
<bonniot>yes, I know about that
I'm a debian guy myself, and I made sure Nice is buildable from source with free tools (kaffe, jikes, classpath)10:23
so I can help you with that
<karltk>yeah, exactly, I really want a high-level statically type language which feels like a dynamically typed language as much as possible.
the fixedness of the interfaces is obviously a debatable issue10:24
<bonniot>can you elaborate on that?
<karltk>interface fixedness?10:25
well, what if you have a class with id(x) { return x; }
<bonniot>ok, i see
<karltk>in a dynamical world, this kinda makes sense.
for the static case, you run into all kinds of issues.
I guess it should resolve to Any id(Any x) { return x; }10:26
<bonniot>have you read http://nice.sourceforge.net/manual.html#abstractInterfaces ?
<karltk>Actually, I was just getting to that now:)
ooh, an eclipse plugin.10:29
<bonniot>how is it going?11:52
my point about abstract interfaces was that it allows to handle the situation that is most often said to be only possible in dynamic languages
<CIA-3>03bonniot * 10Nice/src/bossa/parser/Java1.1.jj: Remove Java 1.1 grammar to avoid confusion, since it's not used in any way.12:20
03bonniot * 10Nice/src/bossa/parser/Parser.jj: Allow 'final abstract' classes (at least syntactically).12:55
* arjanb joins
hi12:56
<bonniot>hi
<CIA-3>03bonniot * 10CVSROOT/cvsignore: Ignore 'semantic.cache' files, which are created by Semantic for Emacs12:59
<arjanb>daniel: is something delaying the next release?14:48
<bonniot>no, not really14:50
i'll probably make void 'final abstract'14:51
arjanb: what are your plans?15:13
<arjanb>i have no specific ones atm15:15
btw the testsuite has gradually slowed down so that the effects of last month optimization are undone15:16
<bonniot>isn't it because there are more tests?15:18
but I think it's still faster. i get 840s user time, and I'm pretty sure it was above 1000 at one point15:19
<arjanb>the number of test doesn't increase that fast15:20
<bonniot>what are your numbers?15:21
<arjanb>about 10% slowdown after the optimizations15:22
<bonniot>you could do a checkout of the testsuite at that point and compare the compiler of that time with the current one, to get something precise15:24
if there is a significant different, comparing the profiling outputs should be informative15:25
<CIA-3>03bonniot * 10Nice/stdlib/nice/lang/prelude.nice: Make 'void' abstract so it's not used in coverage testing.15:36
<bonniot>btw, although this is not the goal, this change for void should give a minor speedup (I see about 1% on the testsuite)15:42
<arjanb>:-)15:43
i think tracking down small slowdowns is not worth the effort atm15:44
<bonniot>that can be a reason for a slowdown: with new types in the stdlib (think of Bryn's ranges) there is a bit more work to do for coverage, not speaking of loading the stdlib itself15:45
arjanb: ok
<CIA-3>03fbarber * 10Nice/web/manual.xml: Fixed title of example in class casting section.15:47
* fcb joins15:50
<arjanb>hi
<bonniot>hello frank15:51
<fcb>hello15:52
how are you both?
<bonniot>well, thanks
you? you've been active recently ;-)
<fcb>yeah, just started my new job at Motorola. Going well, doing lots of training. I've been getting some proper sleep as well so I have more energy to do things (like Nice) :)15:54
<bonniot>sounds all great15:55
<fcb>do you have a minute to talk about what I'm doing?15:56
if not, that's cool15:57
actually, something's just cropped up for me so I might try and come back on here tomorrow. bye everyone :)16:04
* fcb leaves16:05
* bonniot leaves18:16
* bonniot joins
* bonniot leaves18:23
* bonniot joins18:27
<CIA-3>03arjanb * 10Nice/src/bossa/modules/JarCompiledContent.java: Don't use 'enum' as identifier.18:29
<arjanb>Ambiguity for symbol append. Possibilities are :
java.lang.AbstractStringBuilder append(java.lang.AbstractStringBuilder, ?Object)
java.lang.Appendable append(java.lang.Appendable, nice.lang.char)
<bonniot>what's up?18:34
<arjanb>i'm trying java 1.518:35
<bonniot>ok
wasn't that reported before?
<arjanb>that was a slightly different one
<bonniot>which was fixed?18:36
<arjanb>yes
<bonniot>ok
<CIA-3>03bonniot * 10Nice/debian/rules: Disable jikes warnings.18:48
<arjanb>sigh @ java 1.519:53
<bonniot>problems?19:54
<arjanb>yes they do strange things with AbstractStringBuilder19:55
<bonniot>what's the pb?19:57
<arjanb>stringbuffer and stringbuilder methods return abstractstringbuilder but that isn't a public class
<bonniot>i don't see that in the javadocs:19:59
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StringBuilder.html
<arjanb>yes they try to hide the existance of that class20:02
<bonniot>so what's the problem?20:03
<arjanb>31 failed testcase because of:20:04
[nicec] Exception in thread "main" java.lang.IllegalAccessError: tried to access class java.la
ng.AbstractStringBuilder from class bossa.syntax.fun
[nicec] at bossa.syntax.fun.assignmentError(exceptions.nice:31)
<bonniot>i see20:05
<arjanb>simpler case:20:06
let sb = new StringBuffer();
sb.append("abc").append("xyz");
println(sb);
bytecode:20:07
0 new #8 <Class java/lang/StringBuffer>
3 dup
4 invokenonvirtual #9 <Method java/lang/StringBuffer.<init> ()V>
7 astore_1
8 aload_1
9 ldc #11 <String "abc">
11 invokevirtual #15 <Method java/lang/StringBuffer.append (Ljava/lang/String;)Ljava/lang/Abstr
actStringBuilder;>
14 ldc #17 <String "xyz">
16 invokevirtual #20 <Method java/lang/AbstractStringBuilder.append (Ljava/lang/String;)Ljava/l
ang/AbstractStringBuilder;>
<bonniot>yes, the code that decides which version of a method to use should be changed20:10
<CIA-3>03arjanb * 10Nice/stdlib/nice/lang/java.nice: Retyping for StringBuffer.append.20:19
<bonniot>why is this retyping needed?20:21
<arjanb>this resolves one ambiguity20:22
<bonniot>what ambiguity?
<arjanb>see one screen back20:23
<bonniot>ok20:34
<arjanb>i think it will cost quite a lot of work to make Nice work with java 1.520:42
<bonniot>wasn't it done before by Isaac?20:43
other problems apart from this one?
<arjanb>no other serious problems that i know but smooth interaction with the java 1.5 features is another thing20:45

Generated by Sualtam