Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6682813
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T04:44:57+00:00 2026-05-26T04:44:57+00:00

I was under the impression that A D interface file contains only what an

  • 0

I was under the impression that “A D interface file contains only what an import of the module needs, rather than the whole implementation of that module.” To me, that translates to signatures – just return types, names and arguments, so that the compiler knows it’s valid and the linker can do the dirty work later.

Running a file through dmd, though, strips almost nothing:

import std.stdio;

void SayHello(const string Name)
{
    writeln("Hello, ", Name, "!");
}

dmd Interface.d -o- -H

// D import file generated from 'Interface.d'
import std.stdio;
void SayHello(const string Name)
{
writeln("Hello, ",Name,"!");
}

Hardly a paragon of optimization.

What, exactly, is stripped in interface files?

(header-files added because it’s the closest thing I could find.)

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T04:44:58+00:00Added an answer on May 26, 2026 at 4:44 am

    Any function which is going to be inlined must have its full source in the .di file. Any function which is going to be used in CTFE must not only have its full source in the .di file, but the full source of every function that it uses – directly or indirectly – must be available to the compiler. Also, because of how templates work, their full source must be in the .di file as well (which is the same as how templates must be in header files in C++). So, there are a number of cases where you need stuff to be in a .di file.

    Under exactly what circumstances the compiler chooses to strip stuff or not, I don’t know (aside from the fact that templates automatically end up in .di files in their entirety because they have to). It could change depending on the compiler’s current implementation and what optimizations it does. But at minimum, it’s going to have to leave in small function bodies if it’s going to do any inlining. Large function bodies and the bodies of small virtual functions (which can’t be inlined anyway) will likely be stripped out however. But your example gives a small, non-virtual function, so dmd likely left it in so that it could inline any calls to it. If you want to see dmd strip a lot of stuff when generating a .di file, then you probably need to have large functions and/or use classes.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I was under the impression that when you double click a file (or choose
I was under the impression that the only difference between Func and Action is
I was under the impression that file objects are immediately closed when their reference
I was under the impression that an endpoint was defined in a config file
I was under impression that rm -r *.xml would remove all file from parent
I was under the impression that I could run it on any machine, but
I'm under the impression that the Dot '.' (wild card) character is dangerous to
I was under the impression that using the Resolve method returned a new instance
I was under the impression that I could put any old executable program in
I was under the impression that if I deployed my application (using Ant) then

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.