Language change proposal
Joe Armstrong
joe@REDACTED
Wed Oct 22 13:26:30 CEST 2003
Hi everybody - I'd like to propose the following language change:
(It's *very* easy to implement)
I want all Erlang modules to be tagged with a "language version"
Like this ...
------------------------------------------------------------------------
Suppose the next version of Erlang is 5.3 then:
1) All modules *must* start
-module(XXXX).
-vsn("5.3").
2) Any module *without* a version is assumed to be "5.2"
3) If there is no version the compiler should complain like hell
with a warning that cannot be turned off that an explicit language
version is not present.
4) There should be files called "depreciated_5.3.{erl,txt}"
that tell the user what language language features and library
routine have been depreciated in version 5.3
The text file should describe the depreciated features.
The Erlang file can be used by the compiler to provide warnings about
depreciated features.
Then - somewhat later - when we change to version 5.4
The same rules apply - with one exception - warnings issued about
depreciated constructs in 5.3 now become hard errors - and there is no
way to turn off this behaviour.
-------------------------------------------------------------------------
Versions should be numbered X.Y.Z
Bumping X is done for syntax changes to Erlang, or changes in the
semantics if BIFs etc. (serious things).
Bumping Y is done for depreciated library functions bug fixes in libraries
Bumping Z is done for cosmetic reasons
--------------------------------------------------------------------------
*******
* Why *
*******
We need enforceable mechanisms to *remove* things from the Erlang
libraries and from the language.
Erlang is getting bigger and things are not being removed.
As regards customers who crave backwards compatibility tell them that
if they want to use the new stuff they will have to change their code.
The version that they used in their products should always be
supported into the future - but the cost of doing so should increase
as you bump the version numbers.
This is *exactly* what the chip manufacturers do - have you ever
tried to buy "old" memory chips - they cost a fortune !!!!
IMHO their should be no language changes until it can be
realistically demonstrated that we can remove things from the
language.
/Joe
More information about the erlang-questions
mailing list