Skip to content
mobius1qwe edited this page Oct 24, 2026 · 2 revisions

Home > Atualizar de versão > Migrar para a 2.0

Migrar para a 2.0

Important

Em desenvolvimento (2.0). Ainda não está numa versão lançada e pode mudar.

Nível: intermediário

Em uma frase: a 2.0 reorganizou as pastas e os pacotes do RAL: o núcleo ficou menor, cada recurso opcional ganhou um pacote próprio, e alguns pacotes mudaram de nome, de uma vez, para não mudar mais.

Você vai precisar: saber quais pacotes do RAL você tem instalados hoje. O instalador faz tudo desta página sozinho: ele troca os pacotes antigos pelos novos e já marca os que herdaram o que você usava. Esta página é para quem instala à mão, compila os fontes direto ou tem pacotes próprios que exigem os do RAL.

As mudanças de código da 2.0 (servidor com plugins, corpo sem cópias...) estão em Atualizar de versão.

O que saiu do núcleo

O PascalRAL agora tem só o servidor, o cliente, as rotas, os parâmetros, os plugins básicos (segurança, CORS, compressão, cifra, fila), compressão gzip, criptografia e utilitários. O resto virou pacote à parte:

Recurso Pacote na 2.0 Delphi Lazarus
Autenticação: Basic, JWT, Digest, OAuth2 RALPluginAuthPackage pkg\Delphi\Plugins pkg\Lazarus\Plugins
Certificado automático (TRALSelfSignedPlugin) RALPluginTLSPackage pkg\Delphi\Plugins pkg\Lazarus\Plugins
Storages BIN, JSON e CSV RALStoragePackage pkg\Delphi\Storage pkg\Lazarus\Storage
Servir site e arquivos (TRALWebModule) RALModuleWebPackage pkg\Delphi\Modules pkg\Lazarus\Modules
Swagger e Postman RALModuleSwaggerPackage pkg\Delphi\Modules pkg\Lazarus\Modules

As classes não mudaram de nome, e as units também não (RALAuthentication, RALStorageBIN, RALWebModule, RALSwaggerModule...). O que muda é o pacote que você instala e, no Lazarus, o pacote que o seu projeto exige.

Pacotes renomeados

1.x (Delphi) 1.x (Lazarus) 2.0
PascalRAL, PascalRALDsgn pascalral, pascalraldsgn os mesmos
IndyRAL, SynopseRAL... (todos os motores) indyral, synopseral... os mesmos
RALDBPackage raldbpackage RALDBPackage + RALDBDsgn (o de design separado)
RALDBFireDACLink — RALDBFireDACPackage + RALDBFireDACDsgn
RALDBFireDACObjects — RALDBFireDACDAOPackage
RALDBZeosLink raldbzeoslink RALDBZeosPackage + RALDBZeosDsgn
— raldbsqldblink raldbsqldbpackage + raldbsqldbdsgn
RALBSONStorage raldbbson RALStorageBSONPackage
RALZStdCompress ralzstdcompress RALCompressZStdPackage
RALBrotliCompress ralbrotlicompress RALCompressBrotliPackage
RALXMLPackage ralxmlpackage RALModuleXMLPackage
RALSOAPPackage ralsoappackage RALModuleSOAPPackage + RALModuleSOAPDsgn
RALWizard ralwizardpack RALWizardDsgn

O padrão dos nomes daqui para a frente: RAL<Categoria><Item>Package para o pacote e RAL<Categoria><Item>Dsgn para o de design. Os motores continuam <Motor>RAL de propósito: o nome lembra que o RAL não funciona sem um motor instalado.

As pastas (library path)

1.x 2.0
base core (servidor, cliente, rotas, parâmetros, a base dos plugins e da autenticação) e storage
base\plugins plugins (os do núcleo), plugins\auth, plugins\tls
base\modules common (o que era utilitário do núcleo), modules\web, modules\swagger
utils common, compress, crypto, storage
others (units do RAL + submódulos) others só com os submódulos (ZSTD, pascal_brotli, kxBSON); as units do RAL foram para bindings, compress\zstd, compress\brotli, storage\bson
database, database\FireDAC... os mesmos
engine\<motor> os mesmos; o MsQuic e o Sagui também precisam de bindings

