Skip to content

DQM Format

DQ compilation uses .dqm and .dqm_if artifacts.

Artifact Meaning
.dqm compiled module object file
.dqm_if serialized public module interface
.dqm section .dqm_if interface payload embedded in the object

The compiler normally writes .dqm files. A .dqm is linkable object code plus the public interface metadata needed by other modules.

Why Interfaces Exist

When a module imports another module, the compiler needs that imported module's public declarations: exported functions, objects, types, constants, properties, and imported/reexported interface symbols. Loading a compact interface is faster and simpler than reparsing implementation code for every import.

Interface Payload

The .dqm_if payload is a compiler-owned binary format. It is designed for:

Goal Detail
fast loading whole-interface loading with a compact record stream
strict validation reject stale, corrupt, or incompatible files
regeneration missing or stale interfaces can be rebuilt
versioning format and compiler compatibility checks

It is not a source format, not intended for hand editing, and not a stable ABI contract between unrelated compiler versions.

Inspecting Interfaces

Use --ifdump to inspect a standalone .dqm_if or a .dqm with an embedded interface section.

dq-comp --ifdump .dqbuild/x86_64-linux/local/app.dqm

Use --ifgen only when you specifically need a standalone interface file.

dq-comp --ifgen module.dq

Normal builds do not require checking in .dqm or .dqm_if files.