www.digitalmars.com
Last update Sat Oct 7 23:28:54 2006

A Biblioteca Padrão Phobos

Phobos é a biblioteca padrão que vem com o compilador da linguagem D. Veja também a wiki for Phobos.

Filosofia

Cada módulo em Phobos está o mais de acordo possível com os seguintes objetivos de projeto. Esses são objetivos, ao invés de requisitos pois D não é uma religião, é uma linguagem de programação, e reconhece que algumas vezes os objetivos são contraditórios e contra-produtivos em certas soluções, e programadores tem trabalhos que precisam dessa necessidade para serem feitos.
Interfaces Independentes de Máquina e Sistema Operacional
É bem verdade que problemas de falta de portabilidade deveriam ser evitados. Isso não deveria ser construído, porém, acesso a características incomuns de um sistema operacional deveria ser previnido.
Operações Simples deveriam ser Simples
Uma operação simples comum como escrever um array de bytes em um arquivo, deveria ser simples para codificar. Eu nunca vi uma classe de biblioteca que já implementou simples e eficientemente operações básicas comuns de E/S em arquivos.
Classes deveriam se empenhar para serem independentes de outras
É desencorajado colocar em um megabyte de código apenas para tentar ler um arquivo em um array de bytes. Independência de classe também quer dizer que classes que são enganos podem ser desaprovadas e reprojetadas sem forçar uma reescrita do resto da biblioteca de classes.
Nenhum invólucro sem ponteiros para funções da biblioteca padrão do C ou funções da API do SO
D oferece acesso direto à funções da biblioteca padrão do C e funções da API do sistema operacional. Invólucros D sem ponteiros para essas funções apenas adiciona bagabem, aumento e bugs.
Implementações de Classes deveriam usar DBC
Isso provará que DBC (Programação de Contrato) é vantajoso. Isso não só ajudará a depurar a classe, mas ajudará todas as classes usuárias usarem a classe corretamente. DBC na biblioteca terá grandes vantagens.
Use Controle de Exceções e Erros
Veja Controle de Erros em D.

Importações

Os módulos da biblioteca podem ser importados com a instrução import. Cada módulo está em um dos vários pacotes:
std
Esses são os módulos núcleo.

std.windows
Módulos específicos do sistema operacional Windows.

std.linux
Módulos específicos do sistema operacional Linux.

std.c
Módulos que são simplesmente interfaces para funções C. Por exemplo, interfaces para as funções da biblioteca padrão do C estarão em std.c, tal como std.c.stdio seria a interface para stdio.h do C.

std.c.windows
Módulos correspondentes às funções C da API do Windows.

std.c.linux
Módulos correspondentes às funções em C da API do Linux.

etc
Essa é a raíz da hierarquia de módulos espelhando a hierarquia de std. Módulos em etc não são módulos D padrão. Eles estão aqui pois eles são experimentais, ou por alguma outra razão não são perfeitamente aceitáveis em std, mas eles ainda são úteis.


std: Módulos da bilioteca núcleo

std.base64
Codifica/Decodifica o formato base64.
std.boxer
Encaixota/Desencaixota tipos.
std.compiler
Informações sobre a implementação do compilador D.
std.conv
Conversão de strings para inteiros.
std.ctype
Classificação de caracteres simples
std.date
Funções de data e tempo. Suporta locais.
std.file
Operações básicas de arquivos, como ler, escrever e anexar.
std.format
Conversões formatadas de valores para strings.
std.gc
Controla o coletor de lixo.
std.intrinsic
Funções intrínsecas nativas do compilador.
std.math
Inclui todas as funções matemáticas normais, como sin, cos, atan, etc.
std.md5
Computa  MD5 digests.
std.mmfile
Arquivos mapeados na memória.
object
A classe raíz da hierarquia de herança.
std.openrj
Banco de dados básico.
std.outbuffer
Monta dados em um array de bytes.
std.path
Manipula nomes de arquivos, caminhos, etc.
std.process
Cria/destrói threads.
std.random
Geração de números aleatórios.
std.recls
Busca recursica de sistema de arquivos e (atualmente só em Windows) sites FTP.
std.regexp
Funções normais de expressões regulares.
std.socket
Sockets.
std.socketstream
Stream para um bloco conectado via Socket.
std.stdint
Tipos inteiros para vários propósitos.
std.stdio
E/S padrão.
std.cstream
E/S em Stream.
std.stream
E/S em Stream.
std.string
Operações básicas de strings não cobertas por operações de arrays.
std.system
Informações sobre a CPU e sistema operacional.
std.thread
Um por thread. Operações para fazer em um thread.
std.uri
Codifica e decodifica Uniform Resource Identifiers (URIs).
std.utf
Codifica e decodifica codificações de caracteres utf.
std.zip
Lê/escreve arquivos zip.
std.zlib
Compressão/Descompressão de dados.

std.windows: Módulos específicos ao sistema operacional Windows

std.windows.syserror
Converte códigos de erro do Windows em strings.

std.linux: Módulos específicos ao sistema operacional Linux


std.c: Interface para funções C

std.c.stdio
Interface para funções C em stdio como printf().

std.c.windows: Interface para funções do Windows em C

std.c.windows.windows
Interface para as APIs do Windows

std.c.linux: Interface para funções do Linux em C

std.c.linux.linux
Interface para as APIs do Linux

std.c.stdio

int printf(char* format, ...)
Função printf() do C.