Language change proposal

Niclas Eklund nick@REDACTED
Wed Oct 22 13:44:39 CEST 2003



Hello!

Xref supplies a very flexible solution. See ('-deprecated(...)'):

http://www.erlang.org/doc/r9c/lib/tools-2.3/doc/html/xref.html


/Nick

> 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