X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=PLANS;h=35c6aa10d127d9ac42287ec265916da2efa23106;hb=5030b52f1ef04d755d43ef1e615258a751f2e763;hp=23ad296e74b4c42d2ddba6557294455758de7d51;hpb=22aed3c0fbe058c938ecb2834eb8a45c46d4e8ed;p=gitmo%2FMoose.git diff --git a/PLANS b/PLANS index 23ad296..35c6aa1 100644 --- a/PLANS +++ b/PLANS @@ -1,43 +1,6 @@ ----------------------------------------------------------- -- Type Constraints refactor ------------------------------------------------------------ - -- move the details of TC construction that are in Moose.pm and - Moose::Util::TypeConstraints into the Moose::Meta::TypeConstraint module - -This will make it much easier to generate TCs on their own, without -having to use the sugar layer. This should also clean up their APIs -as well, which will make it easier to subclass them. - -- create an official TC registry API - -Right now the registration of the TC is a by-product of creation in the sugar -layer, this is bad and make extension of TCs difficult. I am not sure if this -registry API should exist as part of Moose::Util::TypeConstraints, or of we -should create a complete registry object itself. - -This registry should be a singleton, but M::U::TC should enforce that lifecycle -choice so that you can use your own registry if you really want too. - -I mean parent of the registry. So that I can create my own registry -object for a given class, and any retrieval of a type constraint from -this object would automatically search parent registries as well. - -- refactor the various TC internals to make it more subclassing friendly - -This also includes the coercion stuff as well. This should give you what you -need to make your object/class bound stuff. - -- move the container TCs from MooseX::AttributeHelpers into Moose core - -These have proven so useful for me in the latest $work project that I think -they should really be core. - -- allow a switch of some kind to optionally turn TC checking off at runtime - -The type checks can get expensive and some people have suggested that allowing -the checks to be turned off would be helpful for deploying into performance -intensive systems. Perhaps this can actually be done as an option to make_immutable? +----------------------------------------------------------- - add support for locally scoped TC @@ -53,6 +16,12 @@ would allow custom metaclasses to provide roles to extend the sugar syntax with. (NOTE: Talk to phaylon a bit more on this) +- allow a switch of some kind to optionally turn TC checking off at runtime + +The type checks can get expensive and some people have suggested that allowing +the checks to be turned off would be helpful for deploying into performance +intensive systems. Perhaps this can actually be done as an option to make_immutable? + - misc. minor bits * make the errors for TCs use ->message @@ -87,6 +56,57 @@ subtype Foo => as Bar => where { ... } => in __PACKAGE__ ; my $Foo = subtype Bar => where { ... }; +# ---------- + +[17:10] stevan: it should do it if I pass coerce => 1 as part of the attribute definition +[17:12] autarch: what I am not 100% sure of is how to tell it to deep coerce and when to not +[17:13] cause a basic coerce is from A to B +[17:13] hmm +[17:13] which is valid for collection types too +[17:13] deep coercion is what you are asking for +[17:13] yeah +[17:13] so perhaps we add deep_coerce => 1 +[17:13] which will do it +[17:13] that's fine for me +[17:13] k + +coerce_deeply => 1 # reads better + +----------------------------------------------------------- +- TC stuff DONE +----------------------------------------------------------- + +- create an official TC registry API (DONE) + +Right now the registration of the TC is a by-product of creation in the sugar +layer, this is bad and make extension of TCs difficult. I am not sure if this +registry API should exist as part of Moose::Util::TypeConstraints, or of we +should create a complete registry object itself. + +This registry should be a singleton, but M::U::TC should enforce that lifecycle +choice so that you can use your own registry if you really want too. + +I mean parent of the registry. So that I can create my own registry +object for a given class, and any retrieval of a type constraint from +this object would automatically search parent registries as well. + +- refactor the various TC internals to make it more subclassing friendly (DONE) + +This also includes the coercion stuff as well. This should give you what you +need to make your object/class bound stuff. + +- move the container TCs from MooseX::AttributeHelpers into Moose core (DONE) + +These have proven so useful for me in the latest $work project that I think +they should really be core. + +- move the details of TC construction that are in Moose.pm and + Moose::Util::TypeConstraints into the Moose::Meta::TypeConstraint module + (DONE) + +This will make it much easier to generate TCs on their own, without +having to use the sugar layer. This should also clean up their APIs +as well, which will make it easier to subclass them. ----------------------------------------------------------- -- Roles refactor