Léxico de TI › Programação › xtrans

xtrans

Programação Svenska → Atualizado: 2026-10-10

A camada de transporte por baixo do X11, o código que abre um socket Unix, TCP ou algo mais antigo em nome da Xlib, do servidor X, do servidor de fontes e do ICE, e que ninguém linka, porque todo mundo compila a sua própria cópia.

O protocolo X não diz nada sobre como os bytes viajam, e nos anos 80 e 90 havia respostas demais: TCP, sockets de domínio Unix, DECnet, named pipes do SVR4, TLI e STREAMS. Todo programa que falava X carregava sua própria variante do código que escolhia a certa. O X11R6, em 1994, reuniu tudo na X Transport Interface, a xtrans, com uma única interface para abrir, escutar, aceitar e fechar conexões, não importa o que haja por baixo. A string DISPLAY comanda a escolha: :0 vira um socket Unix em /tmp/.X11-unix/X0, host:0 vira TCP na porta 6000, e os prefixos unix/, tcp/ e local/ podem ser informados explicitamente. O Linux ganhou depois o socket abstrato @/tmp/.X11-unix/X0, que não aparece no sistema de arquivos e por isso sobrevive a um /tmp esvaziado.

A construção é esquisita. A xtrans não é uma biblioteca compartilhada, e sim um conjunto de arquivos C incluídos com #include pela Xlib, pelo servidor X, pelo xfs, pelo ICE e pelo XDM, cada um com seu próprio prefixo de nomes via macros. Isso significava que um bug na xtrans existia em cinco cópias no mesmo sistema, mas também que ninguém precisava de uma biblioteca de transporte com ABI estável numa época em que ninguém chegava a um acordo sobre uma. Quando as distribuições dos anos 2000 passaram a iniciar o servidor com -nolisten tcp, era a lista de escutas da xtrans que estavam mexendo.

← Voltar ao léxico