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.