Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

163 lines (102 sloc) 4.729 kb
IDEAS
=====
- 'immutable' builder?
- some kind of obfuscator to reduce codebase size?? (function () { var a='Joose', b='Managed'; top[a][b] etc })()
- try Closure compacter
- "immutable traits" (should have name) - cache the derived meta-class, then re-use it, instead of re-creating for each instance
should give cheap "lightweight" traits
- add alias 'static' for 'my'?
- property set & stem should only provide the composition logic, `apply/unapply` logic should be delegated to meta
(in form of hooks?)
TASKS
=====
- ability to freely inherit from non-Joose classes
- test Joose.O helpers (partially done)
- add exception for inheritance from nothing ( isa : null )
- derive 'stable' branch
- check overridableness of method and attribute metaclasses
- add SKIP and TODO methods to Test.Run
- add warnings about SUPER on proto level in OPERA
DOCS
====
- Joose.Cookbook
- add receipts
- Joose.Manual
- Installation
-- check the procedure on Mac OS
-- verify that procedure works several platforms (CPAN Testers at least) especially on Windows
- document how class can be used as role (w/o inherited properties)
- document internals, notably the introspection API
OPTIMIZATION
============
- first, add benchmarking capabilities to Test.Run (or separate benchmarking suite module)
- convert all OVERRIDE modifiers in core to AROUND? (need to benchmark them 1st)
- implement optimization for methods/OVERRIDE modifiers w/o SUPER calls ) probably should be configurable, to avoid increasing of startup overhead
and/or
- statically:
methods : {
function () {
//no SUPER inside
}.raw() /* by helper script */
}
REFACTORING POSSIBILITIES
=========================
- rewrite the core in more functional style - remove 'unApply' stage (should give noticeable speed-up for class mutations, as there will be no 'unApply' stage -
we'll just clear the prototype and the re-apply it from scratch, plus - we'll also receive a noticeable reduce of the codebase)
- merge advanced attribute Role into bootstrap role?
- merge bootstrap role into managed class?
- move builderClass and stemClass to private attributes (with leading underscore)?
-or-
- merge 'builder' into class itself?
- metaclass as subclass of stem (is that possible at all?)
EXTENSIONS
==========
- JooseX.Builder.Also (to address Rhino issues and allow multiple modifiers in the same class)
- JooseX.Meta.Parameterized (aka parameterized roles, + classes)
- JooseX.Type
- JooseX.Meta.Configurable (allows builders which will configure the meta + aliases for them)
- JooseX.Attribute:
- delegation
- predicating/clearing
- typing, coercion
- traits for attributes
- JooseX.Method.Overloaded
DONE
====
- inter-op with NodeJS
- ability to specify the method for attribute initialization ("builder" in Moose meaning)
- alias static methods (not properties) to the constructor (should be delegates to 'my')
Some.Class.method = function () {
this.my.method.apply(this.my, arguments)
}
- allow regexes as initialization values for advanced attributes
- fix JSAN shell 'install' command (prefix)
- release Module::Build::Functions (CSJ)
- release Module::JSAN
- JooseX.Attribute.Accessor.Unified - getter and setter as single function
- JooseX.Class.Singleton; http://gist.github.com/243923
- if (this.hasAttribute('builderClass')) this.getBuiderTarget() - to create a separate builder class for each metaclass
- + stem
- needs a test
- fix OpenJSAN.org html extraction method
- release JSAN::Shell
- rewrite 'my' Singleton as Class methods (and create a separate Singleton core metaclass or JooseX)
- refactor advanced attributes from roles to adding methods directly (should be well test-covered first)
- refactor methods & modifiers to reduce overhead
- migrate AUGMENT modifier to closures
- anonymous classes
- refactor helpers
- fix multiple failures under FF3.5
- does for superclasses
- migrate to github
- add override check for PUT modifiers
- fix namespace managers executeIn to omit the args?
- refactor addRole (add something like 'beforeAdd' hook, which is very often needs to be overridden)
- global 'traits' config? to apply traits immediatly after instance creation?
- Class as Role? spec&implemented or remove
- subclass builder and stem classes on-demand only
- BUILD method to prepare the arguments passed to constructor
- refactor Joose.Helper to a global "instantiator" of classes. Then it will be possible to apply roles to it, to globally modify the class creation process
- merge Containable to Mutable
- cleanClone of Stem move to Composition
- fix frames double loading in Opera (Test.Run)
Jump to Line
Something went wrong with that request. Please try again.