1Locale::Codes::Changes(U3s)er Contributed Perl DocumentatLioocnale::Codes::Changes(3)
2
3
4
6 Locale::Codes::Changes - details changes to Locale::Codes
7
9 This describes the changes made to modules in the Locale-Codes
10 distribution. Major changes are marked with asterisks (*). For the
11 most part, all modules have remained backward compatible at every
12 release, but occasionally a change is made which is backward
13 incompatible. These are marked with an exclamation mark (!).
14
15 As of 3.00, the codes are autogenerated from the standards. With each
16 release, codes will be re-generated and tested to see if any code
17 changed. Any time there are any changes to the codes, it will be
18 flagged below with a change: NEW CODE(s).
19
20 I intend to check for new codes four times a year (March, June,
21 September, December). I will also try to respond to requests for a
22 release due to changes made to the standards, so if a code changes that
23 you use, feel free to contact me. Based on my available time and the
24 time until the next release is scheduled, I will try to do a release
25 any time the standards change.
26
29 NEW CODE(s)
30 NOTE: no code changes on 2021-06-01 so no release made at that
31 time.
32
33 Added code2names
34 Also code2countrys, code2languages, etc. This allows you to see
35 all names and aliases that correspond to a code. My apologies for
36 making 'countrys' to be the plural of 'country', but because these
37 modules are all derived, I didn't want to put in an exception for
38 the strange pluralization.
39
40 Prompted by David Cantrell.
41
43 NEW CODE(s)
44
46 NEW CODE(s)
47
49 NEW CODE(s)
50
52 NEW CODE(s)
53 Fixed bug deleting retired codes
54 The delete_code function failed if you tried to delete a retired
55 code. This is now fixed. GitHub #12
56
58 NEW CODE(s)
59 NOTE: no code changes on 2019-12-01 so no release made at that
60 time.
61
62 Fixed a retired code
63
65 NEW CODE(s)
66 Fixed tests
67 Tests were not working correctly since the previous version. This
68 is now fixed.
69
70 Fixed error messages
71 Many of the error messages were inconsistent or completely wrong
72 (due to cut-and-paste errors). They have been fixed.
73
74 Fixed some return codes
75 The name2code and code2name functions returned 1 in the case of an
76 error in some situations instead of undef (which was the documented
77 value).
78
79 Removed unnecessary dependencies
80 A number of modules were included as test dependencies that are
81 only used by the author when preparing releases. These have been
82 removed as dependencies. Petr Pisar on GitHub #11
83
85 NEW CODE(s)
86 Converted tests to use Test::Inter
87 Now uses the same module to do tests as all my other modules.
88
90 NEW CODE(s)
91
93 NEW CODE(s)
94 Removed travis file from the tarball
95 The tarball had a .travis.yml file in it that wasn't in the
96 MANIFEST file. Since the MANIFEST file is automatically generated
97 by the perl mkmanifest tool, since it didn't see the .travis.yml
98 file, I have excluded it from the tarball. Reported by Mohammad S
99 Anwar on GitHub (#10)
100
102 NEW CODE(s)
103 (*) Locale-Codes removed from core
104 Locale-Codes will no longer be distributed in new versions of perl.
105
106 Documentation fix
107 Fixed an incorrect link reported by Mohammad S Anwar on GitHub (#9)
108
110 NEW CODE(s)
111
113 NEW CODE(s)
114
116 NEW CODE(s)
117 (*) Deprecated in core
118 Because correct usage of any of the Locale::Codes modules requires
119 that they be kept up-to-date, I have long felt that it should not
120 be distributed as a core module. After discussion on the
121 perl5-porters list, it is agreed, and the deprecation process has
122 been started. Starting with perl 5.28.0, Locale-Codes will be
123 flagged as deprecated, and it will be removed in version 5.30.0 .
124
125 Thanks to p5p-porters (especially Dagfinn Ilmari Mannsaker) for
126 discussion and guidance.
127
128 Changes from a github pull request applied
129 A couple minor changes (updated .travis.yml to include newest
130 versions of perl; and a couple changes to pod_coverage.t) reported
131 by lancew on GitHub.
132
133 Got rid of Build.PL
134 Simplified things by only supporting one of Makefile.PL/Build.PL
135 (and the latter has been removed from perl core some time ago). RT
136 123572
137
138 Fixed INSTALLDIRS
139 The behavior of installing core modules changed in 5.12 a bit, and
140 Makefile.PL now reflects that. RT 123571
141
143 NEW CODE(s)
144
146 NEW CODE(s)
147 Fixed the default error condition in legacy modules.
148 With the addition of the OO module, better error handling was added
149 (and it was on by default). The non-OO (legacy) modules did not
150 report errors, so code that uses them, would now behave differently
151 if invalid data were passed in.
152
153 I have turned off error handling by default in the legacy modules.
154 The show_errors method was added to each of the non-OO modules to
155 report errors if desired.
156
157 Reported by dmaestro on GitHub.
158
160 NEW CODE(s)
161
163 NEW CODE(s)
164 Tests no longer require (.) in INC
165 As of perl 5.25.11, (.) is being removed from INC. I had to adjust
166 the tests accordingly.
167
169 NEW CODE(s)
170 (*) Rewrote as OO module
171 The core module (Locale::Codes) is now an OO module that can be
172 used directly. All of the other modules (Locale::Codes::TYPE) are
173 still the older functional interfaces and remain unchanged.
174
175 Added some constants
176 Historically, the constant names used to identify the codesets have
177 been named inconsistently. The original constants for codesets
178 are:
179
180 Type Constants
181
182 country LOCALE_CODE_*
183 currency LOCALE_CURR_*
184 language LOCALE_LANG_*
185
186 script LOCALE_SCRIPT_*
187 langfam LOCALE_LANGFAM_*
188 langvar LOCALE_LANGVAR_*
189 langext LOCALE_LANGEXT_*
190
191 For consistencies sake, I have added some new codes (which are
192 otherwise identical to the irregularly named codes):
193
194 country LOCALE_COUNTRY_*
195 currency LOCALE_CURRENCY_*
196 language LOCALE_LANGUAGE_*
197
198 Going forward, all constants will include the full name of the code
199 type.
200
201 Non-OO modules are now generated
202 All non-OO modules are now automatically generated. This will make
203 it easier to keep them 100% consistent as well as making it easier
204 to add new types of code sets.
205
206 All of the documentation for them is also generated except for the
207 description of the code sets. That has been moved into the
208 Locale::Codes::Types document.
209
210 Fixed a bug where constants were not exported
211 Some of the constants for some of the newer code sets were not
212 exported properly. This was fixed when I started generating the
213 non-OO modules, but was reported (after I had already fixed it in
214 development) as RT 119741 .
215
217 Added Czech republic aliases back in
218 Common Czech republic aliases disappeared from the standards, so I
219 added them back in. Rob Emery
220
222 NEW CODE(s)
223 Jiri Bohac noted that they were needed so this was release a couple
224 weeks earlier than planned.
225
227 NEW CODE(s)
228
230 Added UN codes back in
231 The UN codes have been added back in as their own list of codes.
232 Jarkko Hietaniemi
233
234 Added GENC codes
235 The GENC codes have been added. These are the new US Government
236 codes that replace the FIPS-10 codes. They are based on, but not
237 identical to the ISO 3166 codes.
238
240 NEW CODE(s)
241 Tests reworked
242 Improved test suite (and made some changes to Codes.pm) based on
243 Devel::Cover. Test suite now has 100% coverage.
244
246 NEW CODE(s)
247
249 NEW CODE(s)
250 (!) Removed alias_code function
251 The alias_code function was preserved for backward compatibility,
252 but has been deprecated since 3.20. It has been removed.
253
255 NEW CODE(s)
256 Documentation improvements
257 Many changes to the formatting in the documentation to improve it.
258 Suggested by Pete Houston.
259
261 NEW CODE(s)
262
264 NEW CODE(s)
265 Filled out LOCALE_LANG_TERM codeset
266 The terminologic language codes only included codes from languages
267 where the ISO specified both a bibliographic code and a
268 terminologic code. If both are not specified, the better solution
269 was to use the code for both code sets. Prompted by a suggestion
270 by Jarkko Hietaniemi.
271
272 Moved repository to GitHub
273 Suggested by Gabor Szabo.
274
276 NEW CODE(s)
277
279 NEW CODE(s)
280 Bug fixes
281 Fixed a bug in the scripts used to extract data from spreadsheets
282 that prevented the SHP currency code from being found. RT 94229
283
285 NEW CODE(s)
286 alias_code remove date set
287 The alias_code function exists for backward compatibility. It has
288 been deprecated since version 3.20 when it was replaced by
289 rename_country_code. The alias_code function will be removed in
290 the December 2014 release.
291
292 Bug fixes
293 Fixed a problem that was preventing rename_* functions to not work.
294 RT 92680.
295
297 NEW CODE(s)
298 ISO 3166 country codes improved
299 ISO 3166 is now browsable online (previously, only the alpha-2
300 codes were) and it contains more accurate information than the
301 previous sources, so I've switched to using the full standard. In
302 response to RT 92303 which reported some codes being 'retired' that
303 should not have been.
304
305 Bug fixes
306 Fixed the pod test files so that pod tests won't get run at install
307 time. In response to RT 91167.
308
310 NEW CODE(s)
311
313 NEW CODE(s)
314 * FIPS-10 country codes removed
315 As of June, the FIPS codes are not being published in their
316 entirety. Only changes to the codes are published. This adds a
317 huge layer of complexity to maintaining the set, which is not worth
318 doing considering that the set is deprecated. As such, the code
319 set is no longer supported.
320
322 Documentation fixes
323 Some of the examples were not correct. RT 84589
324
325 Some typos corrected. RT 85692
326
328 NEW CODE(s)
329
331 NEW CODE(s)
332 Syria alias
333 Syria added as an alias. RT 82747
334
335 FIPS-10 country codes deprecated
336 The FIPS-10 document is being withdrawn. It was deprecated in
337 2008, and is being updated now only until all the agencies that use
338 it have switched to something else. The current version no longer
339 lists the long names for countries. These long names (such as
340 'Republic of Albania' for Albania) only appeared in the old FIPS-10
341 document which is no longer available, so they are no longer
342 available in this module.
343
344 I will continue to support the FIPS-10 codeset as long as it is
345 available, but at that point, it will be withdrawn immediately. If
346 an official end-of-life date is announced, I will include a notice
347 here. Otherwise, support for the codeset will be discontinued when
348 the document is withdrawn.
349
350 You are encouraged to no longer use the FIPS-10 codeset.
351
352 Domain country codes now come from ISO 3166
353 The IANA domain codes have changed slightly. The IANA no longer
354 publishes a list of countries associated with their codes.
355 Instead, they use the ISO 3166 codes and country names. However,
356 they support a few non-standard codes, so I will continue to
357 maintain this codeset. The domain codes are now lowercase to
358 correspond to the ISO 3166 codes.
359
361 NEW CODE(s)
362
364 NEW CODE(s)
365 Updated perl version required
366 Changed 'require 5.002' (which dated back to the version 2.xx
367 Locale-Codes) to 'require 5.006'. Some features used in Locale-
368 Codes are not supported that far back. Nicholas Clark
369
370 Sorted deprecated codes
371 The codes in the generated deprecated codes modules were not sorted
372 making version diffs bigger than they should be. Nicholas Clark
373
375 NEW CODE(s)
376
378 NEW CODE(s)
379 Added limited support for deprecated codes
380 The code2XXX, XXX2code, all_XXX_codes, and all_XXX_names functions
381 now support retired codes. RT 71124
382
383 Fixed capitalization
384 The 'South Sudan' country was all caps. RT 71024
385
386 Pod tests off by default
387 The pod tests will not run at install time. RT 71122
388
389 Codesets may be specified by name
390 All codesets may be specified by a constant or by their name now.
391 Previously, they were specified only by a constant.
392
393 alias_code deprecated
394 The alias_code function exists for backward compatibility. It has
395 been replaced by rename_country_code . The alias_code function
396 will be removed sometime after September, 2013 .
397
398 Code cleanup
399 All work is now done in the central module (Locale::Codes).
400 Previously, some was still done in the wrapper modules
401 (Locale::Codes::*) but that is gone now.
402
403 Added LangFam module
404 Added Language Family codes (langfam) as defined in ISO 639-5.
405
407 NEW CODE(s)
408 No longer use CIA data
409 The CIA world added non-standard values, so I no longer use it as a
410 source of data. Based on a report by Michiel Beijen.
411
413 NEW CODE(s)
414 Added new types of codes
415 Added Language Extension codes (langext) and Language Variation
416 codes (langvar) as defined in the IANA language registry.
417
418 Added new codeset(s)
419 Added language codes from ISO 639-5
420
421 Added language/script codes from the IANA language subtag registry
422
423 Bug fixes
424 Fixed an uninitialized value warning. RT 67438
425
426 Fixed the return value for the all_XXX_codes and all_XXX_names
427 functions. RT 69100
428
429 Reorganized code
430 Reorganized modules to move Locale::MODULE to Locale::Codes::MODULE
431 to allow for cleaner future additions. The original four modules
432 (Locale::Language, Locale::Currency, Locale::Country,
433 Locale::Script) will continue to work, but all new sets of codes
434 will be added in the Locale::Codes namespace.
435
437 NEW CODE(s)
438
440 NEW CODE(s)
441 Minor fixes
442 Added version number to Makefile.PL/Build.PL requirement for POD
443 testing modules. RT 62247
444
445 Changed 'use vars' to 'our'
446
448 NEW CODE(s)
449 Bug fixes
450 Stripped out some HTML that got included with some codes.
451
453 NEW CODE(s)
454
456 NEW CODE(s)
457 Reorganized code
458 Renamed test.pl to testfunc.pl to avoid causing an error when built
459 as part of perl.
460
462 NEW CODE(s)
463 Added new codeset(s)
464 Added the IANA domain names to Country
465
466 Bug fixes
467 Fixed a problem that produced warnings with perl 5.11.5. Jerry D.
468 Hedden
469
471 NEW CODE(s)
472 Reorganized code
473 Moved support files into the Locale::Codes namespace.
474
475 The work done in each of the Locale::XXX modules was virtually
476 identical to each other. It has all been moved to a central module
477 and the Locale::XXX modules are now just wrappers.
478
479 (!) Changed XXX_code2code behavior slightly
480 In previous versions, passing in the same code set for both code
481 set arguments would automatically return undef. For example:
482
483 country_code2code('bo',LOCALE_CODE_ALPHA_2,LOCALE_CODE_ALPHA_2);
484 => undef
485
486 This doesn't seem like reasonable behavior, so it has been changed
487 to allow the same code set:
488
489 country_code2code('bo',LOCALE_CODE_ALPHA_2,LOCALE_CODE_ALPHA_2);
490 => 'bo'
491
492 Note that if an invalid code is passed in, undef will still be
493 returned:
494
495 country_code2code('bol',LOCALE_CODE_ALPHA_2,LOCALE_CODE_ALPHA_2);
496 => undef
497
498 Added many semi-private routines
499 Previous versions had only two semi-private routines:
500 rename_country and alias_code which had the ability to modify the
501 internal data in a couple of very limited ways. It was requested
502 (in an anonymous posting by someone named Steve and also by Steve
503 Hay) that better support for modifying internal data, so a full set
504 of routines were added.
505
506 The full set of routines includes:
507
508 rename_country
509 rename_language
510 rename_currency
511 rename_script
512
513 add_country
514 add_language
515 add_currency
516 add_script
517
518 delete_country
519 delete_language
520 delete_currency
521 delete_script
522
523 add_country_alias
524 add_language_alias
525 add_currency_alias
526 add_script_alias
527
528 delete_country_alias
529 delete_language_alias
530 delete_currency_alias
531 delete_script_alias
532
533 rename_country_code
534 rename_language_code
535 rename_currency_code
536 rename_script_code
537
538 add_country_code_alias
539 add_language_code_alias
540 add_currency_code_alias
541 add_script_code_alias
542
543 delete_country_code_alias
544 delete_language_code_alias
545 delete_currency_code_alias
546 delete_script_code_alias
547
548 New aliases
549 Added "UK" alias. Steve Hay
550
552 Fixed Makefile.PL and Build.PL
553 They now install as core modules as they are supposed to. Reported
554 in RT 54526
555
557 NEW CODE(s)
558 (*) New maintainer
559 From 1997 to 2004, Locale::Codes was maintained by Neil Bowers.
560 Unfortunately, no updates were made from June 2004 to January 2010.
561 During that time, a number of changes were made to the standards,
562 so the data included was out-of-date.
563
564 I contacted Neil to get his permission to assume maintenance of the
565 module, and he kindly agreed.
566
567 (*) (!) All codes are generated from standards
568 All of the values returned by the various functions are now values
569 directly from the standards. This means that the values returned in
570 the 2.xx series are not necessarily the same as the values returned
571 here.
572
573 As an example, the ISO 3166 standard which lists country codes
574 refers to the country associated with the code "bo" as "Bolivia,
575 Plurinational State of", so that is what is returned. In the 2.xx
576 series, "Bolivia" was returned. Also, the country names vary from
577 one standard to another. So the code "bol" which is maintained by
578 the United Nations returns the name of the country as "Bolivia
579 (Plurinational State of)". Some common aliases have been added, so
580 you can still request a code associated with a county name
581 "Bolivia".
582
583 Since the data comes from the standards, some "incorrect" values
584 are no longer supported. For example, 2.07 treated "Zaire" as an
585 alias for "Congo", but the country changed it's name, and "Zaire"
586 is not in the standard, so it has been dropped in 3.00.
587
588 Added new codeset(s)
589 FIPS 10 country codes (requested in RT 1755)
590
591 Alpha-3 and Term language codes (requested in RT 11730)
592
593 Numeric currency codes (requested in RT 18797)
594
595 (*) (!) Locale::Script changed
596 In 2.xx, Locale::Script assigned scripts to country codes, which is
597 NOT how it is done currently in the standards. It appears that an
598 older version of ISO 15924 did this, but I haven't found an old
599 version to confirm that, and in any case, that is not the case in
600 the current standards.
601
602 As a result, the Locale::Script module is completely incompatible
603 with the 2.xx version with respect to the types of codes it
604 supports. None of the old codes will work.
605
606 Added missing functions
607 I've added in some functions which were "missing" previously (since
608 there was only one set of codes supported, the code2code functions
609 didn't apply):
610
611 language_code2code
612 currency_code2code
613
614 so the interfaces for each type of codes are consistent.
615
616 (!) Dropped support for _alias_code
617 In Locale::Country, _alias_code was an allowed, but deprecated
618 function which was documented to be supported in the 2.xx series.
619 I've removed it.
620
621 (!) All functions return the standard value
622 code2country (and other equivalent functions) now returns the name
623 of the country specified in the standard (if the different
624 standards refer to the country by different variations in the name,
625 the results will differ based on the CODESET)
626
627 (!) rename_country function altered
628 The rename_country function from 2.07 would guess the CODESET
629 (unlike all other functions which used a default of
630 LOCALE_CODE_ALPHA_2). The guess can cause problems since (with the
631 addition of FIPS) codes may appear in different codesets for
632 different countries. The behavior has been changed to be the same
633 as other functions (default to LOCALE_CODE_ALPHA_2).
634
636 Made $_ local in the initialization code for each module change
637 back-propagated from Perl distribution
638
639 Removed two non ISO-8859-1 characters from language names change
640 back-propagated from Perl distribution
641
642 Added the following aliases, with a test case for each
643 - Burma added to Myanmar
644 - French Southern and Antarctic Lands to
645 French Southern Territories patch from TJ Mather
646
647 "Canadian Dollar" was misspelled as "Candian Dollar"
648 - noted by Nick Cabatoff, patch from Michael Hennecke
649
650 Changes to Locale::Country reflecting changes in ISO 3166
651 - added Aland Islands (ax, ala, 248)
652 - YUGOSLAVIA is now SERBIA AND MONTENEGRO
653 YU => CS
654 YUG => SCG
655 891 => 891 (unchanged)
656 (YUGOSLAVIA retained as an alias)
657 - EAST TIMOR changed to TIMOR-LESTE
658 (old name retained as an alias)
659 - three letter code for Romania changed from ROM to ROU
660
661 ZAIRE is now CONGO, THE DEMOCRATIC REPUBLIC OF THE
662 ZR => CD
663 ZAR => COD
664 180 => 180 (unchanged)
665 (ZAIRE retained as alias)
666
668 The four modules which have data after __DATA__ weren't closing the
669 DATA filehandle after reading from it, which they should. Bug and
670 patch from Steve Hay.
671
673 Added three letter codes for the countries that were missing them.
674 Patch from TJ Mather.
675
676 Documentation bug: one of the examples used => where the lvalue was
677 a constant, which isn't allowed, unless you put the () with the
678 constant to force the right interpretation. Pointed out by TJ
679 Mather and MYT.
680
681 Updated the URL for the appendix in the CIA world factbook. Patch
682 from TJ Mather.
683
685 Updated according to changes in ISO 3166-1 described in ISO 3166-1
686 newsletters V-4 and V-5, dated 2002-05-20:
687 - Kazakstan is now "Kazakhstan"
688 - Macau is now "Macao" The old names are retained as aliases.
689
690 The alpha-2 and alpha-3 codes for East Timor have changed:
691 tp -> tl
692 tmp -> tls the numeric code stays 626. If you want to support
693 the old codes, you can use the semi-private function alias_code().
694
696 Fixed a typo in the alias for the Vatican, reported (with patch) by
697 Philip Newton.
698
699 Added "Moldova" as an alias for "Moldova, Republic of"
700
701 Updated Makefile.PL to include AUTHOR and ABSTRACT
702
704 Added semi-private routine rename_country() to Locale::Country,
705 based on a patch from Iain Chalmers.
706
707 Added test rename.t for the above function.
708
709 Renamed _alias_code to be alias_code. Have retained the old name
710 for backwards compatibility. Will remove it when the major version
711 number next changes.
712
714 Split the documentation for all modules into separate pod files.
715
716 Made sure all =over were =over 4; some were other values.
717
718 The code2code() methods had one more shift than was needed.
719
721 Created Locale::Script which provides an interface to the ISO codes
722 for identification of scripts (writing scripts, rather than perl
723 style scripts). The codes are defined by ISO 15924, which is
724 currently in final draft. Thanks to Jarkko for pointing out this
725 new standard. All three code sets are supported, and a test-suite
726 added.
727
728 Added support for country name variants to Locale::Country, so that
729 country2code('USA')
730 country2code('United States')
731 country2code('United States of America') will all return 'us'.
732 This had been in the LIMITATIONS section since the first version.
733 Patch from TJ Mather with additional variants from me. Added test-
734 cases for these.
735
736 Added VERSION to Locale::Constants. Thanks to Jarkko for pointing
737 that it was missing.
738
739 Should really have bumped major version with previous release,
740 since there was a change to the API.
741
743 Added Locale::Constants, which defines three symbols for
744 identifying which codeset is being used:
745
746 LOCALE_CODE_ALPHA_2
747 LOCALE_CODE_ALPHA_3
748 LOCALE_CODE_NUMERIC
749
750 Updated Locale::Country to support all three code sets defined by
751 ISO 3166. This was requested by Keith Wall. I haven't added
752 multiple codeset support to the other modules yet - I'll wait until
753 someone asks for them.
754
756 Added Locale::Currency, contribution from Michael Hennecke.
757
758 Added test suite for it (t/currency.t) and added test cases to
759 t/all.t for the all_* functions.
760
762 Fixed very minor typos from 1.03!
763
765 Updated Locale::Country:
766 - fixed spelling of a few countries
767 - added link to a relevant page from CIA world factbook
768
769 Updated Locale::Language:
770 - fixed typo in the documentation (ISO 939 should be 639)
771
773 Updated Locale::Country and Locale::Language to reflect changes in
774 the relevant ISO standards. These mainly reflect languages which
775 are new to the relevant standard, and changes in the spelling of
776 some country names.
777
778 Added official URLs for the standards to the SEE ALSO sections of
779 the doc for each module.
780
781 Thanks to Jarkko Hietaniemi for pointing me at the pages with
782 latest versions of ISO 3166 and 639.
783
785 Added Locale::Country::_alias_code() so that 'uk' can be added as
786 the code for "United Kingdom", if you want it. This was prompted
787 by Ed Jordan.
788
789 Added a new test suite for handling this case, and extended the
790 existing test-suite to include testing of the case where 'uk'
791 hasn't been defined as a valid code.
792
794 First public release to CPAN
795
797 Locale::Codes
798
800 See Locale::Codes for full author history.
801
802 Currently maintained by Sullivan Beck (sbeck@cpan.org).
803
805 Copyright (c) 2001-2010 Neil Bowers
806 Copyright (c) 2010-2021 Sullivan Beck
807
808 This module is free software; you can redistribute it and/or modify it
809 under the same terms as Perl itself.
810
811
812
813perl v5.34.0 2021-09-06 Locale::Codes::Changes(3)