V coreutils: Um coreutils escrito na linguagem V

coreutils in V

V coreutils: Um coreutils escrito na linguagem V

 No ano passado eu escrevi o artigo uutils: Um coreutils escrito na linguagem Rust. Neste artigo eu mencionei que existia outro coreutils escrito na linguagem V(The V Programming Language (vlang.io). V é uma linguagem de propósito geral que foi projetada para ser simples e fácil de manter,  para oferecer bastante poder e poder ser utilizada em quase todos os campos como sistemas operacionais, web, jogos, interface gráfica, dispositivos móveis, ciência, embarcados e muito mais. Existe até mesmo um sistema operacional chamado Vinix escrito na linguagem V e que já roda Bash, GCC e V.

Vinix is an effort to write a modern, fast, and useful operating system in the V programming language.
Vinix: Um sistema operacional escrito na linguagem V

 V é similar a linguagem Go contendo melhorias que podem ser conferidas aqui e também influenciada por Oberon, Rust, Swift, Kotlin e Python. Vale lembrar que a linguagem V ainda está em versão beta (versão 0.4.4 no exato momento que escrevo este artigo) e o autor afirma que não haverá muitas mudanças, apenas melhorias.

Hot code reloading em V. altere as coisas instantaneamente sem recompilar.

 Agora vamos a o que nos interessa que é o coreutils escrito em V. o Vcoreutils (que é assim que eu resolvi chama-lo) visa ser uma versão de coreutils o mais próximo possível das especificação POSIX e  com muitas extensões GNU (nisso o GNU é muito bom: extensões). A equipe procura desenvolver a implementação de cada comando mas que não seja 100% de paridade 1 para 1, especialmente peculiaridades e efeitos colaterais não intencionais.

 Eu resolvi compilar e testar os comandos; uma boa parte deles estão prontos, um total de 56 comandos de 109. O V coreutils está sob a licença MIT.

 O processo de compilação é simples. Com o compilador v instalado em sua máquina, digite o comando v run build.vsh, o processo de compilação leva ~6 segundos.

V coreutils compilation process
Tempo do processo de compilação do V coreutils


 A principio aqui ocorre um problema. Assim como ocorre com o Rust coreutils, achei exageradamente enorme o tamanho dos binários. O resulta em um diretório bin de 60MB e facilmente cada binário ocupa 1MB mesmo linkados dinamicamente... O que é um exagero se levarmos em conta que deveriam ter apenas bytes.


 Porém, eu consegui encontrar uma solução de otimização dos binários. Utilizando a opção v run build.vsh -prod -skip-unused os binários são otimizados levando bem mais tempo para serem compilados (desta vez mais de dois minutos para concluir) porém, geram binários bem menores alguns tendo tendo 100K ou 200K; alguns ainda continuaram grandes, mas OK, o diretório ficou no final com 11MB (diferente de anteriormente que tinha 60MB).

V coretutils: optmized binaries compilation time
V coretutils tempo de compilação de binários otimizados

Resultado do tamanho dos binários após utilizar as opções de otimização.

 O comando CP que anteriormente ocupava 1MB (1008K) passou a ocupar 200K ao ser otimizado. Erros ainda serão visíveis; temos que levar em conta que se trata de um programa que ainda está na versão 0.01 e sendo desenvolvido em uma linguagem que ainda está na versão 0.4 e que faz uso de certa forma do compilador TinyCC que ficou um bom tempo parado. Então se trata de um baita desafio pela frente.


CONCLUSÃO

 Como já mencionei outras vezes, não existe GNU/Linux uma vez que nem todas as ferramentas que utilizamos nas distribuição são do GNU (alias, elas são a minoria) e as do GNU são substituíveis. Esse já não é o primeiro pacote de comandos que eu apresento aqui, facilmente podemos contar alguns como o embutils, o 9base, o ubase, o Rust Coreutils, o V coreutils, o FreeBSDcoreutils o ChimeraCoreutils e podemos utilizar também busybox ou o toybox e ainda mais outros podem existir.

 SEJA LIVRE DE IDEOLOGIAS INUTEIS.


O coreutils na linguagem V pode ser baixado aqui

Mais sobre o coreutils pode ser conferido aqui

Toca do Tux: A queda da GPL?
 

Lançada musl 1.2.5

musl 1.2.5 released

Lançada musl 1.2.5


 No dia 29/02 foi lançada a versão 1.2.5 da biblioteca musl. Esse lançamento adiciona funções da extensão statx e da preadv2/pwritev2, com implementações para versões mais antigas do kernel e adiciona dois novos ports: loongarch64 e riscv32.

 Mudanças menores na família de funções printf para conformidade para novos padrões. Também foi adicionado suporte ao TLSDESC na arquitetura riscv64. Correções de bugs no DNS relacionados a nova função do protocolo TCP, várias race conditions raras, potencialmente incorretas retornam valores quando glob aborta, vários  bugs significantes afetando TLSDESC na arquitetura ARM, riscv64 e no sigsetjmpdlsym RTLD_NEXT na arquitetura sh (SuperH).

A versão 1.2.5 está disponível aqui

https://musl.libc.org/releases/musl-1.2.5.tar.gz.asc

tipidee: Um novo web server

tipidee web server

tipidee: Um novo web server


 tipidee é um web server desenvolvido por Laurent Renot, autor das ferramentas de skarnet.org que  vocês viram aqui no meu ultimo post.


 O tipidee possui suporte a HTTP 1.0 e 1.1 tendo compatibilidade com a RFC 9112. Apesar de ainda implementar um conjunto muito limitado de subconjunto de funcionalidade opcional no HTTP 1.1, o tipidee implementa todas as partes obrigatórias e é utilizável com HTTP e HTTPS. O tipidee pode ser executado como serviço do inetd (que tradicionalmente não é conhecido por ter bom desempenho), ou do s6-tcpserver, ou ou s6-tlsserver (para HTTPS).

 A ideia por do tipidee é trazer as melhores características dos dois modelos de web servers existentes atualmente e que não há nada em meio a termo . Desses dois modelos temos temos:
  1. Os grandes e poderosos (como nginx e Apache como exemplos) mas que a simplicidade não é uma preocupação e pode ser trocada por recursos, integração com ecossistemas maiores ou apenas velocidade de serviço.
  2. Os pequenos (como busybox httpd, bozohttpd, ou vários httpds da ACME Labs) que focam em ser fáceis de fazer deploy para servir tanto em protótipos quanto em ambientes como embarcados.
 Existem na verdade várias propostas de serem pequenos e mínimos mas que são escritos em linguagens que o runtime utiliza mais recursos do que todos o ecossistema da skarnet.org; e não existe um focado no que é proposto no tipidee:
  • Usabilidade com HTTPS sem a necessidade de embarcar o código com a biblioteca TLS. O que significa delegar a camada TLS para um super-server e não executar o trabalho do socket em si. A importância disso é que se torna mais difícil de manter, de fazer builds, de gerar pacotes, de distribuir e menos seguro quando o web server é amarrado a biblioteca TLS.
  • Suporte a HTTP 1.1 com conexões persistentes e não somente a 1.0.
  • Suporte a CGI real, não somente a NPH.

 Existe o lighttpd, por exemplo, foi desenvolvido como uma prova de conceito para resolver o problema c10k. O nome tipidee é uma espécie de forma menor (assim como o código) de dizer h-t-t-p-d. Está sob a licença ISC


O dia que Laurent Bercot calou Richard Stallman: Eu não uso GNU, eu uso Linux!

GNU/Linux, Linux, Muito alem do GNU. Eu não uso GNU, eu uso Linux!. RMM

 O dia que Laurent Bercot calou Richard Stallman: Eu não uso GNU, eu uso Linux!

 Em Fevereiro de 2022, Laurent Bercot, autor do projeto ferramentas skarnet, como a skalib, execline e s6 (s6 é fortemente utilizado em containers e há uma proposta para o Alpine Linux adotá-lo) postou em seu perfil no site X o dia que deixou Stallman calado ao dizer que utilizava que utiliza exatamente Linux e não utiliza projeto do projeto GNU.

 Bom, eu já sou conhecido por ser escorraçado por essa galera devido a minha série Muito além do GNU e, gostem eles ou não, eu vou sempre postar sobre o assunto porque, tudo no Linux é uma questão de escolha. É simples lógica e de se encarar a realidade (o que não é o forte deles). A diferença entre eles e eu (e isso eu digo categoricamente) é que eu afirmo tudo isso baseado em argumento técnico enquanto eles só se baseiam em paixões. Essa é a prova exata de que eles se quer já leram uma manpage.

 Bom, vamos a o que realmente nos interessa neste post que é o artigo que, além de abordar a quebra desse paradigma irreal (GNU/Linux) também nos apresenta a origem do projeto Skarnet e de suas ferramentas.


A Convenção anual de software livre na França

 Havia uma convenção anual de software livre na França mas o debate entre Stallman e Bercot ocorreram inicialmente na convenção do ano 2.000 e estendendo para a convenção de 2.001. Stallman estaria presente ambos os anos para fazer sua apresentação. Laurent e seus amigos foram à convenção do ano 2000; foi sua primeira vez em um evento desses e ainda era muito novo nas comunidades open source.

"A apresentação do RMS foi... interessante. RMS é (era?) um excelente pregador. Ele é, de mais maneiras, uma figura religiosa, e eu entendi porque ele tinha tantos fanáticos. A causa que ele estava pregando era correta e nós tinhas vontade de abraça-la."

 Depois da palestra de RMS, todos estavam conversando em um corredor, Larent não sabia mas RMS estava atrás dele. Quando Laurent soltou a palavra Linux no meio de sua conversa, pronto... RMS parou na mesma hora a conversa que estava com outras pessoas e, nas palavras de Laurent, "como um tubarão cheirando farejando sangue" começou o seu discurso de moral e ética explicando porque Laurent deveria dizer GNU/Linux em vez de Linux, por pelo menos três minutos; o que nas palavras de Laurent era muito muito tempo. Era mesmo se levarmos em conta que é de pura balela. Aquela mesma lenga de sempre que vivem copiando do site do GNU postando nos grupos e comentando no meu canal de "Eu só gostaria de interromper por um momento. O que você está se referindo como Linux, é na verdade, GNU/Linux, ou como eu comecei recentemente a chamá-lo, GNU e Linux. ..." e bla bla bla bla bla.

 Bom, moral da história, Laurent só ficou ouvindo de forma insegura sem confrontá-lo no meio dos seus admiradores enquanto que Stallman simplesmente sorriu de autossatisfação, deu as costas e saiu andando sem parar para ouvir o que Laurent teria a dizer, porque escutar não é o forte do stallman.

 Laurent diz que se sentiu humilhado e a partir dali, Laurent começaria a sua revanche (ia ter revanche; ah sim, ia).


O início da skarnet

  Laurent agradece a Stallman por sua atitude pois a partir daí, Laurent se interessou por detalhes de como Linux bootava, quais componentes são necessários para faze-lo bootar, quais pacotes alternativos existiam que lhe permitiriam bootar o Linux sem executar qualquer coisa de origem do GNU; como init system é feito e o que é POSIX.

 A glibc foi substituída pela dietlibc e o coreutils foi substituído pelo embutils, ambas ferramentas desenvolvidas por Felix Von Leitner e já apresentadas tanto aqui no blog quanto no canal.



 As outras partes que faltavam foram desenvolvidas pelo próprio Laurent.  Laurent afirma que foram noites de sangue suor e lágrimas mas depois de quase um ano inteiro Laurent conseguiu bootar seu servidor Linux sem uma única peça de software do projeto GNU. E assim nascia o projeto http://skarnet.org que inicialmente se chamava antah server e  Laurent estava pronto para a revanche.


A revanche

 A convenção de 2001 não foi diferente da do ano anterior (mesmos rostos e mesmas conversas) e a palestra do Stallman foi basicamente a mesma coisa do ano anterior com a mesma dinâmica (o que não é nenhuma novidade).

 Quando foi aberto espaço para perguntas, Laurent teve a sua chance. Na verdade Laurent nem se lembra qual foi a sua pergunta e o bom da verdade é que ele disse que isso não importa pois sabia que iria conseguir completar a sua pergunta depois de sua abordagem inicial:

"Eu uso Linux."

 Quando Stallman quis interromper o raciocinio da pergunta (como de costume ele faz ao ouvir a frase "Eu uso Linux", Laurent já o interrompeu:

"Não. Eu use Linux, the kernel. Eu não uso GNU. Não há software GNU na minha máqina, o userspace é feito de outros tijolos de software. Quando eu digo "Linux", eu quero dizer exatamente o que eu digo."

 Laurent disse que Stallman ficou olhando para ele boquiaberto e não disse uma palavra e, nas palavras de Laurent, foi GLORIOSO. Seus amigos estavam rindo perto dele.

 Abaixo estão prints de evidencias do site Skarnet nos dias atuais;  até hoje não há presença de ferramentas do projeto GNU. trata-se de ferramentas bem interessantes levando em conta o downtime total e a quantidade de vulnerabilidades exploradas (apenas uma e sem sucesso) durante ~23 anos.

software powering skarnet
Ferramentas utilizadas no servidor Skarnet

Total de horas de downtime do skarnet em mais de 23 anos

2003-06-03: an attacker exploits a security hole in fnord to get reading access to some internal files. No harm done. fnord patched. In 2013, dietlibc abandoned for uClibc, then musl; fnord abandoned for busybox httpd. No security breach since 2003.
Histórico de vulnerabilidades no site skarnet (apenas uma tentativa frustrada em junho de 2003)

How much memory is used on skarnet website
Quantidade de RAM no site (excluído o kernel)

Software powering skarnet.org

 Claro, como sempre Stallman não daria o braço a torcer (o que já era de se esperar) e soltou a seguinte frase:
"Okay, bom, você provou um ponto. No entanto, esta é uma ocorrência bastante rara; em praticamente todas as máquinas, o sistema GNU..."

 E blablabla... Laurent diz que, mesmo não tendo mais como argumentar por serem incapaz de se questionar, ficou satisfeito porque encontrou seu propósito na jornada, alcançar o destino foi apenas um bonus. Depois disso, Laurent voltou para casa e continuou trabalhando em software de baixo nível para Linux. Depois disso, Laurent até palestrou no FOSDEM de 2017 sobre o s6, mas não voltou mais a eventos de software livre (fez bem).



 Depois disso tiveram comentários interessantes como:

"I submeti um patch para o core utils para remover "/GNU" por exatamente o motivo que você especificou. O patch foi rejeitado :)"

é obvio que seria rejeitado né 


"RMS ficou muito chateado quando tornamos a Web libwww public domain ao invés de disponibilizar sob GPL. "E se a Microsoft pegar o seu código?" Esse era exatamente o nosso objetivo."

 Toma


"Em 2006, eu estava bebado e debati com ele o fato de que as pessoas precisam de dinheiro para viver, o que deixou ele muito ofendido."

 Pow, até um bêbado destrói os argumentos dele. Alias, Stallman acha ruim as pessoas ganhar dinheiro mas ele mesmo cobra para tirar foto com ele (e cobra caro ainda por cima) e até mesmo por autografo. Hipocrisia bem típica.


Ninguém é *forçado* a utilizar ferramentas do GNU com o Linux. Por exemplo, eu tenho um box com ferramentas do Plan9 (rodando Gentoo). Então chamar de "GNU/Linux" seria simplesmente errado.

 Isso é verdade, eu mesmo já mostrei várias vezes o projeto 9Base que são comandos do sistema operacional plan9 portados para Linux (agradeço ao plan9 por várias ferramentas que existem no Linux hoje).


 A frase final  de Lauent é simplesmente a melhor forma de descrever do que se trata a minha série Muito além do GNU:

 Eu acredito que eu sou a primeira pessoa que na verdade fez isso na vida real, e eu vou continuar usando este distintivo com orgulho. E  me deixa perplexo, dado o montante existente de userspace de baixo nível que não são do GNU hoje em dia, a FSF ainda acredita que Linux == GNU. Fósseis!

 Além de não existir somente ferramentas do GNU, ainda temos o segundo ponto que Laurent descreve bem no inicio que eu já mencionei por várias vezes: A maioria das ferramentas que utilizamos no Linux, não são do GNU. Elas vem de outros sistemas operacionais como IRIX, Solaris, BSDs e até do próprio Linux (vocês que dizem que Linux é somente o kernel, vocês estão simplesmente muito enganados).

"Eu não culpo RMS ou a FSF por quererem comercializar com precisão o projeto GNU. No entanto eu os culpo por se recusarem a reconhecer que o GNU não possui o monopólio no userspace para Linux mais. Eles não tinham 21 anos atrás eles com certeza não tem hoje."

 Como eu sempre digo, não existe GNU/Linux nem tecnicamente, nem historicamente e nem juridicamente falando. Liberdade diz respeito a escolha e não a uma licença (que diga-se de passagem está em pleno declínio).

 Linux não não é e nunca foi limitado ao uso de ferramentas do projeto GNU; se isso fosse verdade, então não haveria liberdade. A adoção de ferramentas do projeto GNU no passado (e até no presente) foi dado devido a conceitos técnicos e não ideológicos como gostam de lhe contar. Desenvolvedores de outros Unix melhoraram as ferramentas do projeto GNU para seu próprio uso (como é o caso dos desenvolvedores de Solaris. Sejam gratos a eles, se não o GCC nem teria ido para frente) como uma alternativa mais barata e assim o projeto GNU se beneficiado (algo que eles costumam ocultar).


Fonte da informação pode ser lida clicando aqui.

Leia também: A verdadeira face de Richard Stallman

O paradoxo do navio de Teseu

Adeus software livre; olá Open Source

O dia que o pinguim adquire asas e cauda de um dragão de ferro

Quanto de GNU realmente há no Linux?
 

Descoberta nova vulnerabilidade na glibc que garante acesso como root na maioria das distribuições

New Glibc Flaw Grants Attackers Root Access on Major Linux Distros

Descoberta nova vulnerabilidade na Glibc garante acesso a root na maioria das distribuições


 A CVE-2023-6246 descreve uma vulnerabilidade na função __vsyslog_internal() da glibc, função utilizada para propósitos de loggin do sistema pelo syslog() e vsyslog() e que foi introduzida "acidentalmente" no lançamento da versão 2.37 em Agosto de 2.022.

 O gerente de produtos da Threat Research Unit em Qualys descreve que essa vulnerabilidade permite ao atacante escalar privilégio de acesso como root na maioria das distribuições:

"Embora a vulnerabilidade requer condições específicas para explorar, ... seu impacto é significante devido ao amplo uso da biblioteca afetada..."

 Ainda foi observado que há mais duas falhas na glibc na função __vsyslog_internal() (CVE-2023-6779 e CVE-2023-6780) e um terceiro bug na função library's qsort() que pode levar a corrupção de memória. Essa vulnerabilidade afeta todas as versões da glibc desde 1.992.

 A Qualys já havia detalhada outra falha na glibc conhecido como Looney Tunables (CVE-2023-4911, CVSS score: 7.8) que também resultavam em escalar privilégio.

Fonte da informação: thehackernews.com

QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)
QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)
Lançado novo Minicurso de atributos no Linux
E não esqueçam de conferir também o meu mini curso de atributos no Linux

