Difference between revisions of "DIP70"

From D Wiki
Jump to: navigation, search
(DIP70: @api/extern(noinfer) attribute)
(DIP70: @api/extern(noinfer) attribute)
Line 22: Line 22:
 
|Links:
 
|Links:
 
|
 
|
*[http://forum.dlang.org/post/5112D61B.5010905@digitalmars.com]LINK1 Main article: @api: One attribute to rule them All
+
* (LINK1 http://forum.dlang.org   /thread/vlzwhhymkjgckgyoxlrq@forum.dlang.org) Main article: @api: One attribute to rule them All
 
Related:
 
Related:
 
* [http://wiki.dlang.org/DIP45 DIP45]
 
* [http://wiki.dlang.org/DIP45 DIP45]

Revision as of 20:26, 17 January 2015

DIP70: @api/extern(noinfer) attribute

Title: extern(noinfer)
DIP: 70
Version: 1
Created: 2015-01-17
Last Modified: 2015-01-17
Author: Zach Tollen
Links:
  • (LINK1 http://forum.dlang.org /thread/vlzwhhymkjgckgyoxlrq@forum.dlang.org) Main article: @api: One attribute to rule them All

Related:

  • DIP45
  • LINK2 Dicebot's forthcoming DIP

In a Nutshell

This proposal requires that covariant attribute inference for all functions already exist. When and if that happens, introduce an attribute (suggested names: @api, extern(noinfer)) which tells the compiler to mangle the name and generate the .di interface with only the function's explicit attributes and not its inferred ones. This is to stabilize the linking API, and may also be useful in enforcing discipline. See LINK1 the full article.

Note: This DIP was created more-or-less as a stub, to gather relevant links and to preserve the idea for future reference. This DIP may be made irrelevant by a more comprehensive system which statically *guarantees* a connection between a .di interface file and its corresponding binary object, as LINK2 suggested by Dicebot(DIP forthcoming).

Also relevant is DIP45, which addresses a different linking concern and served to inspire Dicebot's forthcoming proposal.