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