Project

General

Profile

Issues

Filters

Apply Clear

# Project Tracker Status Subject Assignee Updated
10585 Ruby master Feature Open struct: speedup struct.attr = v for first 10 attributes and struct[:attr] for big structs 06/30/2015 08:18 PM Actions
11429 Ruby master Feature Open Local variable assignment via regex === 08/10/2015 11:26 PM Actions
12673 Ruby master Feature Open Performance improvement to Prime.prime? in prime.rb 08/13/2016 08:57 PM Actions
14128 Ruby master Feature Open Introduce Hash#delete default value matz (Yukihiro Matsumoto) 11/25/2017 04:41 PM Actions
10181 Ruby master Feature Open New method File.openat() 10/22/2015 12:12 PM Actions
7384 Ruby master Feature Open Rename #each_with_object to #each_with 12/25/2017 06:15 PM Actions
12648 Ruby master Feature Open `Enumerable#sort_by` with descending option 10/05/2017 10:24 AM Actions
12737 Ruby master Feature Open Module#defined_refinements 09/08/2016 05:38 AM Actions
8184 Ruby master Feature Open Avoid the creation of meaningless ranges (nil, false, true) 03/29/2013 11:16 PM Actions
10505 Ruby master Feature Open [PATCH 2/n] 同相条件を扱いたい./Object#eql? with block. (ja/en) 11/13/2014 05:52 PM Actions
10498 Ruby master Feature Open Make `loop` yield a counter matz (Yukihiro Matsumoto) 01/05/2018 09:01 PM Actions
12928 Ruby master Feature Open Use socket conect_timeout in net stdlib for open_timeout 12/02/2019 09:20 PM Actions
13696 Ruby master Feature Open Add exchange and noreplace options to File.rename Glass_saga (Masaki Matsushita) 12/01/2017 04:34 PM Actions
7795 Ruby master Feature Open Symbol.defined? and/or to_existing_symbol matz (Yukihiro Matsumoto) 12/25/2017 06:15 PM Actions
5478 Ruby master Feature Open import Set into core, add syntax 12/11/2015 09:20 AM Actions
10042 Ruby master Feature Open Deprecate postfix rescue syntax for removal in 3.0 matz (Yukihiro Matsumoto) 02/06/2018 08:53 PM Actions
12116 Ruby master Feature Open `Fixnum#divmod`, `Bignum#divmod` with multiple arguments 03/21/2016 02:00 PM Actions
8046 Ruby master Feature Open allow Object#extend to take a block 12/25/2017 06:15 PM Actions
10663 Ruby master Feature Open Consider adding support for String input to File. methods 01/05/2015 12:47 AM Actions
10318 Ruby master Feature Open [PATCH 0/n] Let underscore be positionally matched arg to omit binding obvious variable. 11/05/2014 09:29 PM Actions
12282 Ruby master Feature Open Hash#dig! for repeated applications of Hash#fetch 12/28/2018 05:31 AM Actions
7986 Ruby master Feature Open Custom case statement comparison method 03/02/2013 05:59 AM Actions
10474 Ruby master Feature Open [PATCH 1/1] Refactoring math.c (Combined some macros into one macro) 11/10/2014 10:29 PM Actions
14766 Ruby master Feature Open Indicate `find_all` and `select` methods are aliases. 05/16/2018 11:36 PM Actions
12211 Ruby master Feature Open introduce Date#first_of_month and Date#last_of_month 03/26/2016 12:58 AM Actions
10391 Ruby master Feature Open Provide %eISO-8859-1'string \xAA literal' string literals with explicit encoding 10/28/2014 10:27 AM Actions
15734 Ruby master Feature Open Parsing of shorthand IPv4 addresses compatible with inet_aton 03/28/2019 05:50 PM Actions
11923 Ruby master Feature Open Put Struct accessors into separate module to allow redefining them in Struct.new's block 05/17/2016 06:37 AM Actions
12350 Ruby master Feature Open Introduce Array#find! that raises an error if element not found 07/19/2016 06:20 AM Actions
12334 Ruby master Feature Open Final/Readonly Support for Fields / Instance Variables 07/20/2016 01:49 AM Actions
10423 Ruby master Feature Open [PATCH] opt_str_lit*: avoid literal string allocations ko1 (Koichi Sasada) 01/05/2018 09:01 PM Actions
10426 Ruby master Feature Open A predicate to express congruence 11/14/2014 02:11 AM Actions
8663 Ruby master Feature Open Officialy alias ArgumentError to ArgError matz (Yukihiro Matsumoto) 08/09/2013 07:42 PM Actions
12194 Ruby master Feature Open File.dirname optional parameter 03/20/2016 04:15 PM Actions
15590 Ruby master Feature Open Add dups to Array to find duplicates 02/08/2019 10:00 AM Actions
10425 Ruby master Feature Open A predicate method to tell if a number is near another 10/26/2014 01:47 AM Actions
12986 Ruby master Feature Open HTTP/request basic_auth context should be switched 06/24/2019 10:38 PM Actions
10503 Ruby master Feature Open introduce InvalidPercentEncoding error for failed URI parsing 01/05/2018 09:01 PM Actions
10463 Ruby master Feature Open :~@ and :!@ are not parsed correctly matz (Yukihiro Matsumoto) 09/02/2019 06:30 AM Actions
7745 Ruby master Feature Open lib/observer.rb: Observers are compared by identity nobu (Nobuyoshi Nakada) 12/25/2017 06:15 PM Actions
10455 Ruby master Feature Open [PATCH 0/n] Combine interface for creating new matrix 10/29/2014 10:17 PM Actions
8404 Ruby master Feature Open virtual, hooked or read only global variabels for ruby only code too 05/14/2013 09:19 PM Actions
8564 Ruby master Feature Open Extend Module#attr... methods 02/05/2015 07:39 PM Actions
10255 Ruby master Feature Open Math.log: check domain of base argument 01/27/2015 02:32 AM Actions
12086 Ruby master Feature Open using: option for instance_eval etc. 09/09/2016 03:08 AM Actions
10499 Ruby master Feature Open Eliminate implicit magic in Proc.new and Kernel#proc matz (Yukihiro Matsumoto) 12/08/2014 08:44 PM Actions
10378 Ruby master Feature Open [PATCH 0/3] It's better (1 + 0i).real? return true 01/05/2018 09:01 PM Actions
7748 Ruby master Feature Open Contextual send matz (Yukihiro Matsumoto) 12/10/2013 04:31 AM Actions
7704 Ruby master Feature Open Add a list of enabled (experimental) language features. matz (Yukihiro Matsumoto) 12/25/2017 06:15 PM Actions
10404 Ruby master Feature Open Allow individual finalizers to be removed with ObjectSpace.undefine_finalizer matz (Yukihiro Matsumoto) 10/20/2014 08:14 AM Actions
8232 Ruby master Feature Open Rudiments of abstract algebra in Ruby matz (Yukihiro Matsumoto) 04/09/2013 01:47 AM Actions
10489 Ruby master Feature Open Add inherit method for clearer and multiple inheritance matz (Yukihiro Matsumoto) 11/24/2014 10:21 AM Actions
10552 Ruby master Feature Open [PATCH] Add Enumerable#frequencies and Enumerable#relative_frequencies 11/30/2014 11:56 AM Actions
11690 Ruby master Feature Open Update Hash during multiple assignment 12/10/2015 12:26 PM Actions
10386 Ruby master Feature Open [PATCH 3/3] There is little possibility of using m_sqrt at complex.c 11/10/2014 11:10 PM Actions
10701 Ruby master Feature Open Class:Array 2 New methods 01/08/2015 07:21 AM Actions
13890 Ruby master Feature Open Allow a regexp as an argument to 'count', to count more interesting things than single characters 12/30/2017 04:37 AM Actions
10574 Ruby master Feature Open Add String#lchomp and String.lchomp! matz (Yukihiro Matsumoto) 12/15/2014 04:34 PM Actions
7702 Ruby master Feature Open Remove Proc#binding matz (Yukihiro Matsumoto) 07/15/2019 07:39 PM Actions
12134 Ruby master Feature Open Comparison between `true` and `false` 03/15/2016 12:41 PM Actions
13211 Ruby master Feature Open Hash#delete taking a splat 04/29/2017 08:41 PM Actions
10366 Ruby master Feature Open New inspection form for rational 10/11/2014 12:50 AM Actions
12077 Ruby master Feature Open Consolidate SSLSocket interface with TCPSocket 05/17/2016 06:37 AM Actions
8223 Ruby master Feature Open Make Matrix more omnivorous. marcandre (Marc-Andre Lafortune) 04/09/2013 03:42 AM Actions
7708 Ruby master Feature Open support for patches list 12/25/2017 06:15 PM Actions
12165 Ruby master Feature Open Hash#first, Hash#last 03/12/2016 10:55 AM Actions
7654 Ruby master Feature Open Add optional code block to IO::readlines matz (Yukihiro Matsumoto) 12/25/2017 06:15 PM Actions
10343 Ruby master Feature Open Postfix notations for `when` and `else` inside `case` statement 10/08/2014 05:25 PM Actions
10683 Ruby master Feature Open fix inconsistent behavior of Kernel.Hash() 01/02/2015 06:00 AM Actions
7611 Ruby master Feature Open Focal method for all loads/requires matz (Yukihiro Matsumoto) 12/25/2017 06:15 PM Actions
10332 Ruby master Feature Open Rational literal for mixed fractions 10/06/2014 02:55 PM Actions
10729 Ruby master Feature Open Array method to subtract in place 01/11/2015 02:29 PM Actions
10331 Ruby master Feature Open String#to_r to recognize negative denominators 10/06/2014 02:44 PM Actions
10726 Ruby master Feature Open [PATCH 4/4] * New methods: Set#power 01/28/2015 07:48 AM Actions
14394 Ruby master Feature Open Class.descendants 01/25/2018 10:25 PM Actions
8895 Ruby master Feature Open Destructuring Assignment for Hash 08/09/2016 05:42 PM Actions
10327 Ruby master Feature Open Bool/False/True module for '===' 10/15/2014 02:42 PM Actions
14404 Ruby master Feature Open Adding writev support to IO#write_nonblock 01/29/2018 12:29 AM Actions
14869 Ruby master Feature Open Proposal to add Hash#=== 08/09/2018 04:03 AM Actions
10308 Ruby master Feature Open Pipes in Ruby 09/30/2014 11:21 PM Actions
14129 Ruby master Feature Open Feature Request: sockets - add support for recvmmsg 12/12/2017 08:35 AM Actions
9185 Ruby master Feature Open Add alias_class_method or class_alias functionality 01/05/2018 09:00 PM Actions
7546 Ruby master Feature Open Change behavior of `Array#slice` for an argument of `Range` class matz (Yukihiro Matsumoto) 12/13/2012 06:36 AM Actions
12173 Ruby master Feature Open `Time#till_now` 03/16/2016 10:19 AM Actions
10797 Ruby master Feature Open `inherit` parameter for `..._defined?` methods in Module 01/28/2015 10:27 PM Actions
10949 Ruby master Feature Open Time is WB unprotected 07/23/2015 05:55 PM Actions
10305 Ruby master Feature Open Method for resolving all autoload statements / Add warning on autoload when used with chroot 09/29/2014 02:05 PM Actions
11670 Ruby master Feature Open Show warning to make nested def obsolete nobu (Nobuyoshi Nakada) 11/09/2015 07:40 AM Actions
7545 Ruby master Feature Open Make Range act as a "lazy ordered set" 12/12/2012 06:37 AM Actions
11963 Ruby master Feature Open Add a simple static web server to `ruby` 01/07/2016 10:12 AM Actions
9553 Ruby master Feature Open Make argument validation routine of a method an object 02/22/2014 07:58 AM Actions
10869 Ruby master Feature Open Add support for option to pre-compile Ruby files 02/23/2015 11:08 AM Actions
10882 Ruby master Feature Open Provide Levenshtein distance implementation as part of stdlib 02/26/2015 03:56 PM Actions
10879 Ruby master Feature Open UnboundMethod#to_proc 02/21/2015 07:56 PM Actions
14574 Ruby master Feature Open percent literals and binary encoding strings 03/04/2018 07:38 AM Actions
10880 Ruby master Feature Open Subclassing Array from Enumerator 02/22/2015 03:13 PM Actions
12589 Ruby master Feature Open VM performance improvement proposal 02/20/2018 05:00 AM Actions
14669 Ruby master Feature Open Regexp does not expose the amount of capture groups. 04/08/2018 11:11 AM Actions
10883 Ruby master Feature Open Passing a block to itself 10/11/2015 04:37 AM Actions
11122 Ruby master Feature Open exception-free non-blocking Queue/SizedQueue operations matz (Yukihiro Matsumoto) 05/06/2015 08:53 PM Actions
8598 Ruby master Feature Open Expose information whether a timezone offset has been explicitly set on DateTime object 07/03/2013 08:27 PM Actions
10251 Ruby master Feature Open URI: Support wildcards (globbing) in no_proxy 12/16/2015 05:22 AM Actions
9095 Ruby master Feature Open Allow `Symbol#to_proc` to take arguments 11/10/2013 04:25 AM Actions
10240 Ruby master Feature Open String#to_a 09/16/2014 12:13 AM Actions
8614 Ruby master Feature Open Object#singleton_class with a block 07/12/2013 10:14 AM Actions
12625 Ruby master Feature Open TypeError.assert, ArgumentError.assert 08/10/2016 04:36 AM Actions
11415 Ruby master Feature Open autoload with a Proc 10/21/2015 08:38 PM Actions
15477 Ruby master Feature Open Proc#arity returns -1 for composed lambda Procs of known arguments 03/15/2019 12:39 PM Actions
14278 Ruby master Feature Open Ambiguous Exception for OpenSSL::HMAC.digest 06/20/2019 11:36 PM Actions
10863 Ruby master Feature Open allow protected class methods to be callable from instance methods 04/01/2015 06:11 PM Actions
9145 Ruby master Feature Open Queue#pop(true) return nil if empty instead of raising ThreadError 01/01/2018 07:41 PM Actions
10548 Ruby master Feature Open remove callcc (Callcc is now going obsoleted. Please use Fiber.) 12/31/2018 11:28 AM Actions
12378 Ruby master Feature Open arbitrary size Random.new_seed 05/13/2016 04:44 PM Actions
10177 Ruby master Feature Open Hash#has_key? and Hash#has_value? should be deprecated 09/19/2014 06:01 PM Actions
10179 Ruby master Feature Open Net::HTTP::Get.new("https://google.com").basic_auth(user_name, password) should throw exception stating the need to set use_ssl to true 09/13/2015 03:25 AM Actions
10176 Ruby master Feature Open Document how to perform net/http calls in parallel 08/27/2014 10:46 PM Actions
10168 Ruby master Feature Open Native Object#inspect method should single quote strings that don't need to be double quoted 01/01/2016 08:27 PM Actions
14955 Ruby master Feature Open [PATCH] gc.c: use MADV_FREE to release most of the heap page body 08/14/2018 03:04 AM Actions
10589 Ruby master Feature Open [TracePoint API] Make THREAD_{BEGIN, END} events return some context information 12/11/2014 04:27 PM Actions
7220 Ruby master Feature Open Separate IO#dup, StringIO#initialize_copy from dup(2) 10/27/2012 02:23 PM Actions
12226 Ruby master Feature Open Dir.home with valid named user raises ArgumentError on Windows 05/08/2016 10:06 AM Actions
14580 Ruby master Feature Open Hash#store accepts a block 03/08/2018 11:59 AM Actions
12996 Ruby master Feature Open Optimize Range#=== 05/17/2017 02:14 PM Actions
13048 Ruby master Feature Open Better way to do Regexp.new(Regexp.escape("some string")) 01/20/2017 04:01 AM Actions
10982 Ruby master Feature Open Clarify location of NoMethod error 07/24/2018 02:02 AM Actions
13620 Ruby master Feature Open Simplifying MRI's build system: always make install 07/08/2018 09:41 AM Actions
7082 Ruby master Feature Open Process.kill 0 in windows can return spurious success 12/25/2017 06:15 PM Actions
6817 Ruby master Feature Open Partial application matz (Yukihiro Matsumoto) 12/25/2017 06:15 PM Actions
11361 Ruby master Feature Open proposal for easy method to nil-guard for generated variable name. 02/21/2016 12:01 PM Actions
12094 Ruby master Feature Open parameterized property assignment: o.prop(arg) = 1 03/17/2016 07:05 AM Actions
11796 Ruby master Feature Open [PATCH] Refactor reduce call get_stat() 12/09/2015 02:33 PM Actions
11262 Ruby master Feature Open Make more objects behave like "Functions" 06/24/2016 08:43 AM Actions
7149 Ruby master Feature Open Constant magic for everyone. matz (Yukihiro Matsumoto) 12/25/2017 06:15 PM Actions
11786 Ruby master Feature Open [PATCH] micro-optimize case dispatch even harder 12/09/2015 09:58 AM Actions
10051 Ruby master Feature Open nbsp isn't remove with trim 07/17/2014 08:02 AM Actions
10927 Ruby master Feature Open [PATCH] Add default empty string to string replacements 03/04/2015 10:49 AM Actions
12901 Ruby master Feature Open Anonymous functions without scope lookup overhead 03/03/2017 08:40 AM Actions
14197 Ruby master Feature Open `Enumerable#{select,reject}` accept a pattern argument 06/19/2018 10:56 AM Actions
10000 Ruby master Feature Open format width and precision with symbol hash 07/01/2014 01:25 AM Actions
12523 Ruby master Feature Open `Object#values_at` 06/28/2016 01:52 AM Actions
11517 Ruby master Feature Open Queue enhancement - conditional pop matz (Yukihiro Matsumoto) 09/17/2015 09:02 PM Actions
11987 Ruby master Feature Open daemons can't show the backtrace of rb_bug 01/13/2016 10:58 AM Actions
14973 Ruby master Feature Open Proposal of percent literal to expand Hash 01/30/2019 07:13 PM Actions
6733 Ruby master Feature Open New inspect framework 11/18/2012 12:16 PM Actions
11634 Ruby master Feature Open [PATCH] variable.c (rb_global_tbl): convert to id_table 10/29/2015 08:11 PM Actions
8921 Ruby master Feature Open Allow select, reject, etc to accept a regex 03/03/2016 04:38 AM Actions
8951 Ruby master Feature Open Please add a hash-to-hash alternative of the map method to Hash 06/16/2014 03:28 PM Actions
9953 Ruby master Feature Open set_trace_func values which could be frozen or symbols 06/19/2014 10:44 PM Actions
11428 Ruby master Feature Open system/exec/etc. should to_s their argument to restore Pathname functionality as it was in 1.8 11/06/2016 02:17 AM Actions
15353 Ruby master Feature Open Support client certificates with TLS 1.3 and OpenSSL 1.1.1 01/16/2019 04:32 PM Actions
9929 Ruby master Feature Open add with_default method to Hash 06/11/2014 12:08 AM Actions
14643 Ruby master Feature Open Remove problematic separator '\0' of Dir.glob and Dir.[] 09/02/2019 03:06 AM Actions
9918 Ruby master Feature Open Exception#cause should be shown in output and #inspect 07/13/2015 02:32 PM Actions
8987 Ruby master Feature Open map/collect extension which handles arguments 01/05/2018 09:00 PM Actions
15352 Ruby master Feature Open Mandatory block parameters 11/28/2018 12:19 PM Actions
11723 Ruby master Feature Open CGI library should give access to raw request body 11/20/2015 07:06 PM Actions
9909 Ruby master Feature Open why shouldn't constant lookup check the nesting of module's name 06/07/2014 02:18 AM Actions
11758 Ruby master Feature Open Add keyword assignment syntax matz (Yukihiro Matsumoto) 02/15/2016 03:31 AM Actions
12083 Ruby master Feature Open $_ and $~ by Binding#local_variable_{get,set} 02/18/2016 04:35 AM Actions
11665 Ruby master Feature Open Support nested functions for better code organization 11/16/2016 03:06 PM Actions
9992 Ruby master Feature Open Access Modifiers (Internal Interfaces) 12/18/2017 03:04 PM Actions
11735 Ruby master Feature Open Porting String#squish and String#squish! from Ruby on Rails' Active Support matz (Yukihiro Matsumoto) 06/24/2016 08:02 AM Actions
9871 Ruby master Feature Open load a ruby library which doesn't have extension 05/28/2014 10:07 AM Actions
12129 Ruby master Feature Open syntactic sugar for dynamic method dispatch `object_expression:method_name_expression(1, 2)` 03/14/2016 01:35 AM Actions
13263 Ruby master Feature Open Add companion integer nth-root method to recent Integer#isqrt 04/05/2017 12:49 AM Actions
12586 Ruby master Feature Open Hash#sample 08/10/2016 04:08 AM Actions
12858 Ruby master Feature Open Supporting batch-requiring of files in ruby 10/23/2016 08:05 AM Actions
12084 Ruby master Feature Open `Class#instance` 03/09/2016 09:41 PM Actions
12843 Ruby master Feature Open Proposal to add a new method to class File in order to determine the name of the file without any suffix 10/17/2016 08:56 AM Actions
13314 Ruby master Feature Open dig= 03/14/2017 12:55 PM Actions
14932 Ruby master Feature Open Dynamically adjust method cache size at runtime 07/22/2018 10:45 PM Actions
9807 Ruby master Feature Open String.new with block 05/07/2014 05:54 AM Actions
9784 Ruby master Feature Open Alias URI#merge to URI#join 04/29/2014 05:42 AM Actions
11597 Ruby master Feature Open Add Linux-specific setfsuid(2)/setfsgid(2) 10/15/2015 10:08 PM Actions
10851 Ruby master Feature Open Introduce Regexp#fetch 02/13/2015 11:15 AM Actions
11630 Ruby master Feature Open possibility to serialize Proc or Lambda 11/23/2015 01:34 PM Actions
13763 Ruby master Feature Open Trigger "unused variable warning" for unused variables in parameter lists 11/28/2017 04:49 AM Actions
11629 Ruby master Feature Open Implement Enhanced Mail System Status Codes (rfc1893) 10/28/2015 10:38 AM Actions
10793 Ruby master Feature Open Infrastructure/Release-Management: Sign releases 02/12/2016 09:20 PM Actions
6869 Ruby master Feature Open Do not treat `_` parameter exceptionally matz (Yukihiro Matsumoto) 04/13/2014 08:50 AM Actions
11583 Ruby master Feature Open Add File#unlink 10/12/2015 05:40 AM Actions
12064 Ruby master Feature Open Make creation of enc/unicode/casefold.h automatic again nobu (Nobuyoshi Nakada) 02/12/2016 06:13 AM Actions
12482 Ruby master Feature Open ArgumentError.new(nil) should give a better description 06/16/2016 04:18 AM Actions
14919 Ruby master Feature Open Add String#byteinsert 07/18/2018 01:29 PM Actions
9667 Ruby master Feature Open Optimization of __FILE__ and __dir__ 03/25/2014 04:48 AM Actions
7106 Ruby master Feature Open FileUtils.touch should allow touching the symlink itself rather than the file the link points to 12/25/2017 06:15 PM Actions
12059 Ruby master Feature Open `Array#single?`, `Hash#single?` 02/10/2016 04:02 AM Actions
11390 Ruby master Feature Open Allow symbols starting with numbers matz (Yukihiro Matsumoto) 08/14/2015 05:23 AM Actions
15112 Ruby master Feature Open Introducing the short form of `STDERR.puts expr.inspect`. matz (Yukihiro Matsumoto) 10/12/2018 02:02 AM Actions
9347 Ruby master Feature Open Accept non callable argument to detect marcandre (Marc-Andre Lafortune) 01/05/2018 09:00 PM Actions
9585 Ruby master Feature Open Add Object#in? to make ruby easier to read 03/15/2014 04:49 PM Actions
11475 Ruby master Feature Open AST transforms 08/21/2015 11:14 AM Actions
9635 Ruby master Feature Open Map a hash directly to a hash 03/13/2014 01:29 PM Actions
12047 Ruby master Feature Open Set#=== (aliased to include?) 02/03/2016 12:18 AM Actions
8206 Ruby master Feature Open Should Ruby core implement String#blank? 04/28/2016 02:05 PM Actions
9522 Ruby master Feature Open Float( "NaN" ), Float( "Infinity" ) 02/16/2014 05:36 AM Actions
9515 Ruby master Feature Open IO.each (and perhaps CSV.each) 02/12/2014 04:17 PM Actions
11868 Ruby master Feature Open Proposal for RubyVM::InstructionSequence.compile to return an object containing the syntax error information currently written to STDERR 04/21/2016 05:49 AM Actions
9043 Ruby master Feature Open Add String#f method as shortcut for #freeze matz (Yukihiro Matsumoto) 01/05/2018 09:00 PM Actions
11817 Ruby master Feature Open map.parallel 12/15/2015 04:28 AM Actions
(401-600/1693) Per page: 50, 100, 200, 500

Also available in: Atom CSV PDF