Project

General

Profile

Activity

From 08/03/2016 to 08/09/2016

08/09/2016

08:09 PM Feature #12665: Faster prime? method for prime.rb std lib
The current version of the method `prime?` in the `prime.rb`
std lib replaced the older version starting with 2.3.0.
It uses an implementation of the P3 Strictly Prime, Prime Generator (SP PG).
It can be simplified as shown below.
...
jzakiya (Jabari Zakiya)
08:06 PM Feature #12665 (Closed): Faster prime? method for prime.rb std lib
The current version of the method `prime?` in the `prime.rb`
std lib replaced the older version starting with 2.3.0.
It uses an implementation of the P3 Strictly Prime, Prime Generator (SP PG).
It can be simplified as shown below.
...
jzakiya (Jabari Zakiya)
07:05 PM Feature #12512: Import Hash#transform_values and its destructive version from ActiveSupport
Yukihiro Matsumoto wrote:
> `#map_v` accepted.
At first I thought it was an "adapted form" of Hash#map like Enumerable#grep_v is an "inverted" Enumerable#grep. Maybe the "_v" could be confusing for other people?
Why not Hash#map_v...
janfri (Jan Friedrich)
08:54 AM Feature #12512 (Closed): Import Hash#transform_values and its destructive version from ActiveSupport
Applied in changeset r55847.
----------
hash.c: implement Hash#map_v and Hash#map_v!
* hash.c (rb_hash_map_v, rb_hash_map_v_bang): impelement Hash#map_v and
Hash#map_v! [Feature #12512] [ruby-core:76095]
* test/ruby/test_hash.rb: ad...
mrkn (Kenta Murata)
07:16 AM Feature #12512 (Assigned): Import Hash#transform_values and its destructive version from ActiveSupport
mrkn (Kenta Murata)
07:14 AM Feature #12512: Import Hash#transform_values and its destructive version from ActiveSupport
`#map_v` accepted.
Matz.
matz (Yukihiro Matsumoto)
01:15 AM Feature #12512: Import Hash#transform_values and its destructive version from ActiveSupport
I don't persist with the name `transform_value`.
`map_v` or `map_values` are also acceptable for me.
mrkn (Kenta Murata)
06:23 PM Feature #12664 (Closed): Multiline pretty-printing of multiline strings
With following addition
~~~ ruby
class String
def pretty_print(q)
lines = self.lines
if lines.size > 1
q.group(0, '', '') do
q.seplist(lines, lambda { q.text ' +'; q.breakable }) do |v|
q.pp v
...
pitr.ch (Petr Chalupa)
05:42 PM Feature #8895: Destructuring Assignment for Hash
the closest you can get to hash destructuring is via block params:
~~~ ruby
{a: 1, b: 2}.tap do |a:, b:|
end
~~~
but unfortunately this has its own issues (#11048), it's too strict about missing/extra keys, which doesn't make sens...
bughit (bug hit)
04:41 PM Feature #12299: Add Warning module for customized warning handling
I've added a gem for lib/warning.rb (https://rubygems.org/gems/warning). jeremyevans0 (Jeremy Evans)
03:38 PM Feature #12299: Add Warning module for customized warning handling
Here is a patch that uses Warning instead of Exception::Warning, and only includes the error.c change (and a test for Warning.warn). I'll work on a gem shortly for lib/warning.rb. jeremyevans0 (Jeremy Evans)
05:44 AM Feature #12299: Add Warning module for customized warning handling
I accept the mechanism.
I prefer `Warning` to `Exception::Warning`.
Besides that, the basic should be included in the core (i.e. the patch to error.c), but its customization (i.e. lib/warning.rb) should be a Gem at first.
Matz.
matz (Yukihiro Matsumoto)
02:54 PM Feature #12635 (Rejected): Shuffling/Reassigning "namespaces" more easily
Probably you want an isolated loading system like Java's or Python's. That's fine. It must be a good idea.
But I don't think it can be accomplished by modifying existing `require` or adding anything to it.
You have to design the new on...
matz (Yukihiro Matsumoto)
02:51 PM Bug #12662 (Rejected): rb_hash_fetch() Segmentation fault on an empty hash table
It's your bug.
`rb_hash_fetch()` raises an exception if the key is not found, and you must catch it by `rb_protect()`.
nobu (Nobuyoshi Nakada)
08:55 AM Bug #12662 (Rejected): rb_hash_fetch() Segmentation fault on an empty hash table
I am writing HTM (Hash Table Machine - a C benchmark program for hash table) and libruby aborts with
ruby: [BUG] Segmentation fault at 0x00000000000018
ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]
while attempting to get an entr...
rocco (Rocco Carbone)
02:45 PM Feature #12573 (Rejected): Introduce a straightforward way to discover whether a process is running
It should be named `exist?` to be consistent with other methods in the standard libraries.
Besides that, I don't see a proper use-case for this method. Even when you have pid, the process you are trying to watch may have already termina...
matz (Yukihiro Matsumoto)
02:36 PM Feature #12626 (Rejected): Add ceiling alias for ceil on Numeric objects
Having both `ceil` (backed by UNIX tradition) and `ceiling` (better for English natives? dunno) only introduces confusion. Is there any other buying point for `ceiling`?
Matz.
matz (Yukihiro Matsumoto)
02:33 PM Feature #12624 (Rejected): !== (other)
The explicit use of `===` for type checking is against duck typing principle.
I don't accept syntax enhancement proposal to encourage something against duck typing in Ruby.
Matz.
matz (Yukihiro Matsumoto)
12:00 PM Revision 41fe7e4e (git): Remove empty directories
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55848 b2dd03c8-39d4-4d8f-98ff-823fe69b080e znz (Kazuhiro NISHIYAMA)
09:24 AM Bug #12663 (Closed): Compilation error on cygwin
I get the errors below when compiling on cygwin. The problem may already be two or three days old; I'm sorry I overlooked it.
```
make[2]: Entering directory '/cygdrive/c/Data/ruby/ext/win32/resolv'
compiling resolv.c
In file inclu...
duerst (Martin Dürst)
08:54 AM Revision ea5184b9 (git): hash.c: implement Hash#map_v and Hash#map_v!
* hash.c (rb_hash_map_v, rb_hash_map_v_bang): impelement Hash#map_v and
Hash#map_v! [Feature #12512] [ruby-core:76095]
* test/ruby/test_hash.rb: add tests for above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55847 b2dd...
Kenta Murata
08:51 AM Feature #12608 (Rejected): Proposal to replace unless in Ruby
I don't think proposed `guard` syntax is more readable than `unless`.
Even if some may agree with you, I doubt it's worth adding a new keyword and introducing possible incompatibility.
Matz.
matz (Yukihiro Matsumoto)
08:48 AM Feature #12637 (Rejected): Unified and consistent method naming for safe and dangerous methods
Ruby is not Scheme.
The rule is simple: every bang method should have its non-bang version, which does not modify the receiver.
That does not mean every non-bang method keeps its receiver unchanged.
Matz.
matz (Yukihiro Matsumoto)
08:39 AM Feature #12602 (Assigned): Add NilClass#to_d
mrkn (Kenta Murata)
08:37 AM Bug #12548: Rounding modes inconsistency between round versus sprintf
It should be consistent. Will be fixed.
Matz.
matz (Yukihiro Matsumoto)
08:04 AM Feature #12508 (Feedback): Integer#mod_pow
Instead, I propose `pow(a)` and `pow(a,b)` where the latter works as `mod_pow()` here.
Matz.
matz (Yukihiro Matsumoto)
08:03 AM Bug #12521 (Closed): Syntax for retrieving argument without removing it from double-splat catch-all
I am not sure what we gain comparing to
```ruby
def controller **context
if context.key?(:name)
...
end
end
```
Is this worth adding new syntax? If you think you can persuade me, please reopen.
Matz.
matz (Yukihiro Matsumoto)
07:52 AM Revision cb18d4ba (git): * vm_insnhelper.c (vm_getivar): use always_inline because
gcc7 doesn't inline this without always_inline.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
naruse (Yui NARUSE)
07:40 AM Feature #3511 (Closed): rb_path_to_class should call custom const_defined? methods
This is kind of autoload that sometimes cause problems.
I think it can cause issues than solving problem.
If you have a concrete use-case of this feature, please reopen.
Matz.
matz (Yukihiro Matsumoto)
07:36 AM Revision 9a9569b1 (git): test_objectspace.rb: errors in a finalizer
* test/ruby/test_objectspace.rb (test_finalizer_with_super):
adjust number of arguments to get rid of errors in a finalizer.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
07:06 AM Feature #11818: `Hash#compact`
Accepted.
Matz.
matz (Yukihiro Matsumoto)
06:59 AM Bug #12402 (Assigned): Inline rescue behavior inconsistent for method calls with arguments and assignment
nobu (Nobuyoshi Nakada)
06:54 AM Bug #12402: Inline rescue behavior inconsistent for method calls with arguments and assignment
I consider this is a bug. They should be consistent.
But I am not sure we can fix the issue soon. When in doubt, put parens.
Matz.
matz (Yukihiro Matsumoto)
06:44 AM Feature #8539 (Closed): Unbundle ext/tk
Applied in changeset r55844.
----------
* ext/tk: Tk is removed from stdlib. [Feature #8539]
https://github.com/ruby/tk is the new upstream.
naruse (Yui NARUSE)
06:44 AM Revision 303dc3c5 (git): * ext/tk: Tk is removed from stdlib. [Feature #8539]
https://github.com/ruby/tk is the new upstream.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55844 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
naruse (Yui NARUSE)
06:42 AM Bug #12466 (Rejected): Enumerable should yield multiple values when possible
This idea sounds nice, but we have to keep compatibility.
Matz.
matz (Yukihiro Matsumoto)
06:26 AM Feature #12648: `Enumerable#sort_by` with descending option
I think we are talking about two things at once.
First, adding reverse (or descending) option to `sort_by`.
I think it may be useful for some cases, but it's only slightly better than `sort_by().reverse`.
Second, adding secondary ...
matz (Yukihiro Matsumoto)
06:13 AM Feature #12374 (Closed): SingletonClass
I don't think the idea itself is meaningless.
But its use-case is not clear to us yet.
(For the record, Singleton module is totally different story.)
If you have any real-world use-case, please reopen the issue.
Matz.
matz (Yukihiro Matsumoto)
05:55 AM Feature #10594: Comparable#clamp
I accept the idea of `#clamp` as `Comparable#clamp(min, max)`.
It would not accept ranges (for now).
Matz.
matz (Yukihiro Matsumoto)
05:05 AM Revision f82df94f (git): tcltklib.c: repeated checks and conversions [ci skip]
* ext/tk/tcltklib.c (ip_init): get rid of repeated checks and
conversions in StringValueCStr.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55843 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
05:05 AM Revision 3f640186 (git): tcltklib.c: use StringValueCStr [ci skip]
* ext/tk/tcltklib.c (set_max_block_time, tcl_protect_core,
ip_init, ip_create_slave_core, get_obj_from_str,
ip_cancel_eval_core, lib_set_system_encoding,
alloc_invoke_arguments, lib_merge_tklist): use StringValueCStr
instead of S...
nobu (Nobuyoshi Nakada)
05:05 AM Revision 56689eac (git): tcltklib.c: use PRIsVALUE [ci skip]
* ext/tk/tcltklib.c (set_max_block_time): use PRIsVALUE to get rid
of dangling pointer.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
05:05 AM Revision 0d15e30a (git): tcltklib.c: missing break [ci skip]
* ext/tk/tcltklib.c (set_max_block_time): fix missing break.
TclTkLib.set_max_block_time(1) works but
TclTkLib.set_max_block_time(1.0) didn't.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55840 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
01:42 AM Revision d8d78f07 (git): tcltk.rb: suppress a warning [ci skip]
* ext/tk/lib/tcltk.rb (TclTkWidget#initialize): suppress an
"assigned but unused variable" warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55839 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
01:42 AM Revision ed3139b7 (git): tcltklib/sample2.rb: use attr_accessor [ci skip]
* ext/tk/sample/tcltklib/sample2.rb (Othello::BoardView::Square):
use attr_accessor instead of attr with optional boolean
argument.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55838 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
01:42 AM Revision 5a80f0c5 (git): use true and false [ci skip]
* ext/tk/lib/tk/texttag.rb, ext/tk/sample/tcltklib/sample2.rb,
ext/tk/sample/tkline.rb, ext/tk/sample/tktimer.rb: use true and
false instead of TRUE and FALSE.
* ext/win32ole/sample/ienavi.rb (stop_msg_loop): ditto.
git-svn-id: svn...
nobu (Nobuyoshi Nakada)

08/08/2016

03:59 PM Feature #9704: Refinements as files instead of modules
It would be interesting to be able apply a refinement to a whole app (without its gems) or inside a single gem without propagating to the rest of the app which loaded it.
Although I'm not really sure about the syntax or API to do it.
pabloh (Pablo Herrero)
03:16 PM Revision dfc9cb40 (git): * 2016-08-09
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55836 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
03:16 PM Revision 38fc851d (git): * doc/maintainers.rdoc: Remove moved file section.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55835 b2dd03c8-39d4-4d8f-98ff-823fe69b080e znz (Kazuhiro NISHIYAMA)
12:04 PM Revision 44997130 (git): * ext/win32ole/sample/excel1.rb, ext/win32ole/sample/excel2.rb,
ext/win32ole/sample/excel3.rb, ext/win32ole/sample/ie.rb,
ext/win32ole/sample/ienavi.rb, ext/win32ole/sample/ienavi2.rb: use
true instead of deprecated TRUE. [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55834 b2dd03...
suke (Masaki Suketa)
07:50 AM Bug #12421: Please backport r53816, r53817
Tomoyuki Chikanaga wrote:
> usa san how do you judge this?
I agreed with you.
usa (Usaku NAKAMURA)
01:21 AM Bug #12421: Please backport r53816, r53817
In my opinion r53816 might be considered as spec fix but r53817 was feature change, even though there's no entry in NEWS file.
usa san how do you judge this?
nagachika (Tomoyuki Chikanaga)
05:12 AM Bug #12658 (Feedback): variable_name_checker
Similar to #11928 ?
Could you try with 2.3.1 or trunk?
nagachika (Tomoyuki Chikanaga)
05:11 AM Revision 6a6a4126 (git): internal.h: fix r55831
* internal.h (RBASIC_CLEAR_CLASS): fix compile error and size to
fill.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
05:04 AM Revision d81e5593 (git): test/unit.rb: no verbose in worker processes
* test/lib/test/unit.rb (Test::Unit::Parallel::Worker.launch):
disable verbose flag in worker processes, get rid of unexpected
output within marshaled results.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55832 b2dd03c8-39d4-4d...
nobu (Nobuyoshi Nakada)
04:20 AM Bug #12657 (Closed): [PATCH] ANSI aliasing fix for XL compiler
Applied in changeset r55831.
----------
* internal.h (RBASIC_CLEAR_CLASS): Reroute ANSI C's strict
aliasing rule.
[ruby-core:74427][Bug #12191][ruby-core:76747][Bug #12657]
shyouhei (Shyouhei Urabe)
04:09 AM Bug #12657: [PATCH] ANSI aliasing fix for XL compiler
`RBASIC_CLEAR_CLASS` doesn't use `RBASIC_CLEAR_CLASS_RAW`, and the former only is used with r-values.
Sorry for the noise.
nobu (Nobuyoshi Nakada)
03:55 AM Bug #12657: [PATCH] ANSI aliasing fix for XL compiler
Nobuyoshi Nakada wrote:
> Does this patch really compile?
Yes, at least to me.
shyouhei (Shyouhei Urabe)
03:14 AM Bug #12657 (Feedback): [PATCH] ANSI aliasing fix for XL compiler
Does this patch really compile?
`cls` in `RBASIC_CLEAR_CLASS` sometimes isn't an l-value, and should not be able to be the operand of unary '&'.
nobu (Nobuyoshi Nakada)
01:46 AM Bug #12657: [PATCH] ANSI aliasing fix for XL compiler
Shyouhei Urabe wrote:
> Thank you. I think we don't need the #else part because the memset/memcpy should just work for all ANSI-compliant compilers. Is it OK for me to merge your patch like that way?
Yes, that should work.
Zarko (Zarko Todorovski)
01:10 AM Bug #12657: [PATCH] ANSI aliasing fix for XL compiler
Thank you. I think we don't need the #else part because the memset/memcpy should just work for all ANSI-compliant compilers. Is it OK for me to merge your patch like that way? shyouhei (Shyouhei Urabe)
04:20 AM Bug #12191 (Closed): Violation of ANSI aliasing rules causing problems while compiling
Applied in changeset r55831.
----------
* internal.h (RBASIC_CLEAR_CLASS): Reroute ANSI C's strict
aliasing rule.
[ruby-core:74427][Bug #12191][ruby-core:76747][Bug #12657]
shyouhei (Shyouhei Urabe)
04:19 AM Revision 869e7809 (git): * internal.h (RBASIC_CLEAR_CLASS): Reroute ANSI C's strict
aliasing rule.
[ruby-core:74427][Bug #12191][ruby-core:76747][Bug #12657]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55831 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
shyouhei (Shyouhei Urabe)
03:39 AM Feature #9612 (Assigned): Gemify OpenSSL
hsbt (Hiroshi SHIBATA)
03:38 AM Feature #8526: gemify tk
Rubygems に gem として push できるよう、リクエストをだしました
https://github.com/rubygems/rubygems.org/pull/1378
hsbt (Hiroshi SHIBATA)
01:59 AM Bug #7877: E::Lazy#with_index should be lazy
Is there reason this is not loved? I'd like to have this. shyouhei (Shyouhei Urabe)

08/07/2016

08:49 PM Feature #9999: Type Annotations (Static Type Checking)
Might be worth looking at [RDL](https://github.com/plum-umd/rdl) for some inspiration. michaelmior (Michael Mior)
05:18 PM Feature #12655: Accessing the method visibility
Hi,
I'm the original author of looksee.
I agree that we don't need everything in the Looksee extension in ruby. Looksee was written back in 2009 when I think the situation was a little different, but now I believe Module#ancestors ...
oggy (George Ogata)
04:33 PM Revision 0c5fb7df (git): * 2016-08-08
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55830 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
04:33 PM Revision 2bfb8548 (git): fix a typo [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55829 b2dd03c8-39d4-4d8f-98ff-823fe69b080e znz (Kazuhiro NISHIYAMA)
10:34 AM Revision f306bb0f (git): suppress warnings
* basictest/runner.rb, bootstraptest/runner.rb: disable warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55828 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
10:34 AM Revision df0e70b9 (git): vcs.rb: suppress warnings
* tool/vcs.rb (VCS#modified): get rid of set but unused variables.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55827 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
10:05 AM Revision 489456e9 (git): extmk.rb: suppress a warning
* ext/extmk.rb: get rid of shadowing outer local variable.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
10:04 AM Revision 78728b89 (git): extmk.rb: remove sysquote
* ext/extmk.rb (sysquote): removed. unnecessary since r52161.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55825 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
09:08 AM Feature #12574 (Closed): Remove TRUE, FALSE, and NIL
Applied in changeset r55824.
----------
deprecate TRUE,FALSE,NIL
* object.c (InitVM_Object): deprecate toplevel constants TRUE,
FALSE, and NIL. [Feature #12574]
nobu (Nobuyoshi Nakada)
09:08 AM Revision 41d22044 (git): deprecate TRUE,FALSE,NIL
* object.c (InitVM_Object): deprecate toplevel constants TRUE,
FALSE, and NIL. [Feature #12574]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55824 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)

08/06/2016

10:08 PM Bug #12660: [PATCH] openssl: avoid undefined behavior on empty SSL_write
k@rhe.jp wrote:
> Thanks! Looks fine to me. Please commit.

Thanks for quick review :> r55822
normalperson (Eric Wong)
09:50 PM Bug #12660 (Closed): [PATCH] openssl: avoid undefined behavior on empty SSL_write
Applied in changeset r55822.
----------
openssl: avoid undefined behavior on empty SSL_write
SSL_write(3ssl) manpage has this in the WARNINGS section:
When calling SSL_write() with num=0 bytes to be sent the
behaviour is...
Anonymous
11:38 AM Bug #12660: [PATCH] openssl: avoid undefined behavior on empty SSL_write
Thanks! Looks fine to me. Please commit. rhenium (Kazuki Yamaguchi)
10:34 AM Bug #12660 (Closed): [PATCH] openssl: avoid undefined behavior on empty SSL_write
SSL_write(3ssl) manpage has this in the WARNINGS section:
When calling SSL_write() with num=0 bytes to be sent the
behaviour is undefined.
And indeed, the new test case demonstrates failures when
empty strings are u...
normalperson (Eric Wong)
09:50 PM Revision f5f6859b (git): * 2016-08-07
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55823 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
09:50 PM Revision 7513d546 (git): openssl: avoid undefined behavior on empty SSL_write
SSL_write(3ssl) manpage has this in the WARNINGS section:
When calling SSL_write() with num=0 bytes to be sent the
behaviour is undefined.
And indeed, the new test case demonstrates failures when
empty strings are used. ...
Eric Wong
02:23 PM Bug #12661 (Rejected): Multithreading http get doesn't work
You can't make multiple requests on a Net::HTTP instance at the same time. You have to open an HTTP connection for each thread.
As for the segmentation fault, in trunk, r55100 should have fixed it ([Bug #12292]).
rhenium (Kazuki Yamaguchi)
02:00 PM Bug #12661: Multithreading http get doesn't work
on stackoverflow:
http://stackoverflow.com/questions/38805052/download-files-asynchronously
orotti (Tim N)
01:41 PM Bug #12661 (Rejected): Multithreading http get doesn't work
Hi, I was making this script that was supposed to download all files from my favourite imageboard (2ch.hk)
Everything was normal until I tried to make downloading of these files asynchronous, i.e. in different threads, to improve speed
...
orotti (Tim N)
01:01 AM Feature #12659 (Closed): Readline: expose rl_char_is_quoted_p setting
I maintain an interactive Git shell [1] built in Ruby, which made extensive use of the `Readline` module. We found we outgrew the functionality provided by the module, so we built our own `Gitsh::LineEditor` module using Ruby's `Readline... georgebrock (George Brocklehurst)
12:35 AM Revision a62dcd94 (git): id_table.h: dummy sentinel
* id_table.h (rb_id_table_iterator_result): add dummy sentinel
member because C standard prohibits a trailing comma.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55821 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
12:26 AM Feature #12655 (Feedback): Accessing the method visibility
Mathieu Jobin wrote:
> it uses the following macros to find the method visibility and if it has been redefined
> ...
I'd love to add the functions, but are they really needed?
> Ideally, a ruby method that would return its visibility, s...
nobu (Nobuyoshi Nakada)

08/05/2016

06:53 PM Bug #12658 (Closed): variable_name_checker
(development) 15:45:10 ~/2016/cmdapi/collector $ rackup
[2016-08-05 15:45:12] INFO WEBrick 1.3.1
[2016-08-05 15:45:12] INFO ruby 2.3.0 (2015-12-25) [x86_64-darwin15]
[2016-08-05 15:45:12] INFO WEBrick::HTTPServer#start: pid=73891 p...
xykoBR (Francisco Correa)
04:41 PM Bug #12657 (Closed): [PATCH] ANSI aliasing fix for XL compiler
This is related to Bug #12191.
Changing in internal.h:983-985
from :
```diff
-#define RBASIC_CLEAR_CLASS(obj) (((struct RBasicRaw *)((VALUE)(obj)))->klass = 0)
-#define RBASIC_SET_CLASS_RAW(obj, cls) (((struct RBasicRaw...
Zarko (Zarko Todorovski)
03:39 PM Revision b46a8a54 (git): * 2016-08-06
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55820 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
03:39 PM Revision e70df3a7 (git): hash.c: env_name_new
* hash.c (env_enc_str_new): make string for an environment
variable name or value.
* hash.c (env_name_new): make environment value string with the
encoding for its name.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55819 b2dd03...
nobu (Nobuyoshi Nakada)
03:25 PM Feature #12654: On Windows use UTF-8 as filesystem encoding
Usaku NAKAMURA wrote:
> If filesystem encoding is fixed to UTF-8, it causes other (but similar) problems.
UTF-8 can be easily encoded to any other encoding but opposite isn't always true.
But yeah I agree with other points.
davispuh (Dāvis Mosāns)
08:55 AM Feature #12654: On Windows use UTF-8 as filesystem encoding
Premises:
1. We don't introduce such breakage of compatibility until Ruby 3.
2. At Ruby 3, on Windows, we're planning to use UTF-8 as the default locale.
3. Ruby 3 will *not* force users to use UTF-8. Users will be able to choose e...
usa (Usaku NAKAMURA)
02:42 AM Feature #12654: On Windows use UTF-8 as filesystem encoding
Nobuyoshi Nakada wrote:
> Dāvis Mosāns wrote:
> ...
I strongly disagree. WinAPI, PowerShell and cmd supports Unicode independently of used codepage, you can navigate to paths which can't be represented with active codepage. There's rea...
davispuh (Dāvis Mosāns)
01:04 AM Feature #12654: On Windows use UTF-8 as filesystem encoding
Dāvis Mosāns wrote:
> That's not really needed. For example `File.read` works with any console's codepage. But `Dir.entries` and `Dir.pwd` works only for ANSI paths no matter what console's codepage is set to. There's quite inconsistenc...
nobu (Nobuyoshi Nakada)
02:19 PM Revision 549605c1 (git): * hasn.c (env_str_new): taint the string. get rid of a test failure
introduced at r55811.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55818 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
U.Nakamura
01:52 PM Feature #12648: `Enumerable#sort_by` with descending option
Taking a step back, we are using arrays simply because that is a object that allows sorting via multiple criteria (if criteria a is equal, test with criteria b, etc).
It is also my understanding that sort_by creates arrays of [enum_it...
MSP-Greg (Greg L)
01:01 PM Feature #12648: `Enumerable#sort_by` with descending option
Nobuyoshi Nakada wrote:
> Greg L wrote:
> ...
I mentioned the fact that an array is often not returned by the block, hence, my suggestion for adding a new method.
Sorry, I should have shown a signature, below would be a possibility....
MSP-Greg (Greg L)
05:58 AM Feature #12648: `Enumerable#sort_by` with descending option
Greg L wrote:
> Hence, a better solution might be adding a method like `sort_keys` or `sort_key`, where an array is returned by the block, and an array is used as the single parameter for ascending/descending info.
Could you make cl...
nobu (Nobuyoshi Nakada)
03:42 AM Feature #12648: `Enumerable#sort_by` with descending option
In concept, I agree, but, although it's common to return an array from the block, any object can be returned that supports <=>.
Hence, a better solution might be adding a method like `sort_keys` or `sort_key`, where an array is return...
MSP-Greg (Greg L)
08:31 AM Revision 743c279d (git): win32.c: initialize with an impossible value
* win32/win32.c (getifaddrs, rb_w32_getppid): initialize the API
pointers with an impossible value not to try everytime on old
platforms.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55817 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
08:28 AM Revision 518af61b (git): win32.c: static API pointers
* win32/win32.c (rb_w32_inet_ntop, rb_w32_inet_): make the
API pointers static not to get the address everytime.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
08:22 AM Revision bd46ad21 (git): win32.c: call get_final_path pointer
* win32/win32.c (get_final_path): initialize this pointer without
further comparisons.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55815 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
08:04 AM Revision ad9d8468 (git): * 2016-08-05
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55814 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
08:04 AM Revision cb0cde7f (git): hash.c: call w32_getenv pointer
* hash.c (w32_getenv): call rb_w32_getenv and rb_w32_ugetenv via
this pointer without further comparisons.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55813 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
06:01 AM Bug #12587 (Rejected): ruby released tarball require ruby
nobu (Nobuyoshi Nakada)
01:32 AM Feature #12655: Accessing the method visibility
I think it should be possible to implement locksee in pure-ruby. To me it seems OK to have a way to access visibility of a method.
It is not clear if locksee cannot be implemented without exposing IClass, though.
shyouhei (Shyouhei Urabe)

08/04/2016

08:06 PM Feature #12656 (Assigned): Expand short paths with File.expand_path
Currently File.expand_path expands short path only if it's last part.
~~~ruby
puts File.expand_path('C:/VERYLO~1')
puts File.expand_path('C:/VERYLO~1/OTHERL~1')
~~~
Produces
~~~
C:/VeryLongName12345
C:/VERYLO~1/OtherLongNa...
davispuh (Dāvis Mosāns)
04:29 PM Feature #12654: On Windows use UTF-8 as filesystem encoding
Nobuyoshi Nakada wrote:
> Try `chcp.com 65001`.
That's not really needed. For example `File.read` works with any console's codepage. But `Dir.entries` and `Dir.pwd` works only for ANSI paths no matter what console's codepage is set t...
davispuh (Dāvis Mosāns)
08:19 AM Feature #12654: On Windows use UTF-8 as filesystem encoding
Try `chcp.com 65001`. nobu (Nobuyoshi Nakada)
02:22 AM Feature #12654 (Closed): On Windows use UTF-8 as filesystem encoding
Windows (NTFS) supports Unicode and there can be paths/filenames with other characters than current ANSI/OEM codepage can encode.
See attached patch.
davispuh (Dāvis Mosāns)
02:01 PM Bug #12381: ext/openssl classes' dup/clone don't work well
Thanks for reminding me.
I've just fixed the remaining at ruby/openssl (GitHub):
https://github.com/ruby/openssl/commit/6dc9b914cae52c8af6e1b4d1156613bcd914eaf5
Attached is the patch against 2.3 branch.
rhenium (Kazuki Yamaguchi)
07:58 AM Bug #12381: ext/openssl classes' dup/clone don't work well
SSLContext#dup is not fixed yet?
```
$ RBENV_VERSION=2.4.0-dev ruby -v -ropenssl -e 'c = OpenSSL::SSL::SSLContext.new; c.ciphers = "aNULL"; p c.ciphers == c.dup.ciphers'
ruby 2.4.0dev (2016-08-03 trunk 55810) [x86_64-linux]
false
...
Tietew (Toru Iwase)
11:26 AM Feature #12655 (Closed): Accessing the method visibility
I took on the task to make the looksee gem work with ruby 2.3 and 2.4. Unfortunately, some features were not directly accessible in ruby, so a C extension was made, which includes some ruby internals.
For ruby 2.2 support, internal.h ...
mathieujobin (Mathieu Jobin)
09:32 AM Feature #11337: Allow rescue without begin inside blocks
On 2016/08/04 04:23, rr.rosas@gmail.com wrote:

> http://www.redmine.org/projects/redmine/wiki/RedmineIssues

> I'm not sure I completely understand this but it seems to be possible to close the duplicates without closing the origin...
duerst (Martin Dürst)
06:48 AM Feature #11337 (Closed): Allow rescue without begin inside blocks
Hmm.. Thank you for the check. It is complicated than I thought. Closing this one anyway. shyouhei (Shyouhei Urabe)
08:02 AM Bug #12636 (Rejected): string.gsub(/([a-z](?=[A-Z._ ]))/, "#{$1} ") returns wrong result (possible C-string leak?)
usa (Usaku NAKAMURA)
08:02 AM Bug #12634 (Rejected): Ruby converts '*' on command line to a file name
Anyway, although on Windows, use `'*'` to prevent globbing. usa (Usaku NAKAMURA)
07:55 AM Feature #12461 (Rejected): Hash & keys to make subset.
usa (Usaku NAKAMURA)
07:45 AM Bug #12569 (Rejected): There is no any warnings or errors with wrong comma after last attr_accessor attribute
usa (Usaku NAKAMURA)
07:44 AM Bug #12566 (Rejected): IO.copy_stream : tty/command-line events not being passed around
usa (Usaku NAKAMURA)
07:34 AM Bug #12526 (Rejected): Error trying to compile enc/euc_jp.c
usa (Usaku NAKAMURA)
07:32 AM Bug #8673 (Feedback): User rest-client PUT request core dumped
usa (Usaku NAKAMURA)
07:25 AM Bug #11739 (Rejected): OpenSSL::SSL::SSLServer doesn't negotiate ECDHE-* ciphersuites
usa (Usaku NAKAMURA)
07:14 AM Bug #12464 (Rejected): URI.regexp should not include comma at the end of string if followed by whitespace
usa (Usaku NAKAMURA)
06:50 AM Feature #12623 (Closed): rescue in blocks without begin/end
Closing duplicated issue. Please continue discussing at Issue #7882. shyouhei (Shyouhei Urabe)
06:07 AM Bug #12295 (Rejected): Ripper not emitting on_parse_error for global variable name syntax errors
usa (Usaku NAKAMURA)
05:56 AM Bug #12477 (Rejected): Regexp with x modifier does not ignore space in character class
usa (Usaku NAKAMURA)
02:54 AM Revision dd96e0c7 (git): * 2016-08-04
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55812 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
02:54 AM Revision 9e1b9b9c (git): hash.c: set encoding
* hash.c (env_assoc): the encoding of the value should be the
locale, as well as other methods, [], fetch, values, etc.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55811 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)

08/03/2016

11:01 PM Misc #12641: JSON documentation incomplete
Ronald Fischer wrote:
> The documentation of the JSON stdlib class (i.e. http://ruby-doc.org/stdlib-2.2.5/libdoc/json/rdoc/JSON.html) is missing a description, what the user has to do to provide JSON serialization for his own classes (i...
MSP-Greg (Greg L)
07:46 PM Feature #12650: Use UTF-8 encoding for ENV on Windows
Hi,
Usaku NAKAMURA wrote:
> We don't want to break compatibility.
> ...
We always invoke ruby with -EUTF-8:UTF-8 .
Would make sense to enable this patch in ruby 2.x in such situations
where UTF-8 behavior has been requested expl...
spatulasnout (B Kelly)
05:36 AM Feature #12650: Use UTF-8 encoding for ENV on Windows
We don't want to break compatibility.
Wait Ruby3.
usa (Usaku NAKAMURA)
12:53 AM Feature #12650 (Closed): Use UTF-8 encoding for ENV on Windows
Windows environment variables supports Unicode (same wide WinAPI) and so there's no reason to limit ourselves to any codepage.
Currently ENV would use locale's encoding (console's codepage) which obviously won't work correctly for chara...
davispuh (Dāvis Mosāns)
07:41 PM Feature #8643: Add Binding.from_hash
It seems this feature is not related at all to #8439, could you please review it and remove the related feature? Please relate this ticket to #8631 instead. rosenfeld (Rodrigo Rosenfeld Rosas)
07:38 PM Feature #8643: Add Binding.from_hash
Nobuyoshi Nakada wrote:
> Rodrigo Rosenfeld Rosas wrote:
> ...
Either one is fine to me as long as I can easily pass locals to ERB from a hash using a proper API :) Since this is the only use case I have in mind for `Binding.from_hash`...
rosenfeld (Rodrigo Rosenfeld Rosas)
07:30 PM Feature #4840: Allow returning from require
I'm not sure I understand that link. What is 1, 2, 3 and 4? What are the bugs? rosenfeld (Rodrigo Rosenfeld Rosas)
07:24 PM Feature #11337: Allow rescue without begin inside blocks
If I understood it correctly, this issues currently duplicates #7882 which means closing this one would keep the other open. rosenfeld (Rodrigo Rosenfeld Rosas)
07:23 PM Feature #11337: Allow rescue without begin inside blocks
http://www.redmine.org/projects/redmine/wiki/RedmineIssues
"duplicates - Links issues so that closing one, will close the other (e.g. closing A will close B)
For example, if issue B duplicates A:
- closing B will leave A open
- clo...
rosenfeld (Rodrigo Rosenfeld Rosas)
06:57 PM Feature #12607: Ruby needs an atomic integer
This is not really about Integer handling +=. there's no "+=" method. It's a short-hand syntax: a += 1 is currently expanded to something like "a = a + 1". One proposal is to change it to be expanded to something like "synchronized(a = a... rosenfeld (Rodrigo Rosenfeld Rosas)
01:58 PM Feature #12607: Ruby needs an atomic integer
Sorry, I do not clearly understand why the original Integer class cannot be made atomic. If it is not possible or if there would be any problem, can someone explain why that is?
Ideally, I think it would be better if the original Inte...
sawa (Tsuyoshi Sawada)
06:33 PM Feature #12653 (Assigned): Use wide WinAPI for rb_w32_getcwd
Use wide WinAPI for rb_w32_getcwd.
This will be needed so that Dir.pwd can support Unicode current directory on Windows.
I've attached a patch.
davispuh (Dāvis Mosāns)
05:25 PM Feature #12648: `Enumerable#sort_by` with descending option
Akinori MUSHA wrote:
> Maybe the shorter forms `:asc` / `:desc` like in SQL would sound more familiar.
Actually, I also had that in mind as one way to go.
sawa (Tsuyoshi Sawada)
03:17 AM Feature #12648: `Enumerable#sort_by` with descending option
Maybe the shorter forms `:asc` / `:desc` like in SQL would sound more familiar. knu (Akinori MUSHA)
04:28 PM Bug #12652 (Closed): For Dir.home encode passed user
Currently Dir.home(user) expects that passed user will be already in appropriate encoding but if it's not it will fail because comparing with different encodings.
This causes TestDir#test_home to fail.
~~~ruby
user = ENV['USER']
...
davispuh (Dāvis Mosāns)
12:31 PM Bug #12651 (Closed): SEGV in ripper: ripper/sexp.rb:33: [BUG] Segmentation fault at 0x00000000000014
Applied in changeset r55810.
----------
parse.y: reg_fragment_enc_error
* parse.y (reg_fragment_enc_error): compile_error is different
between parser and ripper. [ruby-core:76397] [Bug #12651]
nobu (Nobuyoshi Nakada)
06:34 AM Bug #12651: SEGV in ripper: ripper/sexp.rb:33: [BUG] Segmentation fault at 0x00000000000014
I can reproduce this.
```
(lldb) run
Process 47463 launched: './ruby' (x86_64)
Process 47463 stopped
* thread #1: tid = 0xeafca, 0x000000010015ea3f ruby`str_buf_cat(str=8, ptr="-", len=1) + 31 at string.c:2600, queue = 'com.apple....
shyouhei (Shyouhei Urabe)
04:52 AM Bug #12651 (Closed): SEGV in ripper: ripper/sexp.rb:33: [BUG] Segmentation fault at 0x00000000000014
I encountered SEGV in ripper.
OS: Ubuntu 16.04.01 LTS (xenial)
How to reproduce:
```
$ rbenv version
2.4.0-dev (set by RBENV_VERSION environment variable)
$ ruby -rripper -e 'Ripper.sexp(File.read("ripper_segv.html.erb"))'
/us...
Tietew (Toru Iwase)
12:31 PM Revision 18cf70eb (git): parse.y: reg_fragment_enc_error
* parse.y (reg_fragment_enc_error): compile_error is different
between parser and ripper. [ruby-core:76397] [Bug #12651]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55810 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
08:20 AM Revision 340805cf (git): NEWS: Kernel#clone [ci skip]
* NEWS (Kernel#clone): mention freeze flag. [Feature #12300]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55809 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
08:15 AM Revision e821f974 (git): object.c: restrict freeze option
* object.c (rb_obj_clone2): restrict freeze option to true other
than false which only has the effect. [Feature #12300]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55808 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
06:03 AM Revision 8610ea73 (git): object.c: suppress warning
* object.c (rb_obj_clone2): remove set but not used variable to
suppress unused-but-set-variable warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55807 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
05:20 AM Feature #12637: Unified and consistent method naming for safe and dangerous methods
Thomas Sawyer wrote:
> It would more interesting if there were a way to declare an object mutable or not, then when immutable destructive methods would not be available.
Do you mean #freeze ?
phluid61 (Matthew Kerwin)
03:55 AM Feature #12637: Unified and consistent method naming for safe and dangerous methods
It would more interesting if there were a way to declare an object mutable or not, then when immutable destructive methods would not be available. trans (Thomas Sawyer)
05:06 AM Feature #9704: Refinements as files instead of modules
Thomas Sawyer wrote:
> Has any more thought been given to this? I had a recent request to have Ruby Facets to work as refinements, but I hesitate b/c it literally means creating a second copy of every extension method.
What do you th...
shugo (Shugo Maeda)
04:54 AM Feature #9704: Refinements as files instead of modules
Has any more thought been given to this? I had a recent request to have Ruby Facets to work as refinements, but I hesitate b/c it literally means creating a second copy of every extension method.
trans (Thomas Sawyer)
04:07 AM Feature #12374: SingletonClass
So...
~~~
Object..singleton_class.instance_of?(SingletonClass) #=> true
~~~
trans (Thomas Sawyer)
02:30 AM Revision bcd35a6c (git): vm_insnhelper.c: extra semicolon
* vm_insnhelper.c (CHECK): remove extra semicolon and fold too
long line.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
nobu (Nobuyoshi Nakada)
01:50 AM Revision dba03c38 (git): * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55805 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
01:50 AM Revision 03cad835 (git): * vm_core.h: introduce VM_FRAME_RUBYFRAME_P()
and VM_FRAME_CFRAME_P().
Most of case, RUBY_VM_NORMAL_ISEQ_P() is no
longer needed.
* vm_core.h: introduce rb_obj_is_iseq().
* cont.c, vm.c: VM_FRAME_MAGIC_DUMMY with
VM_FRAME_FLAG_CFRAME.
git-svn-id: svn+ssh://ci.ruby-lang.org...
ko1 (Koichi Sasada)
01:28 AM Feature #12635: Shuffling/Reassigning "namespaces" more easily
We can call the private method with `class Object; remove_const :Konsole; end`
Your technique for moving Konsole into the Foobar namespace doesn't work if Konsole refers to itself. For example, I add code to Konsole that calls Konsol...
kernigh (George Koehler)
12:28 AM Revision 0cd7f5fe (git): * vm_core.h: rename macros and make them inline functions.
* rename VM_FRAME_TYPE_FINISH_P() to VM_FRAME_FINISHED_P().
* rename VM_FRAME_TYPE_BMETHOD_P() to VM_FRAME_BMETHOD_P().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55803 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
ko1 (Koichi Sasada)
12:16 AM Revision 1cc78637 (git): * 2016-08-03
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55802 b2dd03c8-39d4-4d8f-98ff-823fe69b080e svn[bot]
12:16 AM Revision e3120e1a (git): * vm_core.h: introduce VM_FRAME_FLAG_CFRAME to represent cfp->iseq
type.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55801 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
ko1 (Koichi Sasada)
 

Also available in: Atom