[#33511] [Ruby 1.9-Bug#4108][Open] irb hangs on Windows with trunk — Heesob Park <redmine@...>
Bug #4108: irb hangs on Windows with trunk
[#33521] [Ruby 1.9-Feature#4111][Open] Add XLIST support to Net::IMAP — Geoff Youngs <redmine@...>
Feature #4111: Add XLIST support to Net::IMAP
[#33530] [Ruby 1.9-Bug#4113][Open] Cannot build trunk with MSVC. — Heesob Park <redmine@...>
Bug #4113: Cannot build trunk with MSVC.
[#33583] Initialization time — SASADA Koichi <ko1@...>
Hi,
[#33605] Why is SyncEnumerator in REXML? — Asher <asher@...>
in 1.8 SyncEnumerator is in lib/generator.rb; in 1.9 it is in lib/rexml/syncenumerator.rb
On Dec 6, 2010, at 11:09 PM, Asher wrote:
If that is the case, it would make sense historically, but doesn't seem to make much sense now, as SyncEnumerator doesn't seem to have any relation to REXML, even if REXML utilizes it.
[#33628] [Ruby 1.8-Bug#4132][Open] Socket.close attempting to close the socket twice — Claudio Villalobos <redmine@...>
Bug #4132: Socket.close attempting to close the socket twice
[#33640] [Ruby 1.9-Bug#4136][Open] Enumerable#reject should not inherit the receiver's instance variables — Hiro Asari <redmine@...>
Bug #4136: Enumerable#reject should not inherit the receiver's instance variables
Issue #4136 has been updated by Marc-Andre Lafortune.
Hi,
[#33648] Why doesn’t StringIO implement #freeze? — Nikolai Weibull <now@...>
IO implements #freeze, but StringIO doesn’t. What’s up with that?
Hi,
On Fri, Dec 31, 2010 at 03:09, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:
[#33656] [Ruby 1.9-Bug#4141][Open] Tk extension is not accepting any type of parameter combination — Luis Lavena <redmine@...>
Bug #4141: Tk extension is not accepting any type of parameter combination
Hi,
On Sun, Dec 26, 2010 at 10:05 PM, Hidetoshi NAGAI
[#33661] [Ruby 1.9-Feature#4145][Open] The result of UTF-16 encoded string concatenation — Heesob Park <redmine@...>
Feature #4145: The result of UTF-16 encoded string concatenation
Issue #4145 has been updated by Yui NARUSE.
[#33667] [Ruby 1.9-Bug#4149][Open] Documentation submission: syslog standard library — mathew murphy <redmine@...>
Bug #4149: Documentation submission: syslog standard library
Issue #4149 has been updated by mathew murphy.
[#33683] [feature:trunk] Enumerable#categorize — Tanaka Akira <akr@...>
Hi.
2010/12/12 "Martin J. Dst" <duerst@it.aoyama.ac.jp>:
Hello Akira,
2010/12/20 "Martin J. Dst" <duerst@it.aoyama.ac.jp>:
Hi!
2010/12/27 Marc-Andre Lafortune <ruby-core-mailing-list@marc-andre.ca>:
Hi!
[#33687] Towards a standardized AST for Ruby code — Magnus Holm <judofyr@...>
Hey folks,
On Sun, Dec 12, 2010 at 9:55 AM, Magnus Holm <judofyr@gmail.com> wrote:
On Dec 12, 2010, at 17:46 , Charles Oliver Nutter wrote:
On Sun, Dec 12, 2010 at 7:09 PM, Ryan Davis <ryand-ruby@zenspider.com>wrote:
(2010/12/13 1:54), Haase, Konstantin wrote:
(2010/12/13 9:06), Ryan Davis wrote:
On Sun, Dec 12, 2010 at 6:33 PM, Ryan Davis <ryand-ruby@zenspider.com> wrote:
On Dec 14, 2010, at 09:47 , Charles Oliver Nutter wrote:
On Tue, Dec 14, 2010 at 2:54 AM, Haase, Konstantin
[#33690] [Ruby 1.9-Bug#4153][Open] Minitest or ruby bug - wrong return code — Robert Pankowecki <redmine@...>
Bug #4153: Minitest or ruby bug - wrong return code
[#33735] [Ruby 1.9-Bug#4163][Assigned] RubyGems uses deprecated API: YAML.quick_emit. — Yui NARUSE <redmine@...>
Bug #4163: RubyGems uses deprecated API: YAML.quick_emit.
On Thu, Dec 16, 2010 at 04:46:33AM +0900, Yui NARUSE wrote:
[#33763] [Ruby 1.9-Bug#4168][Open] WeakRef is unsafe to use in Ruby 1.9 — Brian Durand <redmine@...>
Bug #4168: WeakRef is unsafe to use in Ruby 1.9
Issue #4168 has been updated by Kurt Stephens.
[#33779] [Ruby 1.9-Bug#4174][Open] 1F1E on rdoc tests — Kouhei Yanagita <redmine@...>
Bug #4174: 1F1E on rdoc tests
[#33801] [Ruby 1.9-Feature#4183][Open] [ext/openssl] Timestamp support — Martin Bosslet <redmine@...>
Feature #4183: [ext/openssl] Timestamp support
On Wed, Dec 22, 2010 at 03:19:12AM +0900, Martin Bosslet wrote:
[#33815] trunk warnflags build issue with curb 0.7.9? — Jon <jon.forums@...>
As this may turn out to be a 3rd party issue rather than a bug, I'd like some feedback.
Hi,
[#33818] [Ruby 1.9-Bug#4188][Open] minitest warnings in 1.9.3 — Aaron Patterson <redmine@...>
Bug #4188: minitest warnings in 1.9.3
[#33825] PATCH: REE fast-thread.patch: stack_free() not called in rb_thread_die(). — Kurt Stephens <ks@...>
http://code.google.com/p/rubyenterpriseedition/issues/detail?id=57
Similar technique might be relevant in MRI 1.9 if fiber/continuation
> Similar technique might be relevant in MRI 1.9 if fiber/continuation stacks
[#33833] Ruby 1.9.2 is going to be released — "Yuki Sonoda (Yugui)" <yugui@...>
-----BEGIN PGP SIGNED MESSAGE-----
On Thu, Dec 23, 2010 at 9:47 AM, Yuki Sonoda (Yugui) <yugui@yugui.jp> wrote:
On Thu, Dec 23, 2010 at 9:47 AM, Yuki Sonoda (Yugui) <yugui@yugui.jp> wrote:
[#33845] Getting involved in Ruby — Benoit Daloze <eregontp@...>
Hi dear Ruby core team !
[#33846] [Ruby 1.9-Feature#4197][Open] Improvement of the benchmark library — Benoit Daloze <redmine@...>
Feature #4197: Improvement of the benchmark library
Issue #4197 has been updated by Yui NARUSE.
[#33852] [Ruby 1.9-Bug#4199][Open] make test ruby-1.9.2-p0 failed on Solaris10 x86 — Dmitry Perfilyev <redmine@...>
Bug #4199: make test ruby-1.9.2-p0 failed on Solaris10 x86
[#33864] [Backport92-Backport#4200][Open] minitest 2.0.2 on trunk — Ryan Davis <redmine@...>
Backport #4200: minitest 2.0.2 on trunk
Issue #4200 has been updated by Ryan Davis.
[#33880] As platform mantainer - what are my boundaries? — Luis Lavena <luislavena@...>
Hello,
Hello,
On Sun, Dec 26, 2010 at 9:50 PM, U.Nakamura <usa@garbagecollect.jp> wrote:
On Mon, Dec 27, 2010 at 11:05 AM, Luis Lavena <luislavena@gmail.com> wrote:
Luis,
On Wed, Dec 29, 2010 at 1:31 AM, Yugui <yugui@yugui.jp> wrote:
[#33910] [Ruby 1.9-Feature#4211][Open] Converting the Ruby and C API documentation to YARD syntax — Loren Segal <redmine@...>
Feature #4211: Converting the Ruby and C API documentation to YARD syntax
On Dec 26, 2010, at 13:00, Loren Segal wrote:
Issue #4211 has been updated by Yui NARUSE.
On Mon, Dec 27, 2010 at 12:01:00PM +0900, Yui NARUSE wrote:
[#33923] [Ruby 1.9-Bug#4214][Open] Fiddle::WINDOWS == false on Windows — Jon Forums <redmine@...>
Bug #4214: Fiddle::WINDOWS == false on Windows
Issue #4214 has been updated by Luis Lavena.
[#33948] Multi-line comments — Rodrigo Rosenfeld Rosas <rr.rosas@...>
I was always curious about the reasoning Ruby doesn't support
On Mon, Dec 27, 2010 at 8:55 PM, Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com
On 28-12-2010 01:54, Joshua Ballanco wrote:
[#33951] [Ruby 1.9-Bug#4217][Open] irb exits unexpectedly with non-ascii Regexp on Windows — Heesob Park <redmine@...>
Bug #4217: irb exits unexpectedly with non-ascii Regexp on Windows
Issue #4217 has been updated by Heesob Park.
[#33953] my redmine login is not working and wanted to submit a bug — deepak kannan <kannan.deepak@...>
hi,
[#34011] [Backport92-Backport#4228][Open] Backward gemspec compatibility change in r29663 broke rake gems — Luis Lavena <redmine@...>
Backport #4228: Backward gemspec compatibility change in r29663 broke rake gems
[#34023] ruby -h doesn't include --disable-gems — Ryan Davis <ryand-ruby@...>
Is there a reason why ruby -h doesn't show --disable-gems ?
2011/1/4 Ryan Davis <ryand-ruby@zenspider.com>:
On Tue, Jan 4, 2011 at 12:14 AM, KOSAKI Motohiro
[ruby-core:34005] Re: [Ruby 1.9-Feature#4211][Open] Converting the Ruby and C API documentation to YARD syntax
On 12/28/2010 8:18 PM, Eric Hodel wrote:
> If we're building a documentation standard for ruby we'll need an example of good documentation, a "template" which we will enforce when documentation is submitted.
For the most part I agree. An example will help validate a proposed
"template". jQuery and Cocoa's APIs are good, but I also know of a few
Ruby libraries using (YARD's) @tag syntax if we're looking for something
closer to home. Any suggestions from your end?
>>> I've read documentation generated by such tools many times and have always found them difficult to navigate as there is not enough context to understand the interaction between all the components of an API.
>> What does RDoc do better, here? Again, this is not the fault of @tag based syntaxes-- it is the fault of the tools. For instance, doxygen has some rough edges in displaying documentation, but this is the fault of the tool, not the use of @tags. Keep in mind that I'm not proposing a tool, just a *unified documentation style*. RDoc could certainly implement this if you think it does the best job at displaying information to a user.
> Good documentation is independent of the tools used to process it or the syntax used to write it. I don't think a different tool can make better documentation without human intervention. Some characteristics of good documentation are consistent wording, approachable writing, comprehensive coverage and useable examples. I'm unsure of how a tool can help with anything other than comprehensive coverage.
You're right about human intervention. The tools are basically there to
help you sift through the data, bringing to light problem areas based on
heuristics. I don't think this functionality should be underestimated,
though. With so much documentation to sift through, it's useful to have
some way to do some quick sanity checks-- ultimately this will come down
to good manual checking of the raised issues.
Good tools can be used to, for instance, test that the examples provided
in the docs actually work. This is kind of hard with high level APIs
that depend on some initial state, but with Ruby's core classes where
you can write isolated examples, this would be extremely useful and
effective. Both tools and syntax can also be used to ensure you're
specifying the right type information in your documentation. Syntax also
especially helps to ensure consistent wording across documentation,
because you end up with less of it, which means less to manually review.
A few examples I commonly come across:
- The common phrasing of "This method returns ...." becomes obsoleted
by a single "@return ...". The wording of how "this method returns" is
phrased, and *where* it can be found in the docstring is simplified so
that it becomes really hard to screw up.
- Having the tag there means you can also check for the existence of
that information much more easily. In docs without such a consistent
syntax, you couldn't just check for the existence "Returns", as it's not
guaranteed to exist. See Array#transpose for the first example I came
across. Thankfully in this case there is at least a simple working
example that summarizes the information. That is not always the case.
- Again, @return gives documentation a consistent form, and also gives
users a consistent placement of that information. Misunderstanding
Array#reject vs #reject! is a common "newbie mistake". Although
#reject!'s documentation does say it returns nil, that information is
often lost in the wording ("... but returns nil if..." is not exactly
put front and center as it should be). A @tag based syntax would allow
you to rewrite the #reject! method as:
# Deletes all elements from _self_ for which the given block
evaluates to +true+.
# @yield [item] each item in the array
# @return [Array] if at least one change was made
# @return [nil] if nothing was changed
Having tags allows the tool to (more easily) display this information
consistently and organize information for the reader by return type,
rather than having the documentor arbitrarily decide the importance of a
return type or general return information-- or having reviewers manually
ensure that "return information is displayed at the ____ of a
docstring". The organization of the data should be provided by the tool,
which makes up a big part of the overall documentation quality. Using a
tool that provides poor organizational flow can be just as bad as having
poorly written documentation-- you pointed this out above, too.
- I'll throw this in there: YARD uses a convention return type "void"
(@return [void]), which denotes that although Ruby always returns "a
value", the value being returned from the method is effectively
"meaningless" and equivalent to void. There are a small batch of methods
in the Ruby docs that have this kind of behaviour, but this happens a
lot in higher level APIs. Usually people ignore making any mention of
such a "meaningless" return value, but this causes ambiguity because now
the reader doesn't know when this information was omitted due to
"meaninglessness", or carelessness by the documentor. Checking that a
@return tag exists make sure that there is never such an ambiguity. And
this is definitely something that syntax can give you.
Approachable writing, of course, can't be corrected by a tool. That one
needs proper manual review. I would certainly not mind volunteering some
of my time for such reviews.
>> However, it's important to realize that supplying a "bare minimum" guideline to a documenter does a lot to improve the quality of documentation. Obviously, manual checks would have to be done to make sure people are not just "checking off boxes", but having those tags there lets us know what to look for when reviewing documentation, and lets *them* know what they should be writing. This is an improvement over the current adhoc "just-write-something" methodology. Tags also give us the ability to implement tooling later, because the docs are much more easily parse-able.
> A common feature of documentation in ruby core is to "tag" method parameters in ++,<tt></tt> or</code></code>. Matching the "tagged" items in a comment to the method's arguments is trivial way to implement an enhanced coverage report without requiring @tags.
I'm not sure I really see how this could be applied. The existence of a
+parameter_name+ does not always imply that the quality is there. This
is *also* true for a @param tag. On the flipside, the *lack* of a
+parameter_name+ in the docs does *not* mean the argument was not
documented. For instance, people often say "takes a string" instead of
"takes string +str+", when there is only one argument (I think this is
acceptable). However, if you enforce documentation for a parameter to be
located inside a @param tag, you *can* guarantee that a missing @param
tag means the parameter was not documented. You still end up with a few
false negatives, where the parameter really needs no documentation, but
these false negatives are a relative few to the non-tag alternative, IMO.
> One of the greatest joys I've found in programming is the ability to have the computer do work for me. I would prefer to have a tool that could figure out what I haven't documented, or documented well enough, with the fewest possible concessions.
Certainly. I don't believe @tags are concessions, though. If anything,
there is less superfluous writing when using tags, because you can rely
on the tool to expand language for you in a consistent fashion. YARD
actually takes advantage of this rule: when given a @return tag and no
extra docstring ('docstring' meaning plain "English" text, not tag
metadata), YARD expands this out to a full English sentence in the
method summary for you. You can rewrite the awkward:
# Returns a new string that is encoded using the ROT13 cipher
# @return [String] the rot13 version of the string
def rot13; ... end
Into a much more compact:
# @return [String] a new string that is encoded using the ROT13 cipher
def rot13; ... end
YARD handles the "Returns " for you in the summary, that is you still
get the same plain English text as above, but also still organizes the
return type information alongside the metadata below. I think there are
a lot of places where tags can be leveraged in this way to make your
life *easier*, not harder. This was certainly one of YARD's original
design goals from the get-go. If I truly believed @tags were more
cumbersome and less advantageous, I would not have used them.
>>> I question merging YARD into Ruby and replacing RDoc.
>>>
>>> Why aren't extensions or enhancements to RDoc being made instead?
>> YARD has fairly significant architectural differences that don't lend well to simply writing extensions. YARD is actually a superset of RDoc, and not the other way around, so a merge of functionality wouldn't really work. For instance, YARD is not only a "parse and generate" tool. It is also often used as a 2 phase: "parse and store", "generate from stored data" tool (as exemplified by the 'yard server' tool).
> Sounds like ri -f html. ri uses RDoc::RI::Store to load data from a stored documentation tree.
Useful. It would be much better if the gem server leveraged this instead
of forcing the static documentation to be generated on a gem install
automatically. That is a painfully slow process. YARD only does a
parse-thru on install (unless you tell it to generate static docs), and
then dynamically generates the HTML when using yard server --gems. This
shaves minutes off of some larger gem installs (like Rails), and is a
much better alternative than adding --no-rdoc to your (which a lot of
people are doing AFAIK). It also saves plenty of disk space, since few
users actually access the static gem docs, and those that do can
generate them on demand with `gem doc` anyway. BTW the YARD server
actually can do the parsing dynamically too if it wasn't previously
done, so you don't even need to do any parsing on install, which means
even *less* time is spent installing. We still do the parse-run for our
RI implementation though, because there's no way around pre-parsing for
that.
>> RDoc does not have this phase, so much of the functionality YARD has could not be implemented easily.
> Loading an RDoc::RI::Store and running it back through an HTML generator could be implemented very easily. The HTML generator may need to be adapted to handle pre-parsed comments which would involve adding two lines.
I think this would be a great move for the reasons given above.
>> YARD's parsing architecture also allows much more leeway to customizing the parsing phase than RDoc's limited markup preprocessing APIs. And yes, these APIs are used in at least a few plugins I know of.
>>
> I built a proof-of-concept parser for Rakefiles:
>
> https://github.com/rdoc/rdoc-rake
Seeing yours, I built a small proof of concept Rakefile parser in YARD
this afternoon to exemplify the API differences:
http://gist.github.com/759428
It integrates into the existing template using the same method you are
using (namespaces as Module, tasks as Method) and also lists
dependencies of tasks as metadata tags. I fleshed out a more complete
version that performs better customization to the template and lists the
Rake tasks in the index page along with the readme files and objects:
https://github.com/lsegal/yard-rake -- I just might introduce this into
a future release if it gets a little more work. :-)
>> - Are there any ways to hook into the information generated by directives *after* they've been declared? For instance, can you check for the existence of a specific directive inside of a custom Generator? Again, this kind of functionality is used extremely often in YARD, and is extremely important to outputting documentation for arbitrary @tag-style metadata.
> There is no restriction. If a directive is unhandled it's stored in the code object's metadata hash.
>
That's good to know, and certainly useful.
>> However, would RDoc be generating documentation for the C API?
> It wouldn't be much work to add, perhaps a week to fully polish. My boss says I can work on this in place of company business, so I'll give it a shot.
Great. If RDoc was generating the C API and handling the @tags, that
would help move things along.
- Loren