[2008/06/04 19:02:28] lots of items tonight [2008/06/04 19:02:44] my RubyGems item is more of a note [2008/06/04 19:02:49] yeah, we'll try and keep things moving [2008/06/04 19:03:03] so I put it there, doesn't need discussion IMO [2008/06/04 19:03:14] ok [2008/06/04 19:03:50] hi [2008/06/04 19:03:54] here I am [2008/06/04 19:03:58] hello [2008/06/04 19:03:59] hi matz_ [2008/06/04 19:04:01] shall we begin? [2008/06/04 19:04:04] hello [2008/06/04 19:04:07] I'm ready [2008/06/04 19:04:07] hi [2008/06/04 19:04:22] evan, could you please start? [2008/06/04 19:04:28] sure. [2008/06/04 19:04:37] lets do scheduling for the next one quickly. [2008/06/04 19:04:53] a number of us will be in japan in nearly 2 weeks time. [2008/06/04 19:04:55] maybe we should try to do one live around the kaigi [2008/06/04 19:05:12] nice :) [2008/06/04 19:05:24] well, think about that [2008/06/04 19:05:27] do we know which implementers will be there? [2008/06/04 19:05:32] we'll poll at the end of this [2008/06/04 19:05:40] after people have given it a little thought [2008/06/04 19:05:43] ok [2008/06/04 19:05:44] @ evan set topic "design meeting - Named captures into local variables in 1.9" [2008/06/04 19:05:49] this is my item. [2008/06/04 19:06:00] I'd heard that [2008/06/04 19:06:06] yes [2008/06/04 19:06:12] named captures created locals in 1.9 [2008/06/04 19:06:14] is that true? [2008/06/04 19:06:21] in some condition. [2008/06/04 19:06:24] yes, it's akr's idea [2008/06/04 19:06:41] "abcddd" =~ /(?abc)*/ [2008/06/04 19:06:48] literal-regex =~ expression assigns local variables. [2008/06/04 19:06:50] p blah # => "abc" [2008/06/04 19:06:59] I highly oppose it [2008/06/04 19:07:01] regexp should be left hand side. [2008/06/04 19:07:05] sure [2008/06/04 19:07:12] but wouldn't in require significant parser changes [2008/06/04 19:07:13] why you oppose? [2008/06/04 19:07:14] why do you oppose it [2008/06/04 19:07:15] and fixups [2008/06/04 19:07:27] or would the parser see INTO the regex [2008/06/04 19:07:32] to see that blah should be an lvar [2008/06/04 19:07:35] rather than a vcall [2008/06/04 19:07:52] otherwise, the 'p blah', blah will be a vcall [2008/06/04 19:07:53] I think, in long-term, ruby should parse regexp in parser. [2008/06/04 19:07:54] not an lvar. [2008/06/04 19:08:31] when parser encounters regexp it adds local vars based on named captures in it [2008/06/04 19:08:34] I presume [2008/06/04 19:08:35] what happens if you create a named capture in a RegExp.new object, and then pass that object somewhere else? [2008/06/04 19:08:40] are RegExps now closures? [2008/06/04 19:08:41] yes [2008/06/04 19:08:50] dynamic regexp doesn't assign local variables. [2008/06/04 19:08:51] if it's only one particular form of using a regexp that does thins [2008/06/04 19:08:53] so parser has to run regexp parser [2008/06/04 19:08:54] people will get very confused. [2008/06/04 19:09:10] and regexp match method =~ gets to access caller's local variables [2008/06/04 19:09:15] literal and dynamic regexp is easy to distinguish. [2008/06/04 19:09:16] for instance "/(?abc)*/".match("abcddd") [2008/06/04 19:09:20] hm, what about a regexp created with // syntax and passed somewhere though? [2008/06/04 19:09:23] would not create an lvar of name blah? [2008/06/04 19:09:32] =~ is actually not a method. [2008/06/04 19:09:36] while the original scope was around? [2008/06/04 19:09:43] would it affect the original scope? [2008/06/04 19:09:43] @ Quit: lrz_: Read error: 110 (Connection timed out) [2008/06/04 19:09:45] literal-regexp =~ is not overriden. [2008/06/04 19:10:02] akr_m: yes, but there are a lot of other ways to use a literal regex [2008/06/04 19:10:04] ah, I see, so only =~ with a literal regexp does capture-variables [2008/06/04 19:10:12] as a syntactic thing [2008/06/04 19:10:12] and all those ways will not create locals? [2008/06/04 19:10:15] some one may say it is just a premature optimisation. [2008/06/04 19:10:15] thats very confusing. [2008/06/04 19:10:18] though. [2008/06/04 19:10:34] I'm still not a fan of the idea [2008/06/04 19:10:37] this is syntactic feature. [2008/06/04 19:10:43] @ Quit: nicksieger: brown.freenode.net irc.freenode.net [2008/06/04 19:10:43] @ Quit: ko1_: brown.freenode.net irc.freenode.net [2008/06/04 19:11:00] uh-oh, net split [2008/06/04 19:11:04] @ nicksieger joined channel #ruby-core [2008/06/04 19:11:04] @ ko1_ joined channel #ruby-core [2008/06/04 19:11:07] ack. [2008/06/04 19:11:10] ok, good. [2008/06/04 19:11:14] without this feature, we need to describe the name 3 times. [2008/06/04 19:11:16] ko1_: you didn't miss anything [2008/06/04 19:11:17] ignoring how it's implemented for now, what is the motivation for doing it [2008/06/04 19:11:27] hello again [2008/06/04 19:11:34] what does it gain over $~['name'] [2008/06/04 19:11:44] /(?...)/ =~ str and foo = $~['foo'] [2008/06/04 19:12:09] well [2008/06/04 19:12:12] key in regexp, key of $~, and local variable. [2008/06/04 19:12:15] is this in 1.9? [2008/06/04 19:12:29] seems it's something that requires larger and longer discussion [2008/06/04 19:12:29] it's much longer than /(...)/ =~ str and foo = $1. [2008/06/04 19:13:18] it is already implemented in 1.9.0-0. [2008/06/04 19:13:53] ok. [2008/06/04 19:13:54] you know. [2008/06/04 19:14:03] i can see it now. [2008/06/04 19:14:22] i like it better than $1 actually, mainly because $1 are a major pain to implement correctly in rubinius [2008/06/04 19:14:36] how will this be easier? [2008/06/04 19:14:37] $1 is problematic from users. [2008/06/04 19:14:45] users need to count parens. [2008/06/04 19:14:58] the number may be changed later... [2008/06/04 19:15:14] name may be changed later as well of course [2008/06/04 19:15:16] headius: at compile time, see that the regexp is used with =~, ask the regexp for it's named captures, inject them into the locals table [2008/06/04 19:15:16] named capture is the way to go. [2008/06/04 19:15:25] so we should recommend it. [2008/06/04 19:15:32] it should be shorter than numbered. [2008/06/04 19:15:39] named captures are much nicer than number ones. [2008/06/04 19:15:42] evan: you want to discuss? or want to know 1.9 feature? [2008/06/04 19:15:43] so, assign it to local variable directly. [2008/06/04 19:15:52] for anything beyond a simple regex [2008/06/04 19:15:57] ko1_: i was curious how the feature worked. [2008/06/04 19:15:59] at compile time you will also have to associated named captures with index into local variables [2008/06/04 19:15:59] and worried [2008/06/04 19:16:00] I agree with everything but the automatic assignment to a local variable [2008/06/04 19:16:07] but I get it now [2008/06/04 19:16:14] oh [2008/06/04 19:16:16] thats a good question [2008/06/04 19:16:21] does [2008/06/04 19:16:30] blah = nil; /(?..) =~ str; p blah [2008/06/04 19:16:34] blah is overriden, yes? [2008/06/04 19:16:41] someone proposed /(?<...>)/ = str syntax before. [2008/06/04 19:16:47] s/overridden/shadowed/ ? [2008/06/04 19:16:53] no [2008/06/04 19:17:00] It's acceptable. [2008/06/04 19:17:01] blah is changed by the regexp match [2008/06/04 19:17:07] yes? [2008/06/04 19:17:14] however finaly matz selects =~. [2008/06/04 19:17:21] evan: you can try it [2008/06/04 19:17:24] finally or currently. [2008/06/04 19:17:31] ok. [2008/06/04 19:17:38] i still worry that users will be confused [2008/06/04 19:17:45] I may propose when /(?<...>) in future... [2008/06/04 19:17:49] in case statement. [2008/06/04 19:17:51] why '// =~ str' makes locals but '//.match(str)' does not [2008/06/04 19:17:55] not sure how much we would want to get into impl details, but how does 1.9 associate the named captures with numbered local variables? [2008/06/04 19:18:01] or does it do a lookup after the match? [2008/06/04 19:18:03] looks like python's named capture is (?Pgroup) [2008/06/04 19:18:15] .match is overridable. [2008/06/04 19:18:21] akr_m: right, i know. [2008/06/04 19:18:26] but users will still be confused. [2008/06/04 19:18:38] why captures are only inject in one form of a literal regex [2008/06/04 19:18:44] i promise they'll be confused. [2008/06/04 19:18:56] ah. python uses 'P' to indicate it's a python extension [2008/06/04 19:19:08] should ruby similarly denote a ruby-specific extension? [2008/06/04 19:19:28] it's ONIGURUMA extension [2008/06/04 19:19:29] Ruby's syntax is from .Net. [2008/06/04 19:19:41] ok, thx for clarification [2008/06/04 19:20:26] I'm trying to think about it without thinking about the implementation [2008/06/04 19:20:33] minus impl details I'm indifferent [2008/06/04 19:20:37] sorry [2008/06/04 19:20:58] right [2008/06/04 19:21:05] so even if it's a local in the left side [2008/06/04 19:21:12] impl details bother me a bit :) [2008/06/04 19:21:17] the captures aren't locals [2008/06/04 19:21:24] so only one very narrow form [2008/06/04 19:21:28] that will definitely confuse users [2008/06/04 19:21:34] because it discourages refactoring [2008/06/04 19:21:35] I don't think so. [2008/06/04 19:21:41] they HAVE to keep the regex embedded right there [2008/06/04 19:21:44] even if it's big [2008/06/04 19:21:48] users can distinguish them easily. [2008/06/04 19:21:49] otherwise the locals don't work [2008/06/04 19:22:20] hm. embedded regex may be a problem. [2008/06/04 19:22:31] named captures are very useful in large regexps [2008/06/04 19:22:33] hm, evan's concern about refactoring is a good one [2008/06/04 19:22:43] and large regexps are very frequently refactored to exist in a constant [2008/06/04 19:22:52] I can also guarantee tool makers will have some concerns [2008/06/04 19:22:53] so they don't clutter the code flow [2008/06/04 19:22:53] we definitely want people to use named captures [2008/06/04 19:23:03] since it's going to be nearly impossible to round-trip regular expressions [2008/06/04 19:23:09] but the automatic assignment will make most common regexp refactorings difficult [2008/06/04 19:23:18] round trip + refactor/renaming [2008/06/04 19:23:31] lets move on [2008/06/04 19:23:41] I just ask that you consider our points [2008/06/04 19:23:46] probably should start a thread on it [2008/06/04 19:23:51] when refactoring, need to switch $~. [2008/06/04 19:23:55] it's a longer discussion [2008/06/04 19:23:56] if the discussion comes up on ruby-core, i'll discuss [2008/06/04 19:24:10] akr_m: and change all locals to use $~ [2008/06/04 19:24:15] so they wont use it [2008/06/04 19:24:18] because it will be a pain later. [2008/06/04 19:24:26] lets move on though. [2008/06/04 19:24:26] ok? [2008/06/04 19:24:33] this feature is good for smaller regexp, [2008/06/04 19:24:42] there are many smaller regexps. [2008/06/04 19:25:09] akr_m: lets discuss over email, ok? [2008/06/04 19:25:13] ok [2008/06/04 19:25:18] we have a lot to cover [2008/06/04 19:25:21] @ evan set topic "design - Adding a formal/official annotation syntax, such as Python has" [2008/06/04 19:25:25] headius: this is you. [2008/06/04 19:25:27] you have the floor. [2008/06/04 19:25:35] @ lrz joined channel #ruby-core [2008/06/04 19:25:45] annotations [2008/06/04 19:25:47] ok [2008/06/04 19:25:59] I know this has been discussed...matz, can you tell us your thoughts on this right now? [2008/06/04 19:26:20] it depends on what we want to do on annotation [2008/06/04 19:26:25] this is just annotation syntax for informational purposes...for tools/libs that could use extra metadata attached to methods [2008/06/04 19:26:40] rdoc is essentially an annotation format [2008/06/04 19:26:48] but not part of the language directly [2008/06/04 19:27:02] Java style annotation, or even Python style, can change the basic semantics on the lnanguage [2008/06/04 19:27:09] big issue :) [2008/06/04 19:27:26] headius: maybe you should explain your use caseeee [2008/06/04 19:27:28] that's what I don't want to see [2008/06/04 19:27:46] there are several use cases I can suggest [2008/06/04 19:28:06] an rdoc format that can be accessed at runtime, for example, because it becomes part of the metadata of classes and methods [2008/06/04 19:28:21] like a docstring? [2008/06/04 19:28:24] yeah [2008/06/04 19:28:55] of course expanding from that there's the possibility of providing type hinting or recommendations, but I know there's a desire to keep static types out [2008/06/04 19:29:34] appending machine readable info to chunks of code is OK [2008/06/04 19:29:52] that's my basic general desire [2008/06/04 19:30:01] let me use a type hinting example [2008/06/04 19:30:02] even just a docstring would cover a lot of cases, since tools could just require specific tokens inside it [2008/06/04 19:30:41] I would like to be able to use a type hinting syntax in some JRuby internals [2008/06/04 19:30:48] so more could be implemented with Ruby [2008/06/04 19:31:00] but ideally I'd like those hints to be ignored if not used [2008/06/04 19:31:18] to do that I've been faking it with literal arrays that go nowhere, like [2008/06/04 19:31:27] [String, Integer] [2008/06/04 19:31:30] def foo(a, b) [2008/06/04 19:31:31] ... [2008/06/04 19:31:43] return value type? [2008/06/04 19:31:56] well in my case I'm inferring return value, but that's another case [2008/06/04 19:31:58] argument type? [2008/06/04 19:32:02] @ shugo joined channel #ruby-core [2008/06/04 19:32:09] this is a simple example of argument type hinting [2008/06/04 19:32:20] docstring would be another [2008/06/04 19:32:28] "This is a method for blah blah" [2008/06/04 19:32:31] def foo(a, b) [2008/06/04 19:32:36] the idea is attaching a small bit of structure data to a method, yes? [2008/06/04 19:32:38] but again, another syntax [2008/06/04 19:33:04] like "#@ type: String, Integer"? [2008/06/04 19:33:04] evan yes...something that could safely be ignored at parse or compile time, but can have some arbitrarily useful value to tools that care [2008/06/04 19:33:11] matz_ yes [2008/06/04 19:33:20] matz_: yes, that would be a Hash thats attached to the method [2008/06/04 19:33:31] { :type => "String, Integer" } [2008/06/04 19:33:45] I'd like to hear usages for casual users. (not types) [2008/06/04 19:33:45] %A[ String Integer ] [2008/06/04 19:34:00] akr_m perhaps a remoting library: [2008/06/04 19:34:03] yes, perhaps using a % expansion would help [2008/06/04 19:34:14] %A[ Remote ] [2008/06/04 19:34:16] def foo [2008/06/04 19:34:27] generally, metaprogramming often benefits [2008/06/04 19:34:41] yeah, that's a good way to put it [2008/06/04 19:34:48] hmm, I am not a fan of remote method idea. [2008/06/04 19:34:54] remote? [2008/06/04 19:35:06] I'd rather see, "remote :foo" [2008/06/04 19:35:22] in a string? or as a method call? [2008/06/04 19:35:28] method call [2008/06/04 19:35:31] as a method call [2008/06/04 19:35:32] the problem with method syntax is that it's not thread-safe [2008/06/04 19:35:34] such as private :foo [2008/06/04 19:35:35] analagous to private-as-a-method and so forth [2008/06/04 19:35:46] yes, there is an issue with atomicity [2008/06/04 19:36:03] a true annotation would be atomically attached to the following code [2008/06/04 19:36:10] ideally at parse time [2008/06/04 19:36:16] it would be nice to have something like the method syntax which was atomically grouped with the method definition itself [2008/06/04 19:36:20] plus, I worry that if every application much add class methods to Class [2008/06/04 19:36:25] the solution wont scale [2008/06/04 19:36:29] how atomicity is important? [2008/06/04 19:36:32] this would also make it trivial to write an rdoc tool that doesn't depend on the parser [2008/06/04 19:36:43] ruby has such atomicity in general. [2008/06/04 19:36:46] well, why do people need to add class methods to class? [2008/06/04 19:36:57] most of definition is done in boot time, so it's not issue > atomicity [2008/06/04 19:36:59] akr_m: the non-parallized ruby implementations may, but not all [2008/06/04 19:37:01] oops. no such. [2008/06/04 19:37:03] MenTaLguY: to implement "remote :foo" in every class, yes. [2008/06/04 19:37:23] the thing is that remote :foo usually has to make some assumptions about the structure of the object [2008/06/04 19:37:27] Class is too general [2008/06/04 19:37:39] will remote :foo work for Fixnum? probably not... [2008/06/04 19:37:54] lets get back on topic [2008/06/04 19:37:56] granted you're not the person I need to argue with, if people are doing that so much in the wild :) [2008/06/04 19:38:11] ok, topic [2008/06/04 19:38:11] it was about matz_ adding syntax for attaching structure data to a method [2008/06/04 19:38:23] matz_: are you considering it? [2008/06/04 19:38:29] or should headius try and sell you via email? [2008/06/04 19:38:31] largely I'd like to understand if there's a strong resistance or support for this idea [2008/06/04 19:38:40] I know it has come up before [2008/06/04 19:38:59] annotations can be abused [2008/06/04 19:39:06] See python annotation, [2008/06/04 19:39:11] It's fun trick [2008/06/04 19:39:24] like open class. [2008/06/04 19:39:25] but it is same kind of fun as lisp macros [2008/06/04 19:39:33] like eval [2008/06/04 19:39:46] no, worse [2008/06/04 19:39:51] I don't think the annotation syntax has to do anything more than attach minimally-structured data [2008/06/04 19:39:56] those two does not change the language semantics [2008/06/04 19:39:57] no runtime executable logic [2008/06/04 19:40:31] rdoc is again a good example [2008/06/04 19:40:42] RDoc should stay being comments [2008/06/04 19:41:00] I don't want to grow process size [2008/06/04 19:41:01] with annotation syntax and api (like method(:foo).annotations) rdoc generation for ruby code could be done without parser [2008/06/04 19:41:32] anyway, I am not against having simple annotation [2008/06/04 19:41:36] with the regular parser, you mean? [2008/06/04 19:41:53] MenTaLguY: I mean without exposing any parser to the rdoc code [2008/06/04 19:42:07] some methods are defined only for some OS... [2008/06/04 19:42:15] someone will do "eval" with annotation data. [2008/06/04 19:42:17] matz_ how could we proceed? email to ruby-core with ideas and use cases? [2008/06/04 19:42:19] maybe, that does require that rdoc actually load the code in question [2008/06/04 19:42:29] headius: yes, please [2008/06/04 19:42:30] which means it must evaluate some of the code [2008/06/04 19:42:38] how we can get rdoc for non-existing methods? [2008/06/04 19:42:45] I do think the current situation where rdoc never evaluates any code is preferable [2008/06/04 19:42:48] akr_m: we don't. [2008/06/04 19:42:49] yes, that's true [2008/06/04 19:42:52] as far as I know. [2008/06/04 19:43:04] here's one more use case and we can move on [2008/06/04 19:43:05] lets move on. [2008/06/04 19:43:14] %A[ synchronized ] [2008/06/04 19:43:15] akr_m: typically today I create stub classes in a separate directory which are read by rdoc, but are never on the library path [2008/06/04 19:43:15] :) [2008/06/04 19:43:19] @ evan set topic "design - IO buffer behavior is specification or implementation detail" [2008/06/04 19:43:25] this is mine. [2008/06/04 19:43:40] I think it's an implementation issue [2008/06/04 19:43:43] rubyspecs has a number of IO specs that spec the exact nature [2008/06/04 19:43:45] headius: hm, that's actually a fairly significant semantic implication [2008/06/04 19:43:50] of IO and how they buffer [2008/06/04 19:44:00] i think it's an impl. artifact of MRI using FILE [2008/06/04 19:44:05] MenTaLguY we can talk more about it later, I agree though [2008/06/04 19:44:08] but I need confirmation [2008/06/04 19:44:13] what kind of difference you see? [2008/06/04 19:44:24] Ruby 1.8 use stdio but Ruby 1.9 doesn't. [2008/06/04 19:44:24] matz_: no different, just very specific behaviors [2008/06/04 19:44:29] oh [2008/06/04 19:44:34] i haven't checked against 1.9 [2008/06/04 19:44:38] matz_: flushing semantics for example [2008/06/04 19:44:43] Ruby 1.9 has it's own buffering mechanism. [2008/06/04 19:44:44] i'll collect the rubyspecs in question and email ruby-core about them [2008/06/04 19:44:53] so that you guys can comment on them, ok? [2008/06/04 19:44:58] i don't have the list in front of me now. [2008/06/04 19:45:08] also errors/warnings for unbuffered after buffered [2008/06/04 19:45:14] yes [2008/06/04 19:45:44] I implemented 1.8 semantics in JRuby and had to read glibc code to do so [2008/06/04 19:45:53] @ akr_m is now known as akr_ [2008/06/04 19:46:13] matz_: would you and the rest of the core team like to review the specs i mean [2008/06/04 19:46:18] matz_: and you can comment on them [2008/06/04 19:46:19] Ruby 1.8 depends on stdio so it depends on libc. [2008/06/04 19:46:30] evan, yes [2008/06/04 19:46:34] ok [2008/06/04 19:46:35] i'll do that. [2008/06/04 19:46:51] akr_ does 1.9 mimic 1.8 behavior for buffers or is it very different? [2008/06/04 19:47:25] may we move on? [2008/06/04 19:47:28] unbuffered read after buffered write causing an error, for example [2008/06/04 19:47:39] I tried to fix several problems in 1.8. So somewhat different. [2008/06/04 19:47:47] ok [2008/06/04 19:47:59] we'll discuss on mailing list, maybe come up with a list of what can be specified behavior and what should not [2008/06/04 19:48:03] @ evan set topic "design - Standardize the contents of RUBY_PLATFORM" [2008/06/04 19:48:14] headius: i'll get the list out tomorrow probably [2008/06/04 19:48:23] it can't be entirely unspecified, since read/write are supposed to be buffered [2008/06/04 19:48:24] ok [2008/06/04 19:48:37] headius: not, but the ones about rewinding into the buffer, and such. [2008/06/04 19:48:44] brixen: this is your item [2008/06/04 19:48:57] yes [2008/06/04 19:49:05] next 2 items closely related [2008/06/04 19:49:09] evan: yeah, don't remind me...I'm back in that code this evening [2008/06/04 19:49:17] idea is to make ruby code easier to run on any implementation [2008/06/04 19:49:37] matz_: do you think it's a good idea to specify what info RUBY_PLATFORM should contain? [2008/06/04 19:49:49] for example, on jruby, it is always "java" [2008/06/04 19:50:05] for Rubinius? [2008/06/04 19:50:17] we try to follow MatzRuby :) [2008/06/04 19:50:24] config.guess ? [2008/06/04 19:50:25] but there is not standard [2008/06/04 19:50:34] akr_: yeah, we use config.guess [2008/06/04 19:50:38] should that be standard? [2008/06/04 19:50:47] note that RubyGems uses RbConfig::CONFIG['arch'] to determine platform [2008/06/04 19:50:48] what about for jruby, with not config.guess in build? [2008/06/04 19:51:03] + i686-pc-linux-gnu + some tweak ? [2008/06/04 19:51:06] I am not sure what we want to specify by RUBY_PLATFORM (or RUBY_ENGIN) [2008/06/04 19:51:10] oops. config.sub [2008/06/04 19:51:25] matz_: people use RUBY_PLATFORM to detect windows [2008/06/04 19:51:32] thats the most common use. [2008/06/04 19:51:38] we can't depend on config [2008/06/04 19:51:41] 2nd is detecting darwin [2008/06/04 19:52:25] if RUBY_ENGINE had existed two years ago we probably would have used that for "jruby" and tried to match RUBY_PLATFORM [2008/06/04 19:52:32] Oh, forgot this was tonight... IronRuby has it hardcoded atm. [2008/06/04 19:52:33] but now there are gems released for -java [2008/06/04 19:52:51] the idea is to make whatever is in RUBY_PLATFORM the same for every implementation on a particular OS + arch [2008/06/04 19:53:05] TheProkrammer: same for me, i thought i was tomorrow :) [2008/06/04 19:53:07] also gems for JRuby are very different than gems for RUBY_PLATFORM because the same code runs everywhere [2008/06/04 19:53:11] + platform [2008/06/04 19:53:26] brixen that would break all existing jruby-specific gems you know [2008/06/04 19:53:35] So like... Windows + 32bit + CLR2.0 or Windows + 64bit + JVM 1.6? [2008/06/04 19:53:42] headius: yes, but we need to address this sooner than later [2008/06/04 19:53:52] I think it is fair to call CLR or JVM an architecture [2008/06/04 19:53:58] and a platform [2008/06/04 19:54:08] RubyGems allows an implementation to have multiple platforms now, Rubinius claims to be both the OS platform and a Rubinius platform [2008/06/04 19:54:13] matz_: I'm suggesting that RUBY_PLATFORM, RUBY_VERSION, and RUBY_PATCHLEVEL be the same for *Ruby* language, not different for any implementation [2008/06/04 19:54:17] "java" is a platform [2008/06/04 19:54:28] true. [2008/06/04 19:54:29] does java hide windows/unix difference completely? [2008/06/04 19:54:34] headius: that would hold if you had the same behavior on every OS [2008/06/04 19:54:34] if they are architecture, you can put them in RUBY_PLATFORM [2008/06/04 19:54:38] akr_ almost completely [2008/06/04 19:54:45] brixen we do [2008/06/04 19:54:57] headius: not according to VVis [2008/06/04 19:54:58] except where we've had to forcibly break that behavior to match matzruby on windows [2008/06/04 19:55:10] Mono vs .NET doesn't.. but they are both CLR. [2008/06/04 19:55:13] headius: so you would be identical on every platform? [2008/06/04 19:55:15] brixen the differences are minor, and we don't require a recompile [2008/06/04 19:55:27] headius: identical for the user code? [2008/06/04 19:55:31] yes [2008/06/04 19:55:44] except windows, which behaves differently because matzruby does [2008/06/04 19:56:00] so [2008/06/04 19:56:01] well, that's the use case for RUBY_PLATFORM, i.e. needing to know how to behave on an OS + arch [2008/06/04 19:56:01] mostly people only need to know actual platform for JRuby if they want to call outside the VM [2008/06/04 19:56:09] there is a question as to what the standard would be [2008/06/04 19:56:16] not just whether we can accept a standard [2008/06/04 19:56:17] headius: yeah, that's a problem [2008/06/04 19:56:17] yes? [2008/06/04 19:56:22] Well.. the windows story in general is something that needs to be fleshed out I think. [2008/06/04 19:56:25] evan: both [2008/06/04 19:56:25] lets discuss what that standard should be out over email [2008/06/04 19:56:34] because we need lots of people to weigh in [2008/06/04 19:56:41] evan: question is can these be standard? [2008/06/04 19:56:49] getting back to what matz_ said, whats the use case? [2008/06/04 19:56:51] platform detection? [2008/06/04 19:56:54] yes [2008/06/04 19:56:59] there can be simple standards [2008/06/04 19:57:01] so ruby code knows what to do [2008/06/04 19:57:01] like rubygems uses [2008/06/04 19:57:10] - [2008/06/04 19:57:12] I'd say platform is what lives immediately below the ruby implementation [2008/06/04 19:57:14] like [2008/06/04 19:57:18] in our case, that's java [2008/06/04 19:57:19] i686-darwin [2008/06/04 19:57:21] or [2008/06/04 19:57:22] java-java [2008/06/04 19:57:30] jvm-java [2008/06/04 19:57:32] sure [2008/06/04 19:57:33] exactly [2008/06/04 19:57:36] sun-java [2008/06/04 19:57:37] perhaps [2008/06/04 19:57:51] ibm-java [2008/06/04 19:57:56] right [2008/06/04 19:58:01] headius: except for where ruby code needs to know what the OS provides [2008/06/04 19:58:02] something simple like that can be standard [2008/06/04 19:58:06] yes? [2008/06/04 19:58:06] jruby -rrbconfig -e "p Config::CONFIG['arch']" [2008/06/04 19:58:07] "universal-java1.5" [2008/06/04 19:58:11] clr-win32 or win32-clr ? eh.. [2008/06/04 19:58:21] but isn't java supposed to be universal? :) [2008/06/04 19:58:33] should Config::CONFIG['arch'] == RUBY_PLATFORM [2008/06/04 19:58:38] it should always, yes? [2008/06/04 19:58:41] lrz we report whatever we're running on...it's just for the user [2008/06/04 19:58:46] we don't need to rebuild [2008/06/04 19:58:49] I think usecase should be listed: rubygem, filename handling, .... [2008/06/04 19:58:58] ok [2008/06/04 19:59:03] drbrain: any insight rubygems wise? [2008/06/04 19:59:12] one jruby build is universal on all java impls [2008/06/04 19:59:54] in RubyGems platforms, universal means a package works everywhere [2008/06/04 19:59:55] so, universal-java1.5 has no problem [2008/06/04 20:00:02] if we had to match RUBY_PLATFORM rubygems would have to look at something else to know how to handle java-based gems [2008/06/04 20:00:12] headius: how does that indicate what the OS provides though [2008/06/04 20:00:15] because we'd report whatever OS someone was running on [2008/06/04 20:00:25] headius: ruby code doesn't need to know the jvm, it needs to know OS stuff [2008/06/04 20:00:40] brixen for rubygems, it needs to know it to build, which java-based gems don't do [2008/06/04 20:00:59] headius: that could go in rubygems/defaults/jruby.rb [2008/06/04 20:01:25] how would java-based gems be named? [2008/06/04 20:01:45] we'd either have to have the "ruby" gem also include the java bits or we'd need another indicator [2008/06/04 20:01:54] back on course [2008/06/04 20:02:06] RUBY_PLATFORM should be for general code [2008/06/04 20:02:08] not just gems [2008/06/04 20:02:17] lets take this into email, yes? [2008/06/04 20:02:28] yeah [2008/06/04 20:02:43] @ evan set topic "design - Can all implementations agree to follow MatzRuby on RUBY_VERSION and RUBY_PATCHLEVEL" [2008/06/04 20:02:47] brixen: you again [2008/06/04 20:02:52] yep [2008/06/04 20:03:00] so, with rubyspec, we now have version guards [2008/06/04 20:03:10] the answer is simple: yes [2008/06/04 20:03:11] to make this work, every impl has to agree to follow the same numbers [2008/06/04 20:03:13] jruby agrees [2008/06/04 20:03:24] but some may feel spec changed for bug fixes [2008/06/04 20:03:32] it's not a big deal, we just overloaded patchlevel with our revision number because it didn't mean anything at th etime [2008/06/04 20:03:47] but we can make RUBY_VERSION and RUBY_PATCHLEVEL match, and add our own [2008/06/04 20:03:57] it is difficult to determine an old behavior is bug or spec. [2008/06/04 20:04:20] well, specs only exist for 1.8.6 forward [2008/06/04 20:04:45] I don't think there's a way to separate out simple bugs from behavior changes, so I feel like patchlevel should part of spec [2008/06/04 20:04:46] ok, we can move on, unless anyone objects [2008/06/04 20:04:49] ok [2008/06/04 20:05:01] @ evan set topic "design - No behavior changes (only bug fixes) in RUBY_PATCHLEVEL" [2008/06/04 20:05:11] this is about 1.8.7, right? [2008/06/04 20:05:16] it wasn't [2008/06/04 20:05:24] but with 1.8.7, it is now impossible [2008/06/04 20:05:31] there is no other number to track things [2008/06/04 20:05:37] date [2008/06/04 20:05:40] because 1.8.6 is different from 1.8.7 [2008/06/04 20:05:48] brixen: when did you add this item? [2008/06/04 20:05:52] so, significant changes will be in patchlevels [2008/06/04 20:05:54] 2 weeks ago? [2008/06/04 20:05:59] evan: yeah :P [2008/06/04 20:06:02] ok [2008/06/04 20:06:29] rubyspecs has patchlevel (optional) in version string "1.8.6.111", so I guess it's not an issue anymore [2008/06/04 20:06:33] I have no preference here, but I will say I am worried about patchlevel being overloaded just to keep the other version numbers single-digits [2008/06/04 20:06:41] if we could go to 1.8.10 it would not have to be this way [2008/06/04 20:06:49] imo, 1.8.7 was a bad number to assign [2008/06/04 20:07:07] I think patchlevels get too many changes as it is [2008/06/04 20:07:26] I don't understand. [2008/06/04 20:07:40] RUBY_PATCHLEVEL on 1.8.6 is independent from RUBY_PATCHLEVEL on 1.8.7. [2008/06/04 20:07:45] if there wasn't a limitation that ruby version number components all be single digits, we could keep behavior-changing alterations in the 0.0.x number [2008/06/04 20:07:48] akr_: if people write code for 1.8.7, it wont work on 1.8.6 [2008/06/04 20:07:56] akr_: because there are new APIs in 1.8.7 [2008/06/04 20:08:05] akr_: RUBY_VERSION only has 1.8.6 but major difference could be there [2008/06/04 20:08:12] akr_: so, you have to check RUBY_PATCHLEVEL too [2008/06/04 20:08:16] 1.8.7 is teeny level change. not patchlevel. [2008/06/04 20:08:48] akr_: yes, but teeny level change that includes big changes [2008/06/04 20:09:10] i think that a lot of us are unclear about what can change in a teeny version [2008/06/04 20:09:10] akr_: in 1.8.6 for example, the exception raised by methods changed in patchlevel [2008/06/04 20:09:20] we thought it was just for bugs mostly [2008/06/04 20:09:23] but it contains syntax changes [2008/06/04 20:09:29] and a lot of backported code from 1.9 [2008/06/04 20:09:34] akr_: so, code that checked RUBY_VERSION would have to check RUBY_PATCHLEVEL to know the difference [2008/06/04 20:09:52] why not just check RUBY_VERSION? [2008/06/04 20:10:13] akr_: because there were changes made in patchlevel version [2008/06/04 20:10:21] I just don't get it [2008/06/04 20:10:22] akr_: you can't know everything from RUBY_VERSION [2008/06/04 20:10:37] i don't understand either [2008/06/04 20:10:38] backporting happened in 1.8.7, not 1.8.6 [2008/06/04 20:10:47] so patchlevel is not related [2008/06/04 20:11:01] matz_: there were numerous changes to the exceptions raised by certain methods in 1.8.6 [2008/06/04 20:11:05] during 1.8.6, some changes happened in patchlevels [2008/06/04 20:11:06] matz_: in patchlevel changes [2008/06/04 20:11:22] but it was bug fixes and some mistakes [2008/06/04 20:11:26] I don't get it either...other than there being perhaps too drastic changes in 1.8.7 (matter of opinion) 1.8.7 is > 1.8.6 with any patchlevel [2008/06/04 20:11:57] 1.8.7 patchlevel 0 is > all 1.8.6 versions [2008/06/04 20:12:12] yes [2008/06/04 20:12:15] and you can check for 1.8.7 using RUBY_VERSION [2008/06/04 20:12:32] I'm not sure what this topic is actually about now [2008/06/04 20:12:36] rubyspecs will need to include patchlevel in the version string for some behaviors [2008/06/04 20:12:37] me either. [2008/06/04 20:12:40] that's it [2008/06/04 20:12:43] we're finished :) [2008/06/04 20:12:45] ok. [2008/06/04 20:12:48] lets move on [2008/06/04 20:12:52] brixen and that's something you don't like, yes? [2008/06/04 20:13:02] headius: that's a fact of life now [2008/06/04 20:13:16] @ evan set topic "design - Maintainance benchmark suits" [2008/06/04 20:13:17] spec should check patchlevel? [2008/06/04 20:13:19] headius: I don't like it because user code can't just check RUBY_VERSION [2008/06/04 20:13:23] I think the bottom line is that unless x.x.x version can support > 9 components, patchlevel is going to continue being a part of the version number for specs [2008/06/04 20:13:51] brixen agreed...but there have been larger discussions about the problems with a quickly-incrementing 0.0.x, since MRI can't support > 9 [2008/06/04 20:14:15] certainly not ideal..but I think fixing that is harder than just using patchlevel right now [2008/06/04 20:14:30] i can't understand this problem without actual examples. [2008/06/04 20:14:47] patchlevels are not related single digit version at all [2008/06/04 20:14:58] akr_ I will privmsg [2008/06/04 20:15:19] evan: this is ko1_'s item [2008/06/04 20:15:23] yes [2008/06/04 20:15:29] ko1_: this is your item about benchmarks [2008/06/04 20:15:33] yes [2008/06/04 20:15:49] we should maintain common benchmark suits/driver [2008/06/04 20:15:58] right? [2008/06/04 20:16:31] I think it would be good to have a standard set, yes [2008/06/04 20:16:32] and brixen told me: 07:49:06 brixen > ko1_: you've seen? http://groups.google.com/group/ruby-benchmark-suite [2008/06/04 20:16:52] 7:49 JST :) [2008/06/04 20:17:07] http://github.com/acangiano/ruby-benchmark-suite/tree/master [2008/06/04 20:17:16] ko1_: do you want to work with acangiano on them? [2008/06/04 20:17:21] ko1_: we talked about them at railsconf [2008/06/04 20:17:29] ko1_: about building up a set a benchmarks that aren't micro [2008/06/04 20:17:29] his license is MIT. [2008/06/04 20:17:34] ko1_: is that a problem? [2008/06/04 20:17:35] i think Ruby's is more suitable [2008/06/04 20:17:44] ko1_: email him [2008/06/04 20:17:47] i'm sure he'll change it [2008/06/04 20:17:52] but it doesn't matter as long as it's MIT [2008/06/04 20:17:59] ok [2008/06/04 20:18:08] the idea is to have bigger benchmarks [2008/06/04 20:18:10] like richards [2008/06/04 20:18:19] that stress polymorphic performance [2008/06/04 20:18:24] the kinds of things you see in applications [2008/06/04 20:18:26] richards? [2008/06/04 20:18:52] richards is an old smalltalk benchmark [2008/06/04 20:18:56] search for it [2008/06/04 20:19:06] http://fisheye.codehaus.org/changelog/jruby/?cs=6864 [2008/06/04 20:19:06] ok. i'll do [2008/06/04 20:19:13] ko1_: ^^^ [2008/06/04 20:19:22] i added a version to jruby recently [2008/06/04 20:20:07] ko1 should join benchmarks project, that's probably where this will all start happening [2008/06/04 20:20:26] I wrote most of the jruby benchmarks and I'm fine relicensing any that are suitable [2008/06/04 20:20:31] if we determine to make common benchmark (it is acangiano's?), we should drop our own benchmarks [2008/06/04 20:21:03] s/drop/move/ [2008/06/04 20:21:05] ko1_ it would be nice to have a set of benchmarks other than YARVs used to measure relative performance :) [2008/06/04 20:21:12] I'm sure you are frustrated by that too [2008/06/04 20:22:01] I think we would contribute benchmarks to the benchmark project, rather than dropping them [2008/06/04 20:22:02] is acangiano's project suitable place to maintain common benchmarks? [2008/06/04 20:22:13] ko1_: I think yes [2008/06/04 20:22:25] I don't have a problem with it [2008/06/04 20:22:31] it would not mean you have to delete yours [2008/06/04 20:22:45] just that we should try to contribute there as much as possible [2008/06/04 20:23:03] yeah, a standard set is good, but each impl might have particular ones [2008/06/04 20:23:48] shall we move on? [2008/06/04 20:23:50] the common project probably won't want our java invocation benchmarks [2008/06/04 20:24:07] ok...ko1, will you join benchmarks project? we can talk at kaigi too [2008/06/04 20:24:21] ok. i'll join and discuss on it [2008/06/04 20:24:39] @ evan set topic "design - Subject prefix of ruby-core ML" [2008/06/04 20:24:41] i think we should clarify benchmarks [2008/06/04 20:24:42] ko1_: this is yours [2008/06/04 20:24:55] oops, sorry. i thought we were done. [2008/06/04 20:25:07] ya. anyone have objection? [2008/06/04 20:25:14] I like prefixes myself [2008/06/04 20:25:20] many people hate them [2008/06/04 20:25:41] I'm not clear on what this is [2008/06/04 20:25:48] even when I filter to folders I like to see at a glance which emails I'm looking at [2008/06/04 20:25:57] is :xxxx a bug number? [2008/06/04 20:25:58] last time i heard on this channel, there is no objection. [2008/06/04 20:25:59] I like prefixes [2008/06/04 20:26:03] brixen: no, message number. [2008/06/04 20:26:07] i don't mind either way [2008/06/04 20:26:20] so, i think most of developer like it. [2008/06/04 20:26:38] no, eval('yield') {} was the bug [2008/06/04 20:26:40] oops. [2008/06/04 20:27:23] ko1_: shall we move on? [2008/06/04 20:27:30] i want to know anyone has objection about it on developers [2008/06/04 20:27:41] i post again with this result. [2008/06/04 20:27:50] ko1_ I bet that all of them won't, but I'd like to have a prefix [2008/06/04 20:27:52] ah, as a list manager, it used to have subject prefix [2008/06/04 20:27:52] ko1_ will it be [ruby-core]? [2008/06/04 20:28:05] headius: yes [2008/06/04 20:28:22] but many complained that prefix cut threads on their readers [2008/06/04 20:28:37] the situation had changed since then? [2008/06/04 20:28:55] on ruby-talk, i agree to cut it, but we *need* it on ruby-core to write changelog [2008/06/04 20:29:08] http://rafb.net/p/lTsYlk25.html [2008/06/04 20:29:25] hehe [2008/06/04 20:29:35] those are the current mailers being used on the last 1000 or so messages on ruby-core [2008/06/04 20:29:47] most of those track threads correctly [2008/06/04 20:29:56] thunderbird is popular [2008/06/04 20:30:16] so is emacs [2008/06/04 20:30:18] I use t-bird because Mail.app doesn't thread right [2008/06/04 20:30:19] OK, I will change the subject format for ruby-core, and see what they feel [2008/06/04 20:30:27] matz_ excellent [2008/06/04 20:30:39] thanks! [2008/06/04 20:30:42] ok, moving on. [2008/06/04 20:30:43] headius: file a bug :) [2008/06/04 20:30:46] @ evan set topic "design - Protocol to deal with security issues" [2008/06/04 20:31:13] i got a message from shugo, the security ML manager [2008/06/04 20:31:21] lrz: I think it's been filed a couple thousand times already, so I don't think it's going to change [2008/06/04 20:31:32] anyway, off topic [2008/06/04 20:31:33] shugo said "please mail me" :) [2008/06/04 20:31:50] to join ML. but this ML includes Japanese post. [2008/06/04 20:31:56] ko1, matz_ sounds like everyone here likes the prefix, so you can proceed how you want to [2008/06/04 20:32:11] done [2008/06/04 20:32:31] whose topic is this? [2008/06/04 20:32:35] FYI, we're pushing 90 minutes now [2008/06/04 20:32:55] headius: this topic is listed as jruby item [2008/06/04 20:33:05] please patient of Japanese post [2008/06/04 20:33:07] hmm, I don't think it was me [2008/06/04 20:33:09] oh, VVSiz added it [2008/06/04 20:33:15] but he's not here :) [2008/06/04 20:33:27] OH [2008/06/04 20:33:28] so, we can all join the security ML? [2008/06/04 20:33:29] I remember it [2008/06/04 20:33:30] I can take it [2008/06/04 20:33:44] "all" == implementers? [2008/06/04 20:33:44] so yes, security updates need to go out in english too I think [2008/06/04 20:33:52] maybe shugo-san or matz decide it [2008/06/04 20:33:52] we missed the webrick fix [2008/06/04 20:33:59] security issues [2008/06/04 20:34:03] FYI. i'm not a member of that ML [2008/06/04 20:34:07] security update list would be fine if we can read it [2008/06/04 20:34:17] how about some of you submit security@ruby-lang.org? [2008/06/04 20:34:26] if there is a standard lib fix, we just need to be notified [2008/06/04 20:34:39] there is a bigger issues on this, i'd like to bring up [2008/06/04 20:34:42] security@ruby-lang.org would be just fine with me [2008/06/04 20:34:53] that is, putting things like webrick into gems [2008/06/04 20:34:59] I'm on three million lists as it is, one more isn't going to hurt [2008/06/04 20:35:02] so that security fixes can be used by all [2008/06/04 20:35:06] without having to upgrade [2008/06/04 20:35:10] ah, problem is that we talk in Japanese there, headius [2008/06/04 20:35:24] anyway, we will set up some place to notify you gyus [2008/06/04 20:35:24] matz_ that could be a problem :) [2008/06/04 20:35:45] evan I agree about the gems thing, but that's a pretty big subject [2008/06/04 20:35:50] security-en@? [2008/06/04 20:35:57] if you speak in ruby, we can probably get half way there :) [2008/06/04 20:36:11] rather we move to security-ja I guess, ko1_ [2008/06/04 20:36:11] security-ja@ may be better [2008/06/04 20:36:13] headius: yes, perhaps we should bring it up later [2008/06/04 20:36:34] it's been brought up before [2008/06/04 20:36:34] evan: agenda for next time...it wouldn't be happening overnight anyway [2008/06/04 20:36:40] and I don't think there has been any change [2008/06/04 20:36:44] yeah [2008/06/04 20:36:53] just trying to solve the root of the problem. [2008/06/04 20:37:11] next meeting? [2008/06/04 20:37:21] yes [2008/06/04 20:37:23] at RubyKaigi? [2008/06/04 20:37:27] 8u9hl'i [2008/06/04 20:37:27] ack [2008/06/04 20:37:32] that was my cat saying hi [2008/06/04 20:37:41] it would be *sooooo* nice if we could just preinstall gems during the build [2008/06/04 20:37:42] matz_: i'd love that [2008/06/04 20:37:51] for most of stdlib [2008/06/04 20:38:15] @ Quit: shugo: Nick collision from services. [2008/06/04 20:38:20] 20th-22th JST is RubyKaigi [2008/06/04 20:38:30] I don't have Kaigi's program at hand [2008/06/04 20:38:32] I think we're about out of time [2008/06/04 20:38:41] shall the next meeting be at kaigi then? [2008/06/04 20:38:46] roll call for who will be at kaigi [2008/06/04 20:38:51] me [2008/06/04 20:38:51] headius: I think some changes to RubyGems will be required [2008/06/04 20:38:51] ko1_: do you think we could have any time to have IRC meeting during kaigi? [2008/06/04 20:38:52] off-line or on-line/off-line mixing? [2008/06/04 20:38:53] tom enebo and I will be there [2008/06/04 20:39:04] ko1_: mix if we can [2008/06/04 20:39:06] matz: we can do it [2008/06/04 20:39:15] on which day? [2008/06/04 20:39:18] drbrain I like the idea proposed about a site install process [2008/06/04 20:39:42] drbrain: i'm working on the 'preinstall spec' problem right now. [2008/06/04 20:40:18] ko1_: 6/20? 21? [2008/06/04 20:40:21] if there is a separate "stdlib gems" repo it is easy [2008/06/04 20:40:32] but matz is very popular so people don't free him [2008/06/04 20:40:52] 20 is more suitable. [2008/06/04 20:40:56] drbrain: a ports/apt-like repository list would probably be a first step, no? [2008/06/04 20:41:05] @ twbray joined channel #ruby-core [2008/06/04 20:41:07] headius: we have that already [2008/06/04 20:41:10] if the files live in $:, a gem cannot be activated because newer versions will be shadowed [2008/06/04 20:41:12] headius: you can have multiple sources [2008/06/04 20:41:15] ... pre-activated [2008/06/04 20:41:45] 20th morning is before opning. can you come this time? [2008/06/04 20:41:58] OK, next meeing will be June 20 11:00 JST [2008/06/04 20:42:12] anyone objection? [2008/06/04 20:42:23] none from me! [2008/06/04 20:42:33] it will be nice to use my voice in this meeting! [2008/06/04 20:42:35] pls check flight time [2008/06/04 20:42:38] from Conference plave [2008/06/04 20:42:50] I get in on the 19th [2008/06/04 20:42:58] tom and I get in on the 19th also [2008/06/04 20:43:07] good [2008/06/04 20:43:16] ok, thats all. [2008/06/04 20:43:19] thanks everyone! [2008/06/04 20:43:25] thank you guys [2008/06/04 20:43:34] thanks everyone [2008/06/04 20:43:37] thanks