Star Lab anuncia suporte de segurança ao KVM

Star Lab anuncia suporte de segurança ao KVM


 Hoje, dia 23 de Janeito de 2024 a Star Lab Corp® anunciou o lançamento do suporte da ferramenta  de segurança Titanium para o KVM. Devido ao crescimento do emprego da virtualização em ambientes corporativos e de defesa (forças armadas) nos Estados Unidos, incluindo o crescimento da adoção do KVM no Red Hat Enterprise Linux, a Star Lab estendeu o emprego do Titanium para o ambiente de virtualização. 

 Titanium é considerada a tecnologia de proteção para Linux em ambientes de missão critica nas forças armadas como:


  • secure boot
  • data-at-rest protections
  • mandatory access controls (mac)
  • kernel hardening
  • E agora, segurança em ambientes de virtualização com KVM


 O primeiro anuncio de suporte a KVM em Outubro de 2022, mas a Star Lab já vem trabalhando de 2020 para trazer soluções de segurança para ambiente virtualizado. Não há previsão para suporte em outros hypervisor como VMware mesmo que detenha uma grande fatia do mercado devido a sua facilidade de uso, seu modelo proprietário dificulta os esforços para alcançar grande efeito na tecnologia de proteção.


"... Mas o Titanium para KVM será a única solução que permite programas de defesa aproveitem os benefícios da virtualização enquanto também se tornam FMS-ready. Estamos confiantes de que os programas adotarão com entusiasmo a economia de custos e a redução de riscos que acompanham o Titanium for KVM."

