Toward a Design for Ruby

A8e44ce1b57c2689d5a7172d15df42b5?s=47 brixen
November 01, 2012

Toward a Design for Ruby

RubyConf 2012 talk about the design of Ruby.

A8e44ce1b57c2689d5a7172d15df42b5?s=128

brixen

November 01, 2012
Tweet

Transcript

  1. Design 5PXBSEB GPS3VCZ #SJBO'PSE !CSJYFO 3VCZ$POG Thursday, November 1, 2012

  2. — I Ruby Thursday, November 1, 2012

  3. Thursday, November 1, 2012

  4. Thursday, November 1, 2012

  5. Thursday, November 1, 2012

  6. Thursday, November 1, 2012

  7. Thursday, November 1, 2012

  8. Thursday, November 1, 2012

  9. Thursday, November 1, 2012

  10. Motivation Thursday, November 1, 2012

  11. Thursday, November 1, 2012

  12. Thursday, November 1, 2012

  13. Java Thursday, November 1, 2012

  14. Javascript Thursday, November 1, 2012

  15. Clojure Thursday, November 1, 2012

  16. Ruby is the biggest threat to the viability of Ruby

    Thursday, November 1, 2012
  17. Community Thursday, November 1, 2012

  18. Thursday, November 1, 2012

  19. Politeness is not respect Thursday, November 1, 2012

  20. Criticism is not insult Thursday, November 1, 2012

  21. I am NOT my code Thursday, November 1, 2012

  22. Ruby is... Thursday, November 1, 2012

  23. Matz’s Ruby Implementation Thursday, November 1, 2012

  24. Thursday, November 1, 2012

  25. Thursday, November 1, 2012

  26. Thursday, November 1, 2012

  27. Thursday, November 1, 2012

  28. Mystery Ruby Thursday, November 1, 2012

  29. Ruby is a programming language Thursday, November 1, 2012

  30. Many Ruby semantics are accidents of MRI implementation Thursday, November

    1, 2012
  31. MRI is... Thursday, November 1, 2012

  32. an implementation of Ruby Thursday, November 1, 2012

  33. Thursday, November 1, 2012

  34. Thursday, November 1, 2012

  35. Thursday, November 1, 2012

  36. Thursday, November 1, 2012

  37. Thursday, November 1, 2012

  38. Ghosts of Xmas Past Thursday, November 1, 2012

  39. 1.8 to 1.9 Thursday, November 1, 2012

  40. 7 years Thursday, November 1, 2012

  41. VM Encoding IO Threads APIs Thursday, November 1, 2012

  42. Why won’t you upgrade? Thursday, November 1, 2012

  43. Ghosts of Xmas Present Thursday, November 1, 2012

  44. Encoding Thursday, November 1, 2012

  45. Every object has an encoding Thursday, November 1, 2012

  46. String Symbol Regexp Thursday, November 1, 2012

  47. ENCODING_SET(obj,i) Thursday, November 1, 2012

  48. $ irb 1.9.3p286 :001 > a = "abc".force_encoding "ascii-8bit" =>

    "abc" 1.9.3p286 :002 > b = "\xff".force_encoding "us-ascii" => "\xFF" 1.9.3p286 :003 > a + b => "abc\xFF" Thursday, November 1, 2012
  49. $ irb 1.9.3p286 :001 > a = "\xFF".force_encoding 'ascii-8bit' =>

    "\xFF" 1.9.3p286 :002 > b = "\x98".force_encoding 'us-ascii' => "\x98" 1.9.3p286 :003 > a + b Encoding::CompatibilityError: incompatible character encodings: ASCII-8BIT and US- ASCII Thursday, November 1, 2012
  50. o_O Thursday, November 1, 2012

  51. Ruby 2.0 Thursday, November 1, 2012

  52. stdlib Thursday, November 1, 2012

  53. Ghosts of Xmas Future Thursday, November 1, 2012

  54. Keyword arguments Thursday, November 1, 2012

  55. Thursday, November 1, 2012

  56. Refinements Thursday, November 1, 2012

  57. Thursday, November 1, 2012

  58. The most important challenge is managing complexity Thursday, November 1,

    2012
  59. “Ruby method dispatch is a nightmare” — Koichi Thursday, November

    1, 2012
  60. If one instance of monkey patching is bad, then N

    instances will be fine Thursday, November 1, 2012
  61. ActiveSupport Thursday, November 1, 2012

  62. Lack of tools Thursday, November 1, 2012

  63. Understanding Thursday, November 1, 2012

  64. Fear Thursday, November 1, 2012

  65. There is NO Ruby code that needs refinements Thursday, November

    1, 2012
  66. Implementation burden Thursday, November 1, 2012

  67. Unintended consequences Thursday, November 1, 2012

  68. Actual problems for Ruby Thursday, November 1, 2012

  69. Concurrency Thursday, November 1, 2012

  70. Thursday, November 1, 2012

  71. Celluloid Thursday, November 1, 2012

  72. Memory model Thursday, November 1, 2012

  73. Extension API Thursday, November 1, 2012

  74. Security Thursday, November 1, 2012

  75. freeze taint untrust Thursday, November 1, 2012

  76. Hacking Ruby Thursday, November 1, 2012

  77. Design of Ruby Thursday, November 1, 2012

  78. Ruby design committee Thursday, November 1, 2012

  79. Any proposed change to Ruby MUST have: a. Documentation. b.

    RubySpec coverage. c. Implementation by all members. d. Debate. e. A vote. Thursday, November 1, 2012
  80. Making the case Thursday, November 1, 2012

  81. Bikeshedding Thursday, November 1, 2012

  82. Documentation Thursday, November 1, 2012

  83. RubySpec Thursday, November 1, 2012

  84. Thursday, November 1, 2012

  85. $ bin/mspec library/stringio/gets -fs rubinius 2.0.0dev (1.9.3 580680b8 yyyy-mm-dd JI)

    [x86_64-apple-darwin10.8.0] StringIO#gets when passed [separator] - returns the data read till the next occurence of the passed separator - sets $_ to the read content - accepts string as separator - updates self's lineno by one - returns the next paragraph when the passed separator is an empty String - returns the remaining content starting at the current position when passed nil - tries to convert the passed separator to a String using #to_str StringIO#gets when passed no argument - returns the data read till the next occurence of $/ or till eof - sets $_ to the read content - updates self's position - updates self's lineno - returns nil if self is at the end StringIO#gets when passed [limit] - returns the data read until the limit is met - sets $_ to the read content - updates self's lineno by one - tries to convert the passed limit to an Integer using #to_int - returns a blank string when passed a limit of 0 StringIO#gets when passed [separator] and [limit] - returns the data read until the limit is consumed or the separator is met - sets $_ to the read content - updates self's lineno by one - tries to convert the passed separator to a String using #to_str - does not raise TypeError if passed separator is nil - tries to convert the passed limit to an Integer using #to_int - raises a TypeError if both separator and limit are nil StringIO#gets when in write-only mode - raises an IOError Thursday, November 1, 2012
  86. Implementations Platforms Versions Thursday, November 1, 2012

  87. Debate after implementation Thursday, November 1, 2012

  88. Supporting technology Thursday, November 1, 2012

  89. Thursday, November 1, 2012

  90. ruby-core mixes bugs and features Thursday, November 1, 2012

  91. Using English Thursday, November 1, 2012

  92. 1. Proposal 2. RubySpecs 3. Implementation 4. Discussion 5. Vote

    Summary Thursday, November 1, 2012
  93. Those who make peaceful revolution impossible make violent revolution inevitable

    — JFK Thursday, November 1, 2012
  94. Those who make collaboration impossible make forking inevitable Thursday, November

    1, 2012
  95. Thursday, November 1, 2012

  96. I wonder what a dying language looks like... Thursday, November

    1, 2012
  97. Please don’t let Ruby die Thursday, November 1, 2012

  98. “Matsumoto-san, thank you very much for Ruby.” Thursday, November 1,

    2012
  99. “It is a beautiful, powerful language. It brings many people

    such joy.” Thursday, November 1, 2012
  100. “Your creation is a gift to the world.” Thursday, November

    1, 2012
  101. “Ruby is now over 18 years old. Please set it

    free to fulfill its destiny.” Thursday, November 1, 2012
  102. Thank you Thursday, November 1, 2012

  103. http://www.autotita.com/lamborghini/2010-lamborghini-reventon-vs-panavia-tornado-jet-fighter http://waycoolpics.blogspot.com/2007/08/sharks.html http://lwn.net/Articles/358754/ http://blog.eogn.com/eastmans_online_genealogy/2012/02/github-a-new-tool-for-collaborative-stories-and-articles.html http://www.re-cycledair.com/deploying-django-1-4-to-heroku http://jolicode.com/blog/online-ci-providers-are-the-new-black http://streetfightmag.com/2012/07/09/street-fight-daily-livingsocial-ipo-apples-plans-for-payments/ http://www.pitchenvy.com/gallery/square-pitch-deck/ http://vimeo.com/45719571 http://www.good.is/posts/how-do-you-save-a-dying-language-crowdsource-it

    Image credits http://www.stickermule.com/products/rounded-corner-stickers https://blogs.oracle.com/cinnabar/entry/jruby_meets_duke https://github.com/MagLev http://weblog.rubyonrails.org/2009/8/11/community-highlights-ironruby/ http://en.wikipedia.org/wiki/Unemployment Thursday, November 1, 2012