--- !ruby/object:Gem::Specification
name: rubymirrors
version: !ruby/object:Gem::Version
  version: 0.0.3
  prerelease: 
platform: ruby
authors:
- Tim Felgentreff
autorequire: 
bindir: bin
cert_chain: []
date: 2012-10-25 00:00:00.000000000 Z
dependencies: []
description: ! '## A mirror API for Ruby


  In various [research][p1] [projects][p2] the advantages of having a [mirror

  API][p3] to separate reflection from a language implementation have

  been discussed, and "industry grade" implementations exist for

  [Java][p4] and [C#][p5]. This project aims at providing a number of

  specs and classes that document a mirror API for Ruby. The mirror

  implementation that is part of this project will use only those

  language facilities that are available across Ruby implementations.

  The specs, however, will also test behavior that cannot be provided in

  such a manner. The idea here is that in time, all implementations

  provide their own implementation of the mirror API, and all

  implementations collaborate on this one spec.


  Why do this, you ask? Because Ruby needs tools, and those tools need

  to be written in Ruby. If they are not, then people will be excluded from

  tinkering with their tools, thus impeding innovation. You only have to

  look at Emacs or Smalltalk to see what''s possible when programmers can

  extend their tools, all tools, in a language they feel comfortable

  in. If we have a standard mirror API, all tools that are written **for**

  Ruby, **in** Ruby, can be shared across implementations, while at the same time

  allowing language implementers to use the facilities of their platform

  to provide optimal reflective capabilities without tying them to

  internals.


  [p1]: http://www.cs.virginia.edu/~lorenz/papers/icse03/icse2003.pdf "Pluggable Reflection:
  Decoupling Meta-Interface and Implementation"

  [p2]: http://bracha.org/newspeak-spec.pdf "Newspeak Programming Language Draft Specification,
  Version 0.06, pages 40 onward"

  [p3]: http://www.hpi.uni-potsdam.de/hirschfeld/events/past/media/100105_Bracha_2010_LinguisticReflectionViaMirrors_HPI.mp4
  "Linguistic Reflection Via Mirrors"

  [p4]: http://bracha.org/mirrors.pdf "Mirrors: Design Principles for Meta-level Facilities
  of Object-Oriented Programming Languages"

  [p5]: http://oreilly.com/catalog/progcsharp/chapter/ch18.html "See esp. 18-3, highlighting
  how C# reflection works on assembly rather than VM objects"

'
email:
- timfelgentreff@gmail.com
executables: []
extensions: []
extra_rdoc_files: []
files:
- Gemfile
- README.md
- Rakefile
- lib/abstract_reflection.rb
- lib/abstract_reflection/class_mirror.rb
- lib/abstract_reflection/compiler_mirror.rb
- lib/abstract_reflection/field_mirror.rb
- lib/abstract_reflection/gc_mirror.rb
- lib/abstract_reflection/method_mirror.rb
- lib/abstract_reflection/mirror.rb
- lib/abstract_reflection/object_mirror.rb
- lib/abstract_reflection/stack_frame_mirror.rb
- lib/abstract_reflection/thread_mirror.rb
- lib/maglev/reflection.rb
- lib/maglev/reflection/class_mirror.rb
- lib/maglev/reflection/core_ext/class.rb
- lib/maglev/reflection/core_ext/class_organizer.rb
- lib/maglev/reflection/core_ext/exception.rb
- lib/maglev/reflection/core_ext/maglev.rb
- lib/maglev/reflection/core_ext/method.rb
- lib/maglev/reflection/core_ext/module.rb
- lib/maglev/reflection/core_ext/object.rb
- lib/maglev/reflection/core_ext/proc.rb
- lib/maglev/reflection/core_ext/thread.rb
- lib/maglev/reflection/field_mirror.rb
- lib/maglev/reflection/field_mirror/fixed_instance_variable_mirror.rb
- lib/maglev/reflection/method_mirror.rb
- lib/maglev/reflection/mirror.rb
- lib/maglev/reflection/object_mirror.rb
- lib/maglev/reflection/stack_frame_mirror.rb
- lib/maglev/reflection/support/partial_continuation.rb
- lib/maglev/reflection/thread_mirror.rb
- lib/rubinius/reflection.rb
- lib/ruby/reflection.rb
- lib/ruby/reflection/class_mirror.rb
- lib/ruby/reflection/field_mirror.rb
- lib/ruby/reflection/field_mirror/class_variable_mirror.rb
- lib/ruby/reflection/field_mirror/constant_mirror.rb
- lib/ruby/reflection/field_mirror/instance_variable_mirror.rb
- lib/ruby/reflection/method_mirror.rb
- lib/ruby/reflection/mirror.rb
- lib/ruby/reflection/object_mirror.rb
- lib/ruby/reflection/stack_frame_mirror.rb
- lib/ruby/reflection/support/shift_reset.rb
- lib/ruby/reflection/thread_mirror.rb
- rubymirrors.gemspec
- spec/class_spec.rb
- spec/field_spec.rb
- spec/fixtures/class_spec.rb
- spec/fixtures/field_spec.rb
- spec/fixtures/method_spec.rb
- spec/fixtures/object_spec.rb
- spec/fixtures/reflect_spec.rb
- spec/fixtures/stack_frame_spec.rb
- spec/fixtures/thread_spec.rb
- spec/frame_spec.rb
- spec/method_spec.rb
- spec/object_spec.rb
- spec/reflection_spec.rb
- spec/spec_helper.rb
- spec/spec_helper/mspec_patch.rb
- spec/spec_helper/multiple_reflections.rb
- spec/thread_spec.rb
homepage: 
licenses: []
post_install_message: 
rdoc_options: []
require_paths:
- lib
required_ruby_version: !ruby/object:Gem::Requirement
  none: false
  requirements:
  - - ! '>='
    - !ruby/object:Gem::Version
      version: '0'
required_rubygems_version: !ruby/object:Gem::Requirement
  none: false
  requirements:
  - - ! '>='
    - !ruby/object:Gem::Version
      version: '0'
requirements: []
rubyforge_project: 
rubygems_version: 1.8.23
signing_key: 
specification_version: 3
summary: Mirror API for Ruby
test_files:
- spec/class_spec.rb
- spec/field_spec.rb
- spec/fixtures/class_spec.rb
- spec/fixtures/field_spec.rb
- spec/fixtures/method_spec.rb
- spec/fixtures/object_spec.rb
- spec/fixtures/reflect_spec.rb
- spec/fixtures/stack_frame_spec.rb
- spec/fixtures/thread_spec.rb
- spec/frame_spec.rb
- spec/method_spec.rb
- spec/object_spec.rb
- spec/reflection_spec.rb
- spec/spec_helper.rb
- spec/spec_helper/mspec_patch.rb
- spec/spec_helper/multiple_reflections.rb
- spec/thread_spec.rb