[#40528] [Feature #2833] 絵文字エンコーディングの提案 — Kenta Murata <redmine@...>
Feature #2833: 絵文字エンコーディングの提案
まつもと ゆきひろです
=1B$B$`$i$?$G$9!#=1B(B
GyRCOjQhOUxaJEg/PSQ3JF4kOSEjGyhCCgpSYWlscxskQiROGyhCanBtb2JpbGUbJEIkSCQkJCYl
チケット #2833 が更新されました。 (by Yui NARUSE)
=1B$B$`$i$?$G$9!#=1B(B
遠藤です。
遠藤です。
> Feature #2833: 絵文字エンコーディングの提案
[#40573] [bug:1.8] ossl_ssl_session.c:110: warning: implicit declaration of function 'TIMET2NUM' — Tanaka Akira <akr@...>
Ruby 1.8 で、以下の警告が増えています。
2010/3/7 Tanaka Akira <akr@fsij.org>:
[#40597] Re: [ruby-list:46898] 重複組合せは組込みにならないのでしょうか? — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
きしもとです
まつもと ゆきひろです
遠藤です。
> 同様に、repeated_permutation/combination のデフォルト引数にも反対
まつもと ゆきひろです
[#40614] [Bug #2956] segfault — Tomoki MAEDA <redmine@...>
Bug #2956: segfault
[#40623] Enumerable#interleave — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
2010年3月13日22:44 Yukihiro Matsumoto <matz@ruby-lang.org>:
まつもと ゆきひろです
2010年3月14日0:04 Yukihiro Matsumoto <matz@ruby-lang.org>:
まつもと ゆきひろです
[#40641] [Bug #2965] method `===' called on hidden T_STRING object (NotImplementedError) — Kenta Murata <redmine@...>
Bug #2965: method `===' called on hidden T_STRING object (NotImplementedError)
チケット #2965 が更新されました。 (by Shyouhei Urabe)
[#40643] draft of 1.9.2 release schedule — Yusuke ENDOH <mame@...>
Yugui さん、
[#40649] [Feature #2968] 数値の正負を返すメソッド — Yui NARUSE <redmine@...>
Feature #2968: 数値の正負を返すメソッド
チケット #2968 が更新されました。 (by Yui NARUSE)
> チケット #2968 が更新されました。 (by Yui NARUSE)
成瀬です。
> 成瀬です。
[#40650] [Feature #2969] String#to_f が -h.hhh±pd を解釈できるように — Yui NARUSE <redmine@...>
Feature #2969: String#to_f が -h.hhh±pd を解釈できるように
質問ですが、この形式は入力だけでなく、なんらかの方法で出力でも利用でき
成瀬です。
> String#to_f は従来から指数表記を許していたので、
成瀬です。
> to_i がデフォルトで prefix を見ないのは、0377 のような、
成瀬です。
> 先のパッチの対象関数が ruby_strtod である通り、
成瀬です。
> strtod(3) の解釈対象に含まれていない 2 進や 8 進を否定することが、
(2010/03/26 3:05), Tadayoshi Funaba wrote:
> なぜ同じなのでしょう。
(2010/03/26 4:02), Tadayoshi Funaba wrote:
>> strtod(3) を参考にしたり、影響されたりすることは普通にあるとは思います
(2010/03/27 18:19), KOSAKI Motohiro wrote:
えぐち@エスアンドイーです
(2010/03/27 20:26), EGUCHI Osamu wrote:
> つまり、ふなばさんは 16 進よりも 2 進や 8 進形式が好みであるところ、
まつもと ゆきひろです
[#40672] URI methods for application/x-www-form-urlencoded — Tanaka Akira <akr@...>
最近、成瀬さんが追加した URI.encode_www_form など、
[#40695] keiju, please check tickets assigned to you — Yusuke ENDOH <mame@...>
いしつかさん
けいじゅ@いしつかです.
いしつかさん
けいじゅ@いしつかです.
遠藤です。
[#40735] [Bug #2995] TestHash#test_recursive_check fails — Shugo Maeda <redmine@...>
Bug #2995: TestHash#test_recursive_check fails
[#40746] [Bug #1031] -U オプションの説明が --help にない — Yusuke Endoh <redmine@...>
チケット #1031 が更新されました。 (by Yusuke Endoh)
前田です。
[#40779] [Feature #3018] UNINITIALIZED_VAR() マクロの導入 — Motohiro KOSAKI <redmine@...>
Feature #3018: UNINITIALIZED_VAR() マクロの導入
まつもと ゆきひろです
> |Linuxではこの問題にたいして以下のようなマクロで解決しており、同様の手法を導入したいと
まつもと ゆきひろです
本題じゃないですが、
[#40805] Improvement of Fiber switching cost with system dependent way — SASADA Koichi <ko1@...>
ささだです.
こんにちは、なかむら(う)です。
[#40832] Process.daemon() returns -1 on failure ifndef HAVE_DAEMON — "Akinori MUSHA" <knu@...>
Process.daemon() 失敗時の挙動が、 HAVE_DAEMON 定義時と非定義時
2010年3月29日19:52 Akinori MUSHA <knu@idaemons.org>:
> 2010年3月29日19:52 Akinori MUSHA <knu@idaemons.org>:
[#40833] [Bug: trunk] Fiber transfer limitation — SASADA Koichi <ko1@...>
ささだです.
[#40855] revert 1.9 \w limitation to ASCII — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#40884] [Feature #3065] [TypedData] という名前について — Tadashi Saito <redmine@...>
Feature #3065: [TypedData] という名前について
[ruby-dev:40603] 1.9のrequireが遅い
前田です。
またYehuda Katz情報なのですが、Ruby 1.9で、$:の要素が多いとrequireが遅いようです。
defiant:build$ cat t.rb
1000.times {
$:.push "/opt/ruby/1.8"
}
1000.times do
require "rational"
end
defiant:build$ time ruby -v t.rb
ruby 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
ruby -v t.rb 0.07s user 0.08s system 90% cpu 0.164 total
defiant:build$ time ruby-trunk -v t.rb
ruby 1.9.2dev (2010-03-10 trunk 26866) [i686-linux]
lib/rational.rb is deprecated
ruby-trunk -v t.rb 3.51s user 1.20s system 99% cpu 4.734 total
この例は極端ですが、Gemパッケージがたくさん入っている状態でRailsを
動かしたりすると、結構影響が大きいそうです。
どうも、rb_get_expanded_load_path()が何度も呼ばれるせいでこんなに
遅いようなのですが、$:の中身がすべて絶対パスの時は、expand_pathを
呼ばずにそのまま$:の値を使うようにしてはどうでしょうか。
添付のパッチでかなり早くなりました。
defiant:build$ time ./ruby-trunk -v t.rb
ruby 1.9.2dev (2010-03-11 trunk 26868) [i686-linux]
lib/rational.rb is deprecated
./ruby-trunk -v t.rb 0.28s user 0.01s system 99% cpu 0.293 total
$:に相対パスが入っているとだめですが、幸い1.9では$:から.が削除されて
いますし、require_relativeも使えるので$:に相対パスを入れたいというニーズ
もあまりないんじゃないかと思っています。
--
Shugo Maeda
Attachments (1)
diff --git a/file.c b/file.c
index 50516ad..47f864b 100644
--- a/file.c
+++ b/file.c
@@ -2687,8 +2687,6 @@ ntfs_tail(const char *path)
(void)(extenc || (extenc = rb_default_external_encoding())),\
rb_enc_associate(result, extenc))
-static int is_absolute_path(const char*);
-
VALUE
rb_home_dir(const char *user, VALUE result)
{
@@ -2802,7 +2800,7 @@ file_expand_path(VALUE fname, VALUE dname, int abs_mode, VALUE result)
}
}
#endif
- else if (!is_absolute_path(s)) {
+ else if (!rb_is_absolute_path(s)) {
if (!NIL_P(dname)) {
file_expand_path(dname, Qnil, abs_mode, result);
BUFINIT();
@@ -4698,8 +4696,8 @@ rb_file_const(const char *name, VALUE value)
rb_define_const(rb_mFConst, name, value);
}
-static int
-is_absolute_path(const char *path)
+int
+rb_is_absolute_path(const char *path)
{
#ifdef DOSISH_DRIVE_LETTER
if (has_drive_letter(path) && isdirsep(path[2])) return 1;
@@ -4729,7 +4727,7 @@ path_check_0(VALUE path, int execpath)
const char *p0 = StringValueCStr(path);
char *p = 0, *s;
- if (!is_absolute_path(p0)) {
+ if (!rb_is_absolute_path(p0)) {
char *buf = my_getcwd();
VALUE newpath;
@@ -4866,7 +4864,7 @@ rb_find_file_ext_safe(VALUE *filep, const char *const *ext, int safe_level)
expanded = 1;
}
- if (expanded || is_absolute_path(f) || is_explicit_relative(f)) {
+ if (expanded || rb_is_absolute_path(f) || is_explicit_relative(f)) {
if (safe_level >= 1 && !fpath_check(fname)) {
rb_raise(rb_eSecurityError, "loading from unsafe path %s", f);
}
@@ -4937,7 +4935,7 @@ rb_find_file_safe(VALUE path, int safe_level)
expanded = 1;
}
- if (expanded || is_absolute_path(f) || is_explicit_relative(f)) {
+ if (expanded || rb_is_absolute_path(f) || is_explicit_relative(f)) {
if (safe_level >= 1 && !fpath_check(path)) {
rb_raise(rb_eSecurityError, "loading from unsafe path %s", f);
}
diff --git a/include/ruby/intern.h b/include/ruby/intern.h
index ebbdd71..f9ee9dc 100644
--- a/include/ruby/intern.h
+++ b/include/ruby/intern.h
@@ -366,6 +366,7 @@ char *rb_path_skip_prefix(const char *);
char *rb_path_last_separator(const char *);
char *rb_path_end(const char *);
VALUE rb_file_directory_p(VALUE,VALUE);
+int rb_is_absolute_path(const char *);
/* gc.c */
void ruby_set_stack_size(size_t);
NORETURN(void rb_memerror(void));
diff --git a/load.c b/load.c
index 7551b6b..75c0c19 100644
--- a/load.c
+++ b/load.c
@@ -37,10 +37,19 @@ VALUE
rb_get_expanded_load_path(void)
{
VALUE load_path = rb_get_load_path();
- VALUE ary = rb_ary_new2(RARRAY_LEN(load_path));
+ VALUE ary;
long i;
for (i = 0; i < RARRAY_LEN(load_path); ++i) {
+ char *s = StringValuePtr(RARRAY_PTR(load_path)[i]);
+ if (!rb_is_absolute_path(s))
+ goto relative_path_found;
+ }
+ return load_path;
+
+ relative_path_found:
+ ary = rb_ary_new2(RARRAY_LEN(load_path));
+ for (i = 0; i < RARRAY_LEN(load_path); ++i) {
VALUE path = rb_file_expand_path(RARRAY_PTR(load_path)[i], Qnil);
rb_str_freeze(path);
rb_ary_push(ary, path);