Mais sobre Titanium for KVM e outras tecnologias de segurança da Star Lab security podem ser conferidas no seu site oficial.

Titanium for KVM — Star Lab Software

Star Lab Announces Capability to Secure KVM Hypervisors

Marcadores

A pior história sobre Linux que já ouvi (5) A.I (1) ambiente gráfico (19) AMD (14) analise (10) Andriod (16) android (7) Apple (1) arm (4) artigo (5) aws (1) bc (23) benchmark (6) BetrFS (1) blackhat (1) BSDs (29) btrfs (32) bugs (2) Caixa de Ferramentas do UNIX (19) canto do Diego Lins (2) certificações Linux (7) Código Fonte (54) comandos (31) comp (1) compressores (5) container (7) CPU (19) cracker (1) criptografia (5) crowdfunding (9) cursos (24) daemons (13) Debian (31) desempenho (1) desenvolvimento (90) desktop (19) DevOps (3) DevSecOps (4) dic (1) Dica de leitura (90) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diet libc (3) diocast (1) dioliunx (3) distribuições Linux (14) Docker (12) DragonflyBSD (22) driver (1) ead Diolinux (2) edição de vídeo (5) embarcados (1) EMMI Linux (4) emuladores (9) endless (5) English interview (3) Enless OS (2) entrevista (17) espaço aberto (82) evento (6) facebook (1) Fedora (10) filesystem (82) financiamento coletivo (2) fork (4) fox n forests (4) FreeBSD (20) Funtoo Linux (13) games (93) gerenciadores de pacotes (4) glaucus (2) GOG (3) google (8) gpu (3) hacker (2) hardware (104) hash (1) helenos (3) I.A (1) init system (10) Intel (15) inteligencia artificial (1) IoT (1) ispconfig (1) jogos (37) kde (1) kernel (138) lançamento (64) leis (1) LFCS (1) libs (2) licenças (8) Linus (16) linus torvalds (2) Linux (194) linux foundation (3) linux para leigos (1) live (5) LPI (8) LTS (1) Mac (1) machine learning (1) matemática (9) mesa redonda (27) microcontroladores (1) microsoft (6) microst (1) muito além do GNU (161) musl (3) não viva de boatos (9) navegadores (5) NetBSD (7) newlib (1) nim (1) nintendo (1) novatec (17) novidades (1) nuvem (1) o meu ambiente de trabalho (3) off-topic (12) open source (84) OpenBSD (6) OpenShift (1) os vários sabores de Linux (42) padrim (2) palestras e eventos (5) partições (6) pentest (8) performance (1) pipewire (1) plan9 (1) playstation (1) processadores (30) professor Augusto Manzano (11) Programação (64) promoção (1) propagandas com Linux (8) ps4 (1) real-time. (1) Red Hat (22) redes (4) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (14) RISCV (13) rtos (1) runlevel (2) rust (12) segurança digital (24) servidor web (1) servidores (2) shell (7) shell script (6) sistema operacional (25) smartphones (3) Software livre e de código aberto (151) sorteio (3) Steam (10) Steam no Linux (8) supercomputadores (4) suse (5) systemd (7) terminal (87) terminal de comandos (16) toca do tux (1) toybox (26) tutorial (6) Tux (3) unboxing (7) UNIX (17) UNIX Toolbox (14) vartroy (1) vga (1) virtualização (2) vulnerabilidade (6) wayland (5) web (1) whatsapp (1) whitehat (1) Windows Subsystem for Linux (2) wine (14) WoT (1) ZFS (15) zsh (3)