-
Notifications
You must be signed in to change notification settings - Fork 105
/
Changes.Class-MOP
1800 lines (1451 loc) · 61.6 KB
/
Changes.Class-MOP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
After 1.12, Class::MOP was merged into the Moose distribution, and is no
longer released separately.
1.12 Mon, Jan 3, 2011
* Remove usage of undocumented Package::Stash APIs from the tests. This
prevents the tests from failing on Package::Stash >= 0.18.
1.11 Sun, Oct 31, 2010
[ENHANCEMENTS]
* Replace use of Test::Exception with Test::Fatal. (Karen Etheridge and Dave
Rolsky)
1.10 Mon, Oct 18, 2010
[BUG FIXES]
* Lots of fixes for edge cases with anon classes. (doy)
1.09 Tue, Oct 5, 2010
[ENHANCEMENTS]
* It's now possible to tell Class::MOP::Class->create and the metaclass
pragma to not install a 'meta' method into classes they manipulate,
or to install one under a different name. (doy)
* Reinitializing a metaclass no longer removes the existing method and
attribute objects (it instead fixes them so they are correct for the
reinitialized metaclass). (doy)
* All 'meta' methods created by Class::MOP are now of the class
Class::MOP::Method::Meta. This is overridable at the metaclass layer. (doy)
[OTHER]
* Use get_or_add_package_symbol when we intend for it to autovivify, in
preparation for changes in Package::Stash. (doy)
* We now use Module::Install::AuthorRequires to force authors to run all
tests, just like we do for Moose. (sartak)
1.08 Mon, Sep 13, 2010
[BUG FIXES]
* The get_method_list and _get_local_methods methods blew up in the face
of subroutine stubs. (Goro Fuji)
1.07 Tue, Aug 25, 2010
[BUG FIXES]
* Fix a mysterious error reported by Piers Cawley. The error showed up as
"Can't use an undefined value as a symbol reference at
/usr/local/lib/perl/5.10.1/Class/MOP/Mixin/HasMethods.pm line 167." (Dave
Rolsky)
1.06 Sun, Aug 23, 2010
[BUG FIXES]
* Version 1.05 no longer reported constants as methods, except with Perl
5.8.x, and doing so in 5.8.x caused test failures. Constants are now
_expected_ to be reported as methods, and we explicitly test this. (Dave
Rolsky)
1.05 Sun, Aug 22, 2010
[ENHANCEMENTS]
* Refactorings and improvements to how defaults are handled, particularly
for inlined code (doy).
* Optimizations that should help speed up compilation time (Dave Rolsky).
1.04 Tue, Jul 25, 2010
[ENHANCEMENTS]
* Class::MOP::Deprecated now uses Package::DeprecationManager
internally. Deprecation warnings are now only issued once for each calling
package, which cuts down on noise. When importing Class::MOP::Deprecated,
the request API version should now be passed in the "-api_version"
flag. However, the old "-compatible" flag will continue to work. (Dave
Rolsky)
1.03 Sat, Jun 5, 2010
[ENHANCEMENTS]
* Make CMOP::Package a thin wrapper around Package::Stash (doy).
1.02 Thu, May 20, 2010
[API CHANGES]
* Packages and modules no longer have methods - this functionality was
moved back up into Class::MOP::Class (doy).
[ENHANCEMENTS]
* Metaclass incompatibility checking now checks all metaclass types. (doy)
* Class::MOP can now do simple metaclass incompatibility fixing: if your
class's metaclass is a subclass of your parent class's metaclass, it will
just use the parent class's metaclass directly. (doy)
1.01 Thu, May 6, 2010
[NEW FEATURES]
* is_class_loaded, load_class and load_first_existing_class now allow
specifying a minimum required version (Florian Ragwitz).
[BUG FIXES]
* The __INSTANCE__ parameter to Class::MOP::Class::new_object now enforces
that the passed in reference is blessed into the correct class (by dying if
it's not) (doy, jhallock).
1.00 Thu, Mar 25, 2010
[GRRR< FUCKING STEVAN@]
* Re-release 0.99 as 1.00.
0.99 Thu, Mar 25, 2010
[DOCUMENTATION]
* Fix typo in Class::MOP::Attribute (Franck Cuny).
0.98 Mon, Jan 18, 2010
[ENHANCEMENTS]
* Added Class::MOP::Class->rebless_instance_back, which does the inverse of
rebless_instance (doy, rafl).
0.97_01 Mon, Jan 4, 2010
[ENHANCEMENTS]
* Internal refactorings to move shared behavior into new "mixin" classes. This
made adding some new features to Moose much easier. (Dave Rolsky)
0.97 Fri, Dec 18, 2009
* No code changes, just packaging fixes to make this distro installable.
0.96 Fri, Dec 18, 2009
* tests
- Fixed t/082_get_code_info.t so it passes with bleadperl. (Dave Rolsky)
- Add XS & C files to no tabs check (Dave Rolsky)
- Convert all tests to done_testing. (Florian Ragwitz)
0.95 Wed, Nov 19, 2009
* Class::MOP
- Make is_class_loaded without any arguments fail loudly
(Florian Ragwitz).
- Make load_class throw more standard error messages when loading single
modules (nothingmuch).
* Class::MOP::Package
- Stop add_method from behaving differently under the debugger
(Florian Ragwitz).
* Class::MOP::Class
* Class::MOP::Package
- Any method which takes a method name as an argument now allows names
which are false (like "0"), but the name must be defined and not be an
empty string. (Dave Rolsky)
* Class::MOP::Class
- Deprecated get_attribute_map as a public method. You can use a
combination of get_attribute_list and get_attribute instead. (Dave
Rolsky)
0.94 Tue, Sep 22, 2009
* Class::MOP::Attribute
- Introduce set_raw_value and get_raw_value, side effect free variants
of {get,set}_value. These don't do anything useful in Class::MOP but
have different behavior that set_value and get_value for Moose
attributes. (nothingmuch)
0.93 Tue, Sep 15, 2009
* Class::MOP
- The load_class function just returns true, since its return value was
confusing (either a metaclass object or a class name). It either loads
a class or dies trying. In the future, this may change to not return
anything, since there's no point in checking its return
value. Addresses RT #45883. (Dave Rolsky)
* Class::MOP::Class::Trait::Immutable
- When throwing an error because of an immutable method, include that
method's name. Addresses RT #49680. (Shawn M Moore)
* Class::MOP::Package
- Adding the same sub reference to multiple packages failed to update
the method map properly. RT #48985. Reported by Paul Mooney. (Dave
Rolsky)
- The get_method_map method is now private (and called as
_full_method_map or _method_map). The public version is available as a
deprecated method. (Dave Rolsky)
0.92_01 Thu, Sep 10, 2009
* Class::MOP::Package
- Backwards compatibility tweaks to XS for 5.8.1. (Goro Fuji)
* Class::MOP
- Make sure XS code handles magical scalars correctly. (Goro Fuji)
* Class::MOP::Class
- Documented the immutable_options method, which is useful if you need
to make a class mutable temporarily, and then nede to restore
immutability. (Dave Rolsky)
* Many modules
- Deprecated features have been moved to their own module,
Class::MOP::Deprecated, for easier deprecation management. (Goro Fuji)
0.92 Thu Aug 13, 2009
* Class::MOP::Class
* Class::MOP::Package
- Move get_method_map and its various scaffolding into Package. (hdp)
* Class::MOP::Method
- Allow Class::MOP::Method->wrap to take a Class::MOP::Method object as
the first argument, rather than just a coderef. (doy)
* Class::MOP::Attribute
* Class::MOP::Class
- Allow attribute names to be false (while still requiring them to be
defined). (rafl)
0.91 Wed Jul 29, 2009
* Class::MOP::Method::Wrapped
- Fixing variable usage issues with the patch from previous
version, not properly using lexicals in the for
loops. (stevan)
0.90 Tue Jul 21, 2009
Japan Perl Association has sponsored Goro Fuji to improve startup
performance of Class::MOP and Moose. These enhancements may break
backwards compatibility if you're doing (or using) complex
metaprogramming, so, as always, test your code!
http://blog.perlassociation.org/2009/07/jpa-sponsors-moose-class-mop-work.html
* Class::MOP::Class
* XS
- Anonymous classes were not completely destroyed when they went
out of scope, leading to a memory leak. RT #47480. (Goro
Fuji).
* Class::MOP::Class
- The get_method, has_method, and add_method methods no longer
use get_method_map. Method objects are instantiated
lazily. This significantly improves Class::MOP's load
time. (Goro Fuji)
* All classes
- Inline fewer metaclass-level constructors since the ones we
have are perfectly fine. This reduces the number of string
evals. (Goro Fuji)
* Class::MOP::Method::Wrapped
- If a method modifier set $_, this caused the modifier to blow
up, because of some weird internals. (Jeremy Stashewsky)
0.89 Fri Jul 3, 2009
* Class::MOP::Class
* Class::MOP::Class::Immutable::Trait
- Made the Trait act like a role with a bunch of "around"
modifiers, rather than sticking it in the inheritance
hierarchy. This fixes various problems that caused with
metaclass compatibility, which broke Fey::ORM.
* Class::MOP::Method
- Allow a blessed code reference as the method body. Fixes a
problem interaction with MooseX::Types. (ash)
* Class::MOP::Instance
- add inline version of rebless_instance_structure. (doy)
- change inline_slot_access to use single quotes (gphat)
0.88 Tue, Jun 23, 2009
* Class::MOP::Class
- Moved the __INSTANCE__ parameter to _construct_instance from
Moose to here. (doy)
- Fixed some issues involving metaclasses of metaclasses and
immutability. (doy)
0.87 Sun, Jun 21, 2009
* Various
- Made sure to always local-ize $@ and $SIG{__DIE__} before
calling an eval. Fixes RT #45973.
* Class::MOP::Class
- Synced docs about immutability with the current reality (which
changed back in 0.82_01)
- Removed the immutable_transformer method, which had been
returning undef since 0.82_01 anyway.
* Tests
- Got rid of tests which needed Moose and improved testing of
constructor/destructor inlining warnings. Fixes RT #47119.
0.86 Tue, Jun 16, 2009
* Class::MOP::Class
- If you redefined a subroutine at runtime and then wrapped it
with a method modifier, the modifier could in some cases wrap
the original version of the subroutine. Fixes RT #46957.
* Class::MOP::Class
- make_immutable issues a warning instead of overriding an
existing DESTROY method (Dylan William Hardison). Fixes RT
#46854.
0.85 Sat, Jun 6, 2009
* Class::MOP::Attribute
- Allow default values to be Class::MOP::Methods. (Florian
Ragwitz)
- Test the above. (Rhesa Rozendaal)
- Tweak original commit so the intent matches the accepted
behavior (Nicholas Perez)
* Class::MOP
- Localize $SIG{__DIE__} inside _try_load_one_class (Sartak)
* Class::MOP::Class
- Add direct_subclasses method (Sartak)
- Tests for subclasses and direct_subclasses (Sartak)
- subname is no longer used unconditionally in add_method, but
only if the code reference's name is '__ANON__' (nothingmuch)
- Add a hook for _superclasses_updated (Sartak)
* Class::MOP::Method
- Remove long, old warning about possibly outdated modules
(Sartak)
0.84 Tue, May 12, 2009
* Makefile.PL
- Depend on Text::Exception 0.27 to avoid failing tests ond old
versions (rafl)
* Class::MOP
- Made is_class_loaded a little stricter. It was reporting that
a class was loaded if it merely had an @ISA variable in its
stash. Now it checks that the @ISA var has elements in it.
- Deprecate in_global_destruction and subname re-exporting
(perigrin & Sartak)
* Class::MOP::Class
- Explicitly use Devel::GlobalDestruction and Sub::Name
(perigrin)
* Class::MOP::Package
- Disable prototype mismatch warnings for add_package_symbol.
(Florian Ragwitz)
* Tests
- Add test for finding methods from $meta->name->meta before immutable,
(t0m)
0.83 Mon, April 27, 2009
* Class::MOP::Class
- Fix segfault when calling get_method_map on a metaclass for an empty
package (doy)
0.82_02 Fri, April 24, 2009
* Class::MOP::Method::Inlined
- Don't inline if the expected method is not defined at all (happens with
e.g. Moose::Object::_new is the expected method due to an overridden
name)
* Tests
- Some tests were trying to load Class::MOP::Immutable, which
was removed in 0.82_01.
0.82_01 Thu, April 23, 2009
* Class::MOP::Immutable (and others)
- Refactor the immutability system to use a pre-defined class
for the immutable metaclass of Class::MOP::Class::Immutable::$class
- Rather than generating methods into this class every time, use
a Trait (basic mixin) to supply the cached methods
- Remove the hack that returns the mutable metaclass for
metacircularity in order to provide consistent meta-metaclasses
for the Moose compatibility handling code
(mst broke it, nothingmuch fixed it)
0.82 Mon, April 20, 2009
* Various
- The deprecation wrappers for some renamed methods were not
passing arguments to the new method. (nothingmuch)
* Class::MOP::Immutable
- Warn during immutablization if the local class provides its own
constructor, to parallel the warning in Moose when a superclass
provides its own constructor (doy)
0.81 Tue, April 7, 2009
* Class::MOP
* Class::MOP::Class
* Class::MOP::Instance
* Class::MOP::Attribute
* Class::MOP::Method::Accessor
* Class::MOP::Method::Constructor
- Include stack traces in the deprecation warnings introduced in
0.80_01. (Florian Ragwitz)
* MOP.xs
- Avoid c compiler warnings by declaring some unused function
arguments. (Florian Ragwitz)
0.80_01 Sun, April 5, 2009
* Makefile.PL
- Make sure to preserve any compiler flags already defined in
Config.pm. Patch by Vincent Pit. RT #44739.
* Many methods have been renamed with a leading underscore, and a
few have been deprecated entirely. The methods with a leading
underscore are considered "internals only". People writing
subclasses or extensions to Class::MOP should feel free to
override them, but they are not for "public" use.
- Class::MOP::Class
- construct_class_instance => _construct_class_instance (use new_object)
- construct_instance => _construct_instance (use new_object)
- check_metaclass_compatibility => _check_metaclass_compatibility
- create_meta_instance => _create_meta_instance (use get_meta_instance)
- clone_instance => _clone_instance (use clone_object)
- compute_all_applicable_methods is deprecated, use get_all_methods
- compute_all_applicable_attributes is deprecated, use get_all_attributes
- Class::MOP::Instance
- bless_instance_structure is deprecated and will be removed
in a future release
- Class::MOP::Module
- create has been renamed to _instantiate_module. This method
does not construct an object, it evals some code that
creates the relevant package in Perl's symbol table.
- Class::MOP::Method::Accessor
- initialize_body => _initialize_body (this is always called
when an object is constructed)
- /(generate_.*_method(?:_inline)?)/ => '_' . $1
- Class::MOP::Method::Constructor
- initialize_body => _initialize_body (this is always called
when an object is constructed)
- /(generate_constructor_method(?:_inline)?)/ => '_' . $1
- attributes => _attributes
- meta_instance => _meta_instance
0.80 Wed, April 1, 2009
* Class::MOP::*
- Call user_class->meta in fewer places, with the eventual goal
of allowing the user to rename or exclude ->meta
altogether. Instead uses Class::MOP::class_of. (Sartak)
* Class::MOP
- New class_of function that should be used to retrieve a
metaclass. This is unlike get_metaclass_by_name in that it
accepts instances, not just class names. (Sartak)
* Class::MOP
- load_first_existing_class didn't actually load the first
existing class; instead, it loaded the first existing and
compiling class. It now throws an error if a class exists (in
@INC) but fails to compile. (hdp)
* Class::MOP
* Class::MOP::Class
- we had some semi-buggy code that purported to provide a
HAS_ISAREV based on whether mro had get_isarev (due to an
oversight, it always returned 1). Since mro and MRO::Compat
have always had get_isarev, HAS_ISAREV was pointless. This
insight simplified the subclasses method by deleting the
pure-perl fallback. HAS_ISAREV is now deprecated. (Sartak)
0.79 Fri, March 29, 2009
* No changes from 0.78_02.
0.78_02 Thu, March 26, 2009
* Class::MOP::Class
* Class::MOP::Immutable
- A big backwards-incompatible refactoring of the Immutable API,
and the make_immutable/make_mutable pieces of the Class
API. The core __PACKAGE__->meta->make_immutable API remains
the same, however, so this should only affect the most
guts-digging code.
* XS code
- The XS code used a macro, XSPROTO, that's only in 5.10.x. This
has been fixed to be backwards compatible with 5.8.x.
* Class::MOP::Class
- Add a hook for rebless_instance_away (Sartak)
- Use blessed instead of ref to get an instance's class name
in rebless_instance. (Sartak)
0.78_01 Wed, March 18, 2009
* Class::MOP::*
- Revised and reorganized all of the API documentation. All
classes now have (more or less) complete API documentation.
* Class::MOP::Class
* Class::MOP::Instance
- Reblessing into a package that supports overloading wasn't
properly adding overload magic to the object due to a bug
in (at least) 5.8.8. We now use $_[1] directly which seems
to set the magic properly. (Sartak)
* Class::MOP::Attribute
- The process_accessors method is now private. A public alias
exists (and will stick around for a few releases), but it
warns that calling the public method is deprecated.
* Class::MOP::Method::Generated
- Removed the new and _new methods, since this is an abstract
base class, and all existing subclasses implement their own
constructors.
* MOP.xs
- Stop is_class_loaded from thinking a class is loaded if it
only has an empty GV (Florian Ragwitz).
- Add a test for this (Yappo).
- Refactor get_all_package_symbols to allow short-circuiting
(Florian Ragwitz).
- Use this in is_class_loaded (Florian Ragwitz).
- Stop segfaulting when trying to get the name from a sub that's
still being compiled (Florian Ragwitz).
- Add tests for this (Florian Ragwitz).
- Prefix all public symbols with "mop_" (Florian Ragwitz).
- Clean up and simplify prehashing of hash keys (Florian Ragwitz).
- Simplify creating simple xs reader methods (Florian Ragwitz).
- Make everything compile with c++ compilers (Florian Ragwitz).
- Upgrade ppport.h from 3.14 to 3.17 (Florian Ragwitz).
* Tests
- Remove optional test plans for tests depending on Sub::Name as
we have a hard dependency on Sub::Name anyway (Florian Ragwitz).
* Makefile.PL
- Rebuild all c code if mop.h has changed (Florian Ragwitz)
0.78 Mon, February 23, 2009
* No changes from 0.77_01
0.77_01 Sun, February 22, 2009
* Everything
- This package now requires its XS components. Not using
Sub::Name lead to different behavior and bugginess in the pure
Perl version of the code. A Moose test would fail when run
against the pure Perl version of this code.
* Class::MOP::Instance
- The inline_* methods now quote attribute names themselves, and
don't expect to receive a quoted value.
0.77 Sat, February 14, 2009
* MOP.xs
- Avoid assertion errors on debugging perls in is_class_loaded
(Florian Ragwitz)
* Class::MOP
- Fixed various corner cases where is_class_loaded incorrectly
returned true for a class that wasn't really loaded. (Dave
Rolsky)
* Class::MOP::Class
- Add get_all_method_names (Sartak)
- Add a wrapped_method_metaclass attribute (Florian Ragwitz)
* Class::MOP::Package
- Disable deprecated get_all_package_symbols in list
context. (Florian Ragwitz)
* Makefile.PL
- Make sure we generate a BSD-compatible Makefile (Florian
Ragwitz)
* Class::MOP::Class
- The misspelled "check_metaclass_compatability" method we've
kept around for backwards compat_i_bility will be removed in a
near future release. You've been warned.
0.76 Thu, January 22, 2009
* Class::MOP::Method::Generated
- Added new private methods to support code generation, which
are being used by Moose and can be used by MooseX
authors. (mst)
- Generated methods are now generated with a #line directive
reflecting the source of the generated method. (nothingmuch)
* Class::MOP::Class
- Clarified documentation of methods that return
Class::MOP::Method objects. (doy)
* Class::MOP
- Clarified documentation of the metaclass cache methods. (Sartak)
* Tests
- Add test showing how the xs Class::MOP::is_class_loaded can
be made to operate differently to the pure perl version (t0m)
0.75 Wed, December 31, 2008
* Class::MOP::Class
- A class that was made immutable and then mutable could end up
sharing an immutable transformer object
(Class::MOP::Immutable) with other classes, leading to all
sorts of odd bugs. Reported by t0m. (Dave Rolsky)
0.74 Tue, December 25, 2008
* MOP.xs
- Add an xs implementation of Class::MOP::is_class_loaded (closes
RT#41862). Based on a patch by Goro Fuji. (Florian Ragwitz)
- Changed internals to make prehashing of hash keys easier and less
error-prone. (Florian Ragwitz)
* Class::MOP::Class
- Fix documentation to show that around modifiers happen on both
sides of the modified method. (Dave Rolsky)
0.73 Tue, December 16, 2008
* MOP.xs
- Don't use Perl_mro_meta_init. It's not part of the public perl
api. Fixes failures to build on Win32 (RT #41750). (Florian
Ragwitz)
* t/082_get_code_info.t
- Add $^P &= ~0x200; (per Ovid's suggestion) in order to not
munger anonymous subs when under -d and so making the tests
succeed in that case.
0.72 Mon, December 8, 2008
* Class::MOP::Package
- Pass options to _new, so subclass' attributes can be
initialized (Sartak)
* Class::MOP::Method
- In the docs, indicate that package_name and name are required
when calling ->wrap (Stefan O'Rear)
0.71_02 Fri, December 5, 2008
* Class::MOP::Immutable
- Added a new attribute, inlined_constructor, which is true if
the constructor was inlined.
* Class::MOP::Package
- Make get_all_package_symbols return a hash ref in scalar
context and deprecate calling it in list context with a
warning. (Florian Ragwitz)
* MOP.xs
- Various improvements and refactoring, making things more robust and
easier to maintain. (Florian Ragwitz)
0.71_01 Wed, December 3, 2008
* Class::MOP::Method
- Add an "execute" method to invoke the body so
we can avoid using the coderef overload (Sartak)
* Class::MOP::Immutable
- When we memoize methods, get their results lazily
to remove some compile-time cost (Sartak)
- Small speedup from eliminating several method
calls (Sartak)
* Class::MOP::Class
- Some small internal tweaks to try to reduce the number of
times we call get_method_map when bootstrapping the MOP. This
might make loading Class::MOP (and Moose) a little
faster. (Dave Rolsky)
- Implemented an optional XS version of get_method_map. Mostly
taken from a patch by Goro Fuji (rt.cpan.org #41080), with
help form Florian Ragwitz. (Dave Rolsky)
- Make the behaviour of of get_all_package_symbols (and
therefore get_method_map) consistent for stub methods. Report
and test by Goro Fuji (rt.cpan.org #41255). (Florian Ragwitz)
0.71 Wed November 26, 2008
* Class::MOP::Class
* Class::MOP::Module
- Actual package creation has moved upward from
Class to Module so that Moose roles can share
the code (Sartak)
0.70_01 Mon, November 19, 2008
* Class::MOP
- Fixes for failures with blead (Florian Ragwitz)
- Silenced compiler warnings (Florian Ragwitz)
0.70 Fri, November 14, 2008
* Class::MOP
- Fixed an odd corner case where the XS version of
get_all_package_symbols could cause a segfault. This only
happened with inlined constants in Perl 5.10.0 (Florian
Ragwitz)
0.69 Fri, November 7, 2008
* Class::MOP::Method::Wrapped
- Added introspection methods for method modifiers (Dave Rolsky)
0.68 Fri October 24, 2008
* Class::MOP
- Make load_class require by file name instead of module name.
This stops confusing error messages when loading '__PACKAGE__'.
(Florian Ragwitz)
- Add load_one_class_of function to enable you to load one of a
list of classes, rather than having to call load_class multiple
times in an eval. (t0m)
0.67 Tue October 14, 2008
* Class::MOP::Class
- Call a method on the class after setting the superclass list
so that we can get Perl to detect cycles before MRO::Compat
spirals into an infinite loop (sartak)
- Reported by Schwern, [rt.cpan.org #39001]
- In create(), pass unused options on to initialize()
- added test for this
0.66 Sat September 20, 2008
!! This release has an incompatible change regarding !!
introspection of a class's method with Class::MOP::Class !!
* Tests and XS
- We (us maintainers) now run all tests with XS and then without
XS, which should help us catch skew between the XS/pure Perl
code. (Dave Rolsky)
* Class::MOP::Class
! The alias_method method has been deprecated. It now simply
calls add_method instead. There is no distinction between
aliased methods and "real" methods.
This means that methods added via alias_method now show up as
part of the class's method list/map. This is a backwards
incompatible change, but seems unlikely to break any
code. Famous last words. (Dave Rolsky)
* Class::MOP::Class
- Fixed the spelling of "compatibility", but we still have a
"check_metaclass_compatability" method for backwards
compatibility.
0.65 Mon September 1, 2008
For those not following the series of dev releases, the changes
from 0.64 from 0.65 can mostly be summed up as a lot performance
improvements by nothingmuch, including new optional XS versions of
some methods. Also, Class::MOP now works _without_ any XS modules,
for sad systems without a compiler.
* Class::MOP::Method
- Added name and package_name XS accessors, and make sure all
the XS and Perl versions work the same way. (Dave Rolsky)
* MOP.xs
- The XS versions of various methods just returned undef when
called class methods, rather than dying like the pure Perl
versions. (Dave Rolsky)
0.64_07 Fri August 29, 2008
* Class::MOP
- Silenced warnings that managed to break Moose tests when XS
was loaded. (Dave Rolsky)
- Some XS versions of methods were ignored because of typos in
MOP.xs. (Dave Rolsky)
0.64_06 Mon August 25, 2008
* Class::MOP (MOP.xs)
- Another MS VC++ fix, cannot declare a variable in the middle
of a scope (Taro Nishino).
0.64_05 Sun August 24, 2008
* Class::MOP
- None of the dev releases actually loaded the XS properly, but
we silently fell back to the pure Perl version of the
code. (Dave Rolsky)
* Class::MOP (MOP.xs)
- Replaced some code that used functions not available on Visual
C++ with some Perl XS API bits (Dave Rolsky).
0.64_04 Sat August 23, 2008
* Class::MOP::Class
- Workaround a bug in 5.8.1's goto sub (nothingmuch)
* pod.t and pod_coveraget.t
- These are no longer shipped with the tarball because of bogus
failures from CPAN testers. (Dave Rolsky)
0.64_03 Thu August 21, 2008
* Class::MOP::Package
- Some (legit) code was misparsed by earlier 5.8.x
releases. (nothingmuch)
* Class::MOP
- Fix a constant in void context warning (nothingmuch)
0.64_02 Thu August 21, 2008
* Makefile.PL and Class::MOP
- Explicitly require Perl 5.8.0+ (Dave Rolsky)
* Makefile.PL
- Add missing prereqs that got lost in the switch away from
Module::Install.
* Class::MOP::Instance
- New method - get_all_attributes (nothingmuch)
0.64_01 Wed August 20, 2008
* Makefile.PL
- We now check to see if you have a compiler. If you don't, the
module installs without some XS bits, but will work the same
as with XS. This should make it easier to install on platforms
without a compiler (like Windows). (Dave Rolsky)
* many modules
- Perl 6 style attribute naming replaced with sane style ('methods', not
'%!methods'). These changes should not impact any existing API uses.
(nothingmuch).
* many modules
- Quite a number of optimizations based on profiling, including
allowing constructors to take hash references instead of
hashes, duplicating some frequently used code in XS, and
making constructors immutable. These changes should not impact
any existing API uses. (nothingmuch)
* Many modules
- Constructors now respect the meta attributes of their subclasses,
facilitating MOP extensibility. More related changes will happen in the
next several releases. (nothingmuch)
* Class::MOP::Class
- New method - get_all_methods, replaces the deprecated
compute_all_applicable_methods. get_all_attributes provided for
consistency (nothingmuch)
- New method - wrap_method was refactored out of get_method_map
(nothingmuch)
- New API for meta instance invalidation - invalidate_meta_instance,
invalidate_meta_instances, add_dependent_meta_instance,
remove_dependent_meta_instance, called automatically when attribute
definitions change and allows notification of dependent subclasses.
(nothingmuch)
0.64 Sun August 3, 2008
* Class::MOP::Immutable
- fixing subtle edge case in immutable when you
call ->meta (stevan)
- clean up option processing (nothingmuch)
* Class::MOP::Instance
- inlined initialize slot didn't match
non-inlined (nothingmuch)
0.63 Mon July 7, 2008
* Class::MOP
- load_class will initialize a metaclass even if
the class is already loaded (sartak)
- load_class now returns the metaclass instance
instead of just 1 (sartak)
* elsewhere
- better error messages (sartak and Dave Rolsky)
0.62 Wed June 18, 2008
- in is_class_loaded, recognize scalar references (as opposed to globs) in
the symbol table as methods (these are optimized constant subs)
0.61 Fri. June 13, 2008
- Okay, lets give this another try and see if PAUSE
recognizes it correct this time.
0.60 Thurs. Jun 12, 2008
- Fixed a version number issue by bumping all modules
to 0.60.
0.59 Thurs. Jun 12, 2008
!! Several fixes resulting in yet another 25-30% speedup !!
* Class::MOP::Class
- now stores the instance of the instance
metaclass to avoid needless recomputation
and deletes it when the cache is blown
- introduce methods to query Class::MOP::Class for
the options used to make it immutable as well as
the proper immutable transformer. (groditi)
* Class::MOP::Package
- {add, has, get, remove}_package_symbol all
now accept a HASH ref argument as well as the
string. All internal usages now use the HASH
ref version.
* Class::MOP
- MOP.xs does sanity checks on the coderef
to avoid a segfault
- is_class_loaded check now uses code that
was improved in Moose's ClassName type
check (Sartak)
- nonsensical (undef, empty, reference) class
names now throw a more direct error in
load_class (Sartak)
- tests for this and other aspects of
load_class (Sartak)
* Class::MOP
Class::MOP::Class
Class::MOP::Method
Class::MOP::Method::Wrapped
Class::MOP::Attribute
- switched usage of reftype to ref because
it is much faster
0.58 Thurs. May 29, 2008
(late night release engineering)--
- fixing the version is META.yml, no functional
changes in this release
0.57 Wed. May 28, 2008
!! Several speedups resulting in 20-25% speedups !!
|| (thanks to konobi, groditi, mst & CataMoose) !!
* Class::MOP::Class
- made get_method_map use list_all_package_symbols
instead of manually grabbing each symbol
- streamlining &initialize somewhat, since it gets
called so much
* Class::MOP::Package
- made {get, has}_package_symbol not call
&namespace so much
- inlining a few calls to &name with
direct HASH access key access
- added get_all_package_symbols to fetch
a HASH of items based on a type filter
similar to list_all_package_symbols
- added tests for this
* Class::MOP::Method
Class::MOP::Method::Constructor
Class::MOP::Method::Generated
Class::MOP::Method::Accessor
- added more descriptive error message to help
keep people from wasting time tracking an error
that is easily fixed by upgrading.
* Class::MOP::Immutable
- Don't inline a destructor unless the user actually
needs one
- added tests for this
0.56 Saturday, May 24, 2008
* Class::MOP
- we now get the &check_package_cache_flag
function from MRO::Compat
- All XS based functionality now has a
Pure Perl alternative
- the CLASS_MOP_NO_XS environment variable
can now be used to force non-XS versions
to always be used
* Class::MOP::Attribute
- add has_read_method and has_write_method
- get_{read,write}_method_ref now wraps the
anon-sub ref in the method metaclass when
possible
- added tests for this
* Class::MOP::Immutable
- added the ability to "wrap" methods when
making the class immutable
* Class::MOP::Class
- now handling the edge case of ->meta->identifier
dying by wrapping add_package_symbol to specifically
allow for it to work.
- added tests for this
* Class::MOP::Attribute
Class::MOP::Class
Class::MOP::Immutable
- any time a method meta object is constructed
we make sure to pass the correct package and
method name information
* Class::MOP::Method
Class::MOP::Method::Wrapped
Class::MOP::Method::Generated
Class::MOP::Method::Accessor
Class::MOP::Method::Consructor
- the &wrap constructor method now requires that a
'package_name' and 'name' attribute are passed. This
is to help support the no-XS version, and will
throw an error if these are not supplied.
- all these classes are now bootstrapped properly
and now store the package_name and name attributes
correctly as well
~ Build.PL has been removed since the
Module::Install support has been removed