Difference between revisions of "DIPs"
Klickverbot (talk | contribs) |
(add "deprecated" warning to DIP list) |
||
(101 intermediate revisions by 42 users not shown) | |||
Line 1: | Line 1: | ||
+ | <div style="background:#ffd; padding: 0.5ex 0.5ex;"> | ||
+ | <span style="font-size: 1.4em; color: #ca4;">⚠</span> This is an archive of DIPs created before 2016-07-01. Please check the [https://github.com/dlang/DIPs new repository] for an up-to-date list and information about the DIP process. | ||
+ | </div> | ||
+ | |||
+ | |||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
! ID | ! ID | ||
Line 22: | Line 27: | ||
| [[DIP4]] | | [[DIP4]] | ||
| Properties | | Properties | ||
− | | [[DIP6|Superseded]] | + | | [[DIP6|Superseded by DIP6]] |
| an alternate usage/definition syntax for properties. | | an alternate usage/definition syntax for properties. | ||
|- | |- | ||
| [[DIP5]] | | [[DIP5]] | ||
| Properties 2 | | Properties 2 | ||
− | | [[DIP6|Superseded]] | + | | [[DIP6|Superseded by DIP6]] |
| a variant of DIP4. | | a variant of DIP4. | ||
|- | |- | ||
Line 77: | Line 82: | ||
| [[DIP15]] | | [[DIP15]] | ||
| Import of packages | | Import of packages | ||
− | | | + | | [[DIP37|Superseded by DIP37]] |
| Improve imports of packages with submodules. | | Improve imports of packages with submodules. | ||
|- | |- | ||
| [[DIP16]] | | [[DIP16]] | ||
| Transparently substitute module with package | | Transparently substitute module with package | ||
− | | | + | | [[DIP37|Superseded by DIP37]] |
| | | | ||
|- | |- | ||
| [[DIP17]] | | [[DIP17]] | ||
− | | | + | | Sane volatile statement |
− | | [[DIP20| | + | | [[DIP20|Superseded by DIP20]] |
| | | | ||
|- | |- | ||
Line 97: | Line 102: | ||
| [[DIP20]] | | [[DIP20]] | ||
| Volatile read/write intrinsics | | Volatile read/write intrinsics | ||
− | | | + | | '''Implemented''' |
| Intrinsics to perform C-style volatile loads/stores from/to memory. | | Intrinsics to perform C-style volatile loads/stores from/to memory. | ||
|- | |- | ||
Line 106: | Line 111: | ||
|- | |- | ||
| [[DIP22]] | | [[DIP22]] | ||
− | | Private symbol visibility | + | | Private symbol (in)visibility |
| Draft | | Draft | ||
| Modification of private & Co symbol rules to reduce name clashes. Add internal linkage storage class. | | Modification of private & Co symbol rules to reduce name clashes. Add internal linkage storage class. | ||
− | |||
|- | |- | ||
| [[DIP23]] | | [[DIP23]] | ||
| Fixing property redux | | Fixing property redux | ||
| Draft | | Draft | ||
− | |Initial | + | | Initial |
|- | |- | ||
| [[DIP24]] | | [[DIP24]] | ||
Line 120: | Line 124: | ||
| Draft | | Draft | ||
| Fixing properties and optional parens. Only those. In a general and straightforward way. (counter proposal to DIP23) | | Fixing properties and optional parens. Only those. In a general and straightforward way. (counter proposal to DIP23) | ||
+ | |- | ||
+ | | [[DIP25]] | ||
+ | | Sealed references | ||
+ | | '''Implemented 2.067''' | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP26]] | ||
+ | | Properties the other way round | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP27]] | ||
+ | | Function definition | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP28]] | ||
+ | | Property definition | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP29]] | ||
+ | | Unique pointers | ||
+ | | Draft | ||
+ | | Unique pointers can be implicitly cast to/from immutable and shared. | ||
+ | |- | ||
+ | | [[DIP30]] | ||
+ | | Delegate definition | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP31]] | ||
+ | | Defined compile time paradox resolution | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP32]] | ||
+ | | Uniform tuple syntax | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP33]] | ||
+ | | A standard exception hierarchy | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP34]] | ||
+ | | Static array literals | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP35]] | ||
+ | | [[DIP25|Sealed References]] Amendment | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP36]] | ||
+ | | Rvalue References | ||
+ | | Rejected | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP37]] | ||
+ | | Importing Packages as if They Were Modules | ||
+ | | '''Implemented''' | ||
+ | | Allow for packages to be imported as if they were modules by providing a ''package.d'' file. | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP38]] | ||
+ | | Safe references without runtime checks | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP39]] | ||
+ | | Safe rvalue references: backwards compatible, safe against ref/nonref code evolution, compatible with UFCS and DIP38. | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP40]] | ||
+ | | Template parameter deduction for constructors. | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP41]] | ||
+ | | dmd/rdmd command line overhaul. | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP42]] | ||
+ | | Support enum E(T) = expression; for manifest constants | ||
+ | | '''Implemented''' | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP43]] | ||
+ | | D/Objective-C | ||
+ | | Draft | ||
+ | | Adds language extensions to make D ABI compatible with Objective-C. | ||
+ | |- | ||
+ | | [[DIP44]] | ||
+ | | scope(this) | ||
+ | | Draft | ||
+ | | Extends scope guards to class / struct lifetime. | ||
+ | |- | ||
+ | | [[DIP45]] | ||
+ | | making export an attribute | ||
+ | | Draft | ||
+ | | Turn export into an attribute and fix various shortcomings of its current implementation. | ||
+ | |- | ||
+ | | [[DIP46]] | ||
+ | | region based storage allocation | ||
+ | | Draft | ||
+ | | Library addition to GC to allow for region based allocation strategies | ||
+ | |- | ||
+ | | [[DIP47]] | ||
+ | | Outline Member Functions of Aggregates | ||
+ | | Draft | ||
+ | | Allow class/struct member function definitions to be placed outside of the class/struct declaration. | ||
+ | |- | ||
+ | | [[DIP48]] | ||
+ | | Interface specifications for aggregate types | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP49]] | ||
+ | | Define qualified postblit | ||
+ | | Draft | ||
+ | | Fix D2 type-system hole. | ||
+ | |- | ||
+ | | [[DIP50]] | ||
+ | | AST Macros | ||
+ | | Draft | ||
+ | | Abstract Syntax Tree macros. A general solution for language extensions. | ||
+ | |- | ||
+ | | [[DIP51]] | ||
+ | | not-virtual-by-default | ||
+ | | Draft | ||
+ | | Change the behaviour of class methods so they are not virtual by default. | ||
+ | |- | ||
+ | | [[DIP52]] | ||
+ | | Implicit conversions | ||
+ | | Draft | ||
+ | | Add more implicit conversion options for user-defined types. | ||
+ | |- | ||
+ | | [[DIP53]] | ||
+ | | Qualified constructor revisited | ||
+ | | Draft | ||
+ | | Make qualified constructor definition more simple and understandable. | ||
+ | |- | ||
+ | | [[DIP54]] | ||
+ | | Revamp of Phobos tuple types | ||
+ | | Draft | ||
+ | | Address frequent informational confusion around std.typetuple & friends, initiate transition to std.meta.* package | ||
+ | |- | ||
+ | | [[DIP55]] | ||
+ | | Access Data Items In Ancestor Stack Frames | ||
+ | | Draft | ||
+ | | Support for *caller pointer in functions and adding class features to functions | ||
+ | |- | ||
+ | | [[DIP56]] | ||
+ | | Provide Pragma to control function inlining | ||
+ | | '''Implemented''' | ||
+ | | Add pragma(inline,true); and pragma(inline,false); | ||
+ | |- | ||
+ | | [[DIP57]] | ||
+ | | static foreach | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP58]] | ||
+ | | Make ".." a binary operator | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP59]] | ||
+ | | ?? | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP60]] | ||
+ | | Add @nogc function attribute | ||
+ | | '''Implemented''' | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP61]] | ||
+ | | Add namespace scopes to support calling external C++ functions in C++ namespaces | ||
+ | | '''Implemented''' | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP62]] | ||
+ | | Volatile type qualifier for unoptimizable variables in embedded programming | ||
+ | | '''Rejected''' | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP63]] | ||
+ | | Operator overloading for raw templates | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP64]] | ||
+ | | Attribute Cleanup | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP65]] | ||
+ | | Exception handling syntax cleanup | ||
+ | | '''Rejected''' | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP66]] | ||
+ | | (Multiple) alias this | ||
+ | | Conditionally Approved | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP67]] | ||
+ | | Associative Ranges | ||
+ | | '''Rejected''' | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP68]] | ||
+ | | Add @nogc attribute on types | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP69]] | ||
+ | | Implement scope for escape proof references | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP70]] | ||
+ | | @api/extern(noinfer) attribute | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP71]] | ||
+ | | 'noscope' and 'out!param' attributes | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP72]] | ||
+ | | Provide a Uniform Compiler Info Syntax | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP73]] | ||
+ | | D Drafting Library | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP74]] | ||
+ | | Reference Counted Class Objects | ||
+ | | Draft | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP75]] | ||
+ | | Release Process | ||
+ | | Approved experimentally for 2.068 | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP76]] | ||
+ | | Autodecode should not throw | ||
+ | | Draft | ||
+ | | Like std.utf.byDchar, it should emit Replacement Character instead | ||
+ | | | ||
+ | |- | ||
+ | | [[DIP77]] | ||
+ | | Fix Unsafe RC Pass By Ref | ||
+ | | Draft | ||
+ | | Fix memory safety issue in DIP25 | ||
+ | |- | ||
+ | | [[DIP78]] | ||
+ | | AST Macros Lite | ||
+ | | Rejected | ||
+ | | Abstract Syntax Tree macros without syntax extensions in the language. | ||
+ | |- | ||
+ | | [[DIP79]] | ||
+ | | Negation of attributes | ||
+ | | Draft | ||
+ | | Negation of attributes without the need for new keywords. | ||
+ | |- | ||
+ | | [[DIP80]] | ||
+ | | Phobos additions | ||
+ | | Draft | ||
+ | | Additions that would make phobos even more useful. | ||
+ | |- | ||
+ | | [[DIP81]] | ||
+ | | Writing files at compile time | ||
+ | | Draft | ||
+ | |- | ||
+ | | [[DIP82]] | ||
+ | | static unittest blocks | ||
+ | | Draft | ||
+ | | Allow for unittest blocks to be declared inside of templates which are compiled and run exactly once rather than once per instantiation. | ||
+ | |- | ||
+ | | [[DIP83]] | ||
+ | | Configurable Assert Diagnostics | ||
+ | | Draft | ||
+ | | Allow for assert's to do pretty printing of its failing expression. Printing is configurable via specific sets of (template) function overloads. | ||
+ | |- | ||
+ | | [[DIP84]] | ||
+ | | Static Inheritance | ||
+ | | Draft | ||
+ | | Express intent to the compiler that a user-defined type conforms to a static interface. | ||
+ | |- | ||
+ | | [[DIP85]] | ||
+ | | Lazy initialization of const members | ||
+ | | Draft | ||
+ | | Allow limited mutation of const objects, ensuring the mutation is not observable by external code. | ||
+ | |- | ||
+ | | [[DIP86]] | ||
+ | | "deprecated" attribute/storage class consistency | ||
+ | | Draft | ||
+ | | Allow "deprecated ( stringLiteral )" to act as a storage class. | ||
+ | |- | ||
+ | | [[DIP87]] | ||
+ | | Enhanced foreign-language binding | ||
+ | | Draft | ||
+ | | Improve extern() to be more generic and support binding symbols that share a name with a D keyword. | ||
+ | |- | ||
+ | | [[DIP88]] | ||
+ | | Named Parameters | ||
+ | | Draft | ||
+ | | Allow specifying named function parameters with `arg:` | ||
+ | |- | ||
+ | | [[DIP89]] | ||
+ | | @mutable members in immutable data structures | ||
+ | | Draft | ||
+ | | Proposes an officially sanctioned way to mutate members in immutable data structures. | ||
+ | |- | ||
+ | | [[DIP90]] | ||
+ | | Scoped Pointers | ||
+ | | Draft | ||
+ | | Tag pointers with 'scope' and 'return scope' to prevent pointer escapes | ||
|} | |} | ||
+ | |||
+ | ---- | ||
+ | [[Category:DIP]] |
Latest revision as of 22:34, 13 July 2016
⚠ This is an archive of DIPs created before 2016-07-01. Please check the new repository for an up-to-date list and information about the DIP process.
ID | Title | Status | Description | |
---|---|---|---|---|
DIP1 | Template DIP | Draft | This is a DIP template that can be used as a model to start a new proposal. | |
DIP2 | Const code bloat | Approved | proposed solution for bug 1961. | |
DIP3 | Remove inheritance protection | Approved | non-public inheritance in a single inheritance language that has a single root object hierarchy makes little sense. | |
DIP4 | Properties | Superseded by DIP6 | an alternate usage/definition syntax for properties. | |
DIP5 | Properties 2 | Superseded by DIP6 | a variant of DIP4. | |
DIP6 | Annotations | Approved | extend the D programming language with annotations. | |
DIP7 | Operator overloading | Approved | Revamped operator overloading. | |
DIP8 | Improving Runtime Type Info | Draft | Templating RTTI. | |
DIP9 | Redo toString API | Draft | Replace inefficient aggregate toString API with efficient delegate-based version that supports formatting. | |
DIP10 | Qualified constructors and destructors for structs | Draft | ||
DIP11 | Automatic downloading of imports | Draft | Support automatically downloading imported files via new import path specifications or pragmas. | |
DIP12 | C API Headers | Approved | Collection of D headers for common C libraries. | |
DIP13 | Import path binding | Draft | Allow to bind an import path to a package. | |
DIP14 | Import path binding in source code | Draft | Allow to bind an import path to a package from within sources. | |
DIP15 | Import of packages | Superseded by DIP37 | Improve imports of packages with submodules. | |
DIP16 | Transparently substitute module with package | Superseded by DIP37 | ||
DIP17 | Sane volatile statement | Superseded by DIP20 | ||
DIP18 | Non-GC Threads | Draft | ||
DIP20 | Volatile read/write intrinsics | Implemented | Intrinsics to perform C-style volatile loads/stores from/to memory. | |
DIP21 | Fixing property | Draft | ||
DIP22 | Private symbol (in)visibility | Draft | Modification of private & Co symbol rules to reduce name clashes. Add internal linkage storage class. | |
DIP23 | Fixing property redux | Draft | Initial | |
DIP24 | Fixing properties and optional parens. | Draft | Fixing properties and optional parens. Only those. In a general and straightforward way. (counter proposal to DIP23) | |
DIP25 | Sealed references | Implemented 2.067 | ||
DIP26 | Properties the other way round | Draft | ||
DIP27 | Function definition | Draft | ||
DIP28 | Property definition | Draft | ||
DIP29 | Unique pointers | Draft | Unique pointers can be implicitly cast to/from immutable and shared. | |
DIP30 | Delegate definition | Draft | ||
DIP31 | Defined compile time paradox resolution | Draft | ||
DIP32 | Uniform tuple syntax | Draft | ||
DIP33 | A standard exception hierarchy | Draft | ||
DIP34 | Static array literals | Draft | ||
DIP35 | Sealed References Amendment | Draft | ||
DIP36 | Rvalue References | Rejected | ||
DIP37 | Importing Packages as if They Were Modules | Implemented | Allow for packages to be imported as if they were modules by providing a package.d file. | |
DIP38 | Safe references without runtime checks | Draft | ||
DIP39 | Safe rvalue references: backwards compatible, safe against ref/nonref code evolution, compatible with UFCS and DIP38. | Draft | ||
DIP40 | Template parameter deduction for constructors. | Draft | ||
DIP41 | dmd/rdmd command line overhaul. | Draft | ||
DIP42 | Support enum E(T) = expression; for manifest constants | Implemented | ||
DIP43 | D/Objective-C | Draft | Adds language extensions to make D ABI compatible with Objective-C. | |
DIP44 | scope(this) | Draft | Extends scope guards to class / struct lifetime. | |
DIP45 | making export an attribute | Draft | Turn export into an attribute and fix various shortcomings of its current implementation. | |
DIP46 | region based storage allocation | Draft | Library addition to GC to allow for region based allocation strategies | |
DIP47 | Outline Member Functions of Aggregates | Draft | Allow class/struct member function definitions to be placed outside of the class/struct declaration. | |
DIP48 | Interface specifications for aggregate types | Draft | ||
DIP49 | Define qualified postblit | Draft | Fix D2 type-system hole. | |
DIP50 | AST Macros | Draft | Abstract Syntax Tree macros. A general solution for language extensions. | |
DIP51 | not-virtual-by-default | Draft | Change the behaviour of class methods so they are not virtual by default. | |
DIP52 | Implicit conversions | Draft | Add more implicit conversion options for user-defined types. | |
DIP53 | Qualified constructor revisited | Draft | Make qualified constructor definition more simple and understandable. | |
DIP54 | Revamp of Phobos tuple types | Draft | Address frequent informational confusion around std.typetuple & friends, initiate transition to std.meta.* package | |
DIP55 | Access Data Items In Ancestor Stack Frames | Draft | Support for *caller pointer in functions and adding class features to functions | |
DIP56 | Provide Pragma to control function inlining | Implemented | Add pragma(inline,true); and pragma(inline,false); | |
DIP57 | static foreach | Draft | ||
DIP58 | Make ".." a binary operator | Draft | ||
DIP59 | ?? | Draft | ||
DIP60 | Add @nogc function attribute | Implemented | ||
DIP61 | Add namespace scopes to support calling external C++ functions in C++ namespaces | Implemented | ||
DIP62 | Volatile type qualifier for unoptimizable variables in embedded programming | Rejected | ||
DIP63 | Operator overloading for raw templates | Draft | ||
DIP64 | Attribute Cleanup | Draft | ||
DIP65 | Exception handling syntax cleanup | Rejected | ||
DIP66 | (Multiple) alias this | Conditionally Approved | ||
DIP67 | Associative Ranges | Rejected | ||
DIP68 | Add @nogc attribute on types | Draft | ||
DIP69 | Implement scope for escape proof references | Draft | ||
DIP70 | @api/extern(noinfer) attribute | Draft | ||
DIP71 | 'noscope' and 'out!param' attributes | Draft | ||
DIP72 | Provide a Uniform Compiler Info Syntax | Draft | ||
DIP73 | D Drafting Library | Draft | ||
DIP74 | Reference Counted Class Objects | Draft | ||
DIP75 | Release Process | Approved experimentally for 2.068 | ||
DIP76 | Autodecode should not throw | Draft | Like std.utf.byDchar, it should emit Replacement Character instead | |
DIP77 | Fix Unsafe RC Pass By Ref | Draft | Fix memory safety issue in DIP25 | |
DIP78 | AST Macros Lite | Rejected | Abstract Syntax Tree macros without syntax extensions in the language. | |
DIP79 | Negation of attributes | Draft | Negation of attributes without the need for new keywords. | |
DIP80 | Phobos additions | Draft | Additions that would make phobos even more useful. | |
DIP81 | Writing files at compile time | Draft | ||
DIP82 | static unittest blocks | Draft | Allow for unittest blocks to be declared inside of templates which are compiled and run exactly once rather than once per instantiation. | |
DIP83 | Configurable Assert Diagnostics | Draft | Allow for assert's to do pretty printing of its failing expression. Printing is configurable via specific sets of (template) function overloads. | |
DIP84 | Static Inheritance | Draft | Express intent to the compiler that a user-defined type conforms to a static interface. | |
DIP85 | Lazy initialization of const members | Draft | Allow limited mutation of const objects, ensuring the mutation is not observable by external code. | |
DIP86 | "deprecated" attribute/storage class consistency | Draft | Allow "deprecated ( stringLiteral )" to act as a storage class. | |
DIP87 | Enhanced foreign-language binding | Draft | Improve extern() to be more generic and support binding symbols that share a name with a D keyword. | |
DIP88 | Named Parameters | Draft | Allow specifying named function parameters with `arg:` | |
DIP89 | @mutable members in immutable data structures | Draft | Proposes an officially sanctioned way to mutate members in immutable data structures. | |
DIP90 | Scoped Pointers | Draft | Tag pointers with 'scope' and 'return scope' to prevent pointer escapes |