Modelo mínimo, Indy + NetHTTP, só código:

$(PascalRAL)\core;$(PascalRAL)\common;$(PascalRAL)\compress;$(PascalRAL)\crypto;$(PascalRAL)\plugins;$(PascalRAL)\engine\indy;$(PascalRAL)\engine\netHTTP

Acrescente o que usar: plugins\auth (autenticação), storage (storages e DBWare), modules\web, modules\swagger, database e database\FireDAC (banco), bindings (MsQuic, Sagui). Um arquivo que falta em others é sempre um submódulo que não foi baixado: git submodule update --init --recursive.

Quem compila os fontes direto (sem pacotes) e esquece uma pasta vê F2613 Unit 'RALAuthentication' not found (ou outra unit): a tabela acima diz de qual pasta ela é.

Units que mudaram de nome

1.x 2.0 Precisa mexer?
RALDBTypes RALStorageTypes não: RALDBTypes continua existindo e avisa que é obsoleta
RALIndyRegister, RALSynopseRegister... RALIndyReg, RALSynopseReg... só se você citava a unit de registro
raldbregister RALDBReg idem
RALDBFireDACLinkReg, RALDBZeosLinkReg, RALDBSQLDBLinkReg RALDBFireDACReg, RALDBZeosReg, RALDBSQLDBReg idem
RALBSONReg, RALXMLReg, RALSOAPReg RALStorageBSONReg, RALModuleXMLReg, RALModuleSOAPReg idem

No Lazarus, um projeto que tem a unit do pacote no uses do .lpr (raldbzeoslink, raldbsqldblink...) troca pelo nome novo do pacote (raldbzeospackage, raldbsqldbpackage...).

Seus pacotes e projetos

  • Pacote seu que exige PascalRALDsgn só para usar o RAL: troque por PascalRAL. Na 2.0 o PascalRALDsgn é {$DESIGNONLY} e exige o designide. O compilador não avisa nada; o problema aparece em runtime, num programa compilado com pacotes de runtime, que passa a precisar do PascalRALDsgn.bpl e do designide.bpl (que não pode ser distribuído). Exija o designide só no pacote que registra componentes na IDE.
  • Pacote seu que exige um pacote renomeado (RALDBFireDACLink, RALBSONStorage...): não compila até trocar pelo nome novo da tabela.
  • Projeto do Lazarus: acrescente os pacotes novos que guardam as units que ele usa (por exemplo ralpluginauthpackage para RALAuthentication, ralstoragepackage para RALStorageBIN, ralmodulewebpackage para RALWebModule). No Delphi, sem pacotes de runtime, basta o library path.
  • Formulários: abrem como antes, desde que o pacote novo esteja instalado (o .dfm guarda a classe, não o pacote). Sem ele, a IDE avisa que a classe não foi encontrada. As propriedades do servidor que viraram plugins são outra mudança, explicada em Atualizar de versão.

Erros comuns

Mensagem Causa O que fazer
Required package 'RALDBFireDACLink' not found (ou outro nome antigo) o .dpk/.dproj ainda cita o nome da 1.x troque pelo nome novo da tabela
Class TRALServerJWTAuth not found ao abrir o formulário RALPluginAuthPackage não instalado instale o pacote (vale o mesmo para storage, Web e Swagger)
F2613 Unit 'RALServer' not found library path da 1.x (base, utils) troque pelas pastas da 2.0
no Lazarus, Can't find unit RALAuthentication o projeto não exige o pacote novo Project Inspector > Add > New Requirement
o instalador recusa: "nenhum motor escolhido" nenhum pacote de Engine marcado marque ao menos um motor: o RAL não funciona sem um

Veja também

Clone this wiki locally