Realidades Paralelas

Friday, December 09, 2005

darcs

Pensei em comentar um pouco sobre o darcs, um sistema de controle de versão bem recente e elogiado, principalmente para reclamar, mas eis que o problema era de BIOS mesmo e agora isso ficou para trás. Mas ainda assim vou comentar um pouco.

Nos últimos anos surgiram vários sistemas de controle de versão FOSS que tentam substituir o CVS, o programa-padrão nesse domínio. Daí vieram o Subversion e o Arch, só para citar dois dos mais famosos. As falhas do CVS são bem conhecidas, sendo que uma particularmente chata é que ele não controla diretórios (apenas arquivos dentro de diretórios) e não trata muito bem arquivos que são renomeados ou movidos. Todos esses novos sistemas sanam este e outros dos problemas mais importantes.

O darcs tem alguns diferenciais, como ser um sistema distribuído. Cada cópia de trabalho é um repositório completo. Isso significa que você pode fazer tudo com o sistema mesmo sem estar conectado a um repositório central -- até porque não existe repositório central. Depois é só enviar os patches para o(s) outro(s) repositório(s) para sincronizar. E isso pode ser feito via SSH, ou email, ou você pode até levar o patch num disquete ou pendrive e aplicar manualmente lá. Muito mais prático que o CVS.

Existem mais duas diferenças que não aparecem muito para o usuário, uma importante, outra apenas interessante. A importante é que o autor do darcs elaborou toda uma teoria dos patches como modelo conceitual do sistema. Isso permite uma série de otimizações e uma visão integral do funcionamento do darcs em um nível mais alto, o que é muito bom. O autor diz ter se inspirado na mecânica quântica para elaborar a teoria, mas isso não vem ao caso. Em geral, os usuários não precisam aprende-la para usar o sistema, só para os usos mais avançados ou para quem pretende ler ou mexer no código. E aí vem a deixa para a segunda diferença: o darcs foi escrito em Haskell. Aliás, acho que foi a primeira aplicação feita em Haskell a "pegar" assim fora do universo das linguagens funcionais; inclusive já vi por aí gente instalando o GHC só para compilar o darcs. E David Roundy, o autor do darcs, já declarou que a linguagem favoreceu a concepção da teoria dos patches e do sistema todo.

Pode não ser uma killer application que vai tornar a linguagem famosa e popular, mas é uma demonstração de aplicação prática de uma linguagem funcional muito recente e das mais avançadas. Outra é o pugs, que eu já mencionei aqui.