Mostrando postagens classificadas por relevância para a consulta clang. Classificar por data Mostrar todas as postagens
Mostrando postagens classificadas por relevância para a consulta clang. Classificar por data Mostrar todas as postagens

OpenMandriva passa a distribuir kernel compilado com o clang

OpenMandriva passa a distribuir kernel compilado com o clang
OpenMandriva passa a distribuir kernel compilado com o clang
 Em 2014, a comunidade OpenMandriva migrou do gcc para o LLVM/clang. Hoje, quase todos os pacotes do OpenMandriva é compilado com o LLVM/clang (menos a glibc, elfutils e outros pacotes que não são clang friendly). Depois disso outras distribuições como Debian, Android e Fedora passaram a adotá-lo no mesmo estilo (100% do Android é compilado com o LLVM).


 O LLVM possui suporte as arquiteturas i686, x86_64, znver1, armv7hnl, aarch64 e riscv64. Exits suporte a toolchain cross compile para todas as arquiteturas mencionadas e o openMandriva fornece um automatic build farm chamado ABF gerando pacotes RPM e imagens ISO baseado no código fonte do projeto ou até mesmo no seu próprio. O ABF também possui uma CLI chamada abf-console-client permitindo trabalhar direto nos pacotes do projetos (você pode até mesmo doar ciclos de CPU).

 Nick Desaulniers informou que a comunidade OpenMandriva passou a disponibilizar o kernel Linux compilado com o clang que recebeu o nome de kernel-release-clang e incentiva aos usuários a comparar o kernel atual com essa versão.
 Parabéns as comunidades OpenMandriva e ClangBuiltLinux.

Mais sobre o LLVM/clang

NÃO SE ESQUEÇA DE SE INSCREVER NO MEU CURSO DE MIGRAÇÃO PARA LINUX.
NÃO SE ESQUEÇA DE SE INSCREVER NO MEU CURSO DE MIGRAÇÃO PARA LINUX.

Aplicando o Clang Thread Safety Analysis ao kernel Linux

Aplicando o Clang Thread Safety Analysis ao kernel Linux
Aplicando o Clang Thread Safety Analysis ao kernel Linux
 No Clang-Built Linux Workshop realizado Fevereiro deste ano, Lukas Bulwahn apresentou a ideia de aplicar o Clang Thread Safety Analysis ao kernel Linux. Já existem várias soluções (inclusive utilizadas pelo Linux) para realizar tal tarefa como sparse, smatch, coccinelle (mini_lock.cocci rule), lockdep, KCSAN, coverity e até ferramentas não open source para tal propósito. Porém, o CTSA trás características diferentes.

 Clang Thread Safety Analysis é uma extensão do Clang escrita em C++ (funciona também para a linguagem C) que foi desenvolvido pelo Google e pela CERT/SEI. Clang Thread Safety Analysis emite avisos de potenciais condições de race (potential race conditions) no código fonte, possui fácil configuração, é rapidamente executado, adequado até mesmo para estudantes;

 Porém, não entrega os resultados mais promissores (algo que vem sendo trabalhado para melhorar). Agora é aguardar para ver no futuro.


NÃO SE ESQUEÇA DE SE INSCREVER NO MEU CURSO DE MIGRAÇÃO PARA LINUX.
NÃO SE ESQUEÇA DE SE INSCREVER NO MEU CURSO DE MIGRAÇÃO PARA LINUX.

Lançado LLVM 6.0.0

llvm-clang-6-0
LLVM/Clang versão 6.0

Galera, estes artigo é somente um aviso rápido. Já divulguei o lançamento do compilador LLVM/Clang quando foi a versão 4.0.1,  a versão 5.0, a versão 5.1 e agora que divulgar que está disponível a versão 6.0 do compilador LLVM disponível para download que foi um trabalho árduo de seis meses. Esse lançamento trás vária melhorias que podem ser conferidas nas notas de lançamento.

Venho mencionando sobre o LLVM/Clang desde o artigo "O dia em que o pinguim adquire asas e cauda de um dragão de ferro".  Lá pode ser conferida suas informações específicas e características e também no artigo "Para quê serve a liberdade?". O LLVM está sendo fortemente adotado para a IoT por gerar binários menores junto com a Musl. E no artigo "como conheci o Alpine Linux" conto como conheci também o LLVM/Clang.

Para fazer download da ultima versão, basta clicar no link abaixo:

Mais detalhes, confiram os links abaixo:

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

 Existem Muitas ferramentas que podem substituir as do projeto GNU tanto em empresas quanto no uso comum em seu dia a dia. conheça aqui algumas delas.
O dia em que o pinguim adquire asas e cauda de um dragão de ferro.
O dia em que o pinguim adquire asas e cauda de um dragão de ferro.
 Anos atrás li uma noticia sobre o Linux ter sido compilado com o Clang. E como minha paixão pela FSF era grande, discordei de tudo o que foi dito (paixão é fogo e nos cega as vezes). Alguns dias (ou semanas) depois, publicaram um benchmark entre algumas versões do GCC, o Clang e o ovo de dragão. Não acompanhei muito e larguei para lá, mas foi bom saber que havia outras opções para compilar o Linux além do GCC, como em tudo há no Linux outras opções: GUIs, editores de texto, navegadores.

 Passado algum tempo, tive a curiosidade de pesquisar sobre o Clang e acabei gostando do que descobri a respeito do compilador.
 Esse é o tipo de liberdade que gosto; a liberdade de escolher o que vou utilizar e não ficar preso ou limitado à uma única opção (isso sim representa a liberdade. A liberdade se estende muito mais do que as citadas pela GPL). Seria a mesma liberdade que tenho de ir ao mercado e poder escolher se quero presunto de uma marca ou de outra (a lei da concorrência existe para isso, assegurar o nosso direito como consumidor e desta forma, as empresas busquem conquistar seus clientes com a melhoria continua de seus produtos ou serviços).
 Como mencionei, eu até era extremo defensor de software livre e de código aberto (ainda sou, mas não da forma que eu era), recebia newsletters da FSF por e-mail, porém, tomei antipatia quando Richard Stallman ficou cantando vitória a respeito da morte de Steve Jobs. Ainda assim, continuei com os ideais de software livre e de código aberto.

 Certa vez participei de um podcast onde um dos convidados que não vou mencionar o nome (e por favor, não me perguntem o nome, pois não irei responder; citar nome é difamação) era defensor de software livre. Até aí tudo bem, eu também sou; o problema é que o cara não queria participar simplesmente pelo fato do software que iria ser utilizado para gravar não era (totalmente) livre; isso rendeu alguns comentários. Depois começou a ficar difícil interagir com ele, pois tudo para ele era somente software livre sem ouvir o que outros tinham a dizer. Percebi que eles pregam a liberdade mas se tornam escravos de ideologias, se tornam inflexíveis.
 Gosto de software livre e de código aberto, não deixei de usar as ferramentas do projeto GNU (e talvez não deixa de usar tão cedo), mas da comunidade eu não quero nem saber mais.

 Alguns dias atras, um amigo conversou comigo sobre chamar o sistema de GNU/Linux ou simplesmente de GNU, e não somente de Linux. Beleza; o assunto encerrado depois de longo debate entre nós.
 Coincidência ou não, um ou dois dias depois um seguidor do meu canal comentou a mesma coisa no meu vídeo "Linux (dando nome a criança):



 Particularmente eu prefiro chamá-lo somente de Linux e não de GNU/Linux ou simplesmente GNU (GNU seria horrível). Essa guerra por nome do sistema, ao meu ver, está mais voltada a ego do que meritocracia.
 Mesmo que discordem de mim, eu afirmo: O GNU só é um projeto bem sucedido e amplamente difundido graças ao seu uso no Linux (mesmo o GNU sendo mais velho). Duvido que o Gnu seria amplamente conhecido se não fosse o Linux.
 Se considerarmos chama-lo de GNU/linux ou somente de GNU, então deveríamos considerar todos os outros projetos que utilizamos no Linux e que não fazem parte do GNU; como é o caso do LibreOffice (que para mim representa a liberdade assim como o GNU), o Firefox (e que também representa muito a liberdade para mim), o VLC, as linguagens Python e Perl por (Perl é aberto querendo ou não) dentro outros exemplos.

Quando se fala de GNU, as pessoas só lembram do stallman; não nos lembramos de pessoas como Brian fox que foi o autor do GNU Bash, do GNU Makeinfo, do GNU Info, do GNU Finger, thereadline e history libraries, além de ter sido o mantenedor do GNU Emacs por um tempo (e tem gente que acha que o Stallman que é o cara). Alias, tem muita gente, coisa de uns 80%, que nem sabia disso e acaba dando créditos ao Stallman.
Brian Fox foi o autor do GNU Bash, do GNU Makeinfo, do GNU Info, do GNU Finger, thereadline e history libraries. Além de ter sido o mantenedor do GNU Emacs por um tempo (e tem gente que acha que o Stallman que é o cara)
Brian Fox, autor do GNU Bash
 Muitos não se lembram de Mark Adler, que foi um os criadores do Gzip (e que inclusive é um dos responsáveis pela missão espacial para Marte).
Mark Adler
Mark Adler, um dos autores do Gzip e um dos responsáveis pela missão de exploração ao planeta Marte.
 Muitos não se lembram de pessoas valiosas como essa. Já quando falamos de linux, o caso é o contrario disso; quem já esteve em um evento como a Linuxcon sabe que isso é bem diferente.

 Existem muitas ferramentas do GNU que são utilizadas no Linux, e disso todos nós já sabemos. Ferramentas como: GCC, Glibc, Bash, Emacs, Gzip, GNU make, Gnome, GTK, Coreutils e etc. A questão é que é possível substituir tais ferramentas, mesmo que ainda não por completo; e é aí aonde a liberdade entra em cena para mim.
 Então, para esclarecer esse assunto, selecionei aqui algumas dentre as muitas ferramentas que são possíveis utilizar no lugar das mencionadas do GNU. Não estou fazendo isso com a intenção de discussão, apena procurando te ajudar a ampliar seu conhecimento e abrir os seus olhos para a gama de software livres e de qualidade que existem.

LLVM

LLVM (Low Level Virtual Machine) é uma coleção de compiladores modulares e reutilizáveis que foi iniciado como um projeto de pesquisa na universidade de Illinois. Está sob licença open Source UIUC no estilo BSD. que mencionam que pretendem mantê-lo permanentemente aberto.O Clang, compilador que mencionei no inicio deste artigo, que é uma alternativa ao GCC, faz parte do LLVM. A palavra Clang (pronuncia-se cléng) é uma onomatopeia em inglês do som emitido pelo metal.
 O Clang possui as características de compilação mais rápida, menor uso de memória e melhores ferramentas de diagnósticos como no modelo apresentado abaixo:


 Há muitos recursos e atributos interessantes no LLVM e no Clang para os desenvolvedores e pessoas que integram sistema podem tirar vantagem quando desenvolver ou implantar seus próprios projetos.
 Um outro recurso interessante mencionado no site do Funtoo Linux, é a sua capacidade de compilação de programas Leiam o artigo em http://www.funtoo.org/Clang ou leia na imagem abaixo:

pode ocorrer de alguns programas não compilarem (como o glibc) por que eles dependem de extensões específicas do GCC (é por isso que todo o código do BSD pode ser compilado com o LLVM mas alguns códigos GNU não) [nota do redator: liberdade?] ou padrões depois de compilação com sucesso do LLVM (como o xorg-server) ... ... Os frontends do C/C++ do LLVM, clang and clang++ na versão 3.0 são estáveis o suficiente para ser self-hosting compilar Boost, Qt, LibreOffice, FreeBSD, algumas partes do kernel Linux kernel e muito mais.
Passe o cursor do mouse para ler a tradução.
 Existe o projeto da Linux Foundation que visa construir o kernel Linux totalmente utilizando o Clang. Foi de onde eu retirei a imagem do Tux com as asas e cauda de ferro. Um site realizou um benchmark entre os compiladores Intel C++, GNU C++ e LLVM Clang.


 Existem muitas empresas trabalhando e investindo recursos nesse projeto. Até mesmo a Microsoft está investido recursos financeiros no LLVM, pois irá basear o seu futuro .Net no LLVM.
Acompanhe a lista de empresas e projetos que utilizam o LLVM

MUSL

Musl (pronuncia-se mâssôl) uma biblioteca C desenvolvida do zero. O site do Musl mostra um gráfico comparativo entre as bibliotecas C.

 O OpenWall faz referência a biblioteca Musl por oferecer suporte nativo ao pacote TCB. Existe a distribuição Alpine Linux que faz uso dessa biblioteca em conjunto com o Busybox ao invés de um terminal. Para quem não sabe o que é o Busybox, ele é conhecido como o canivete Suíço do Linux embarcado.  É um conjunto de comandos dentro de um único executável. É o Busybox que fica dentro o initrd para o kernel utilizar no momento do boot. Foi originalmente desenvolvido por Bruce Perens que já foi presidente do projeto Debian assumindo o lugar de Ian Murdock.
Comando reunidos no do Busybox.
Lista de comandos no Busybox

XZ

 Tukaani, era uma distribuição derivada do Slackware (que merecia ter sido mencionada no meu vídeo sobre o Slackware devido a sua ótima contribuição) e que deu origem a alguns projetos. A distribuição não existe mais, mas as ferramentas que eram parte integrante da distribuição estão em pleno desenvolvimento.
Em suas primeiras versões chamava-se de LZMA, é um compressor que nasceu na distribuição.
 O XZ hoje é utilizado fortemente pelo kernel desde de Dezembro de 2.013 e pelo Funtoo desde 2.008 (como mencionei no meu artigo parabenizando a equipe do Funtoo).
 O XZ apresenta melhor compressão do que o Gzip mesmo em compressões com o Gzip utilizando a opção "-9". Na verdade o XZ apresenta melhor compressão até mesmo que o Bzip2.

CMake

Cmake é uma ferramenta build system cross-platform. Como postado do Diolinux no artigo sobre Linux ser o ambiente mais utilizado em C e C++, é possível ver que o CMake é mais utilizada do que o GNU Make.
Dentre os casos de sucesso do CMake podemos ver o Netflix, o KDE, o game Second Life, sistemas de robóticas, o MySQL entre outros. Um coisa que considero a equipe do CMake é a sua humildade.

Scons

 Falando de CMake, eu não poderia deixar de citar o Scons, que também é uma ferramenta de construção. Escrita em Python, o Scons visa ser um substituto para o tradicional make e que possui funcionalidade integrada semelhando ao autoconf/automake.
 Muitos já elogiaram o Scons; pessoas como Eric S. Raymond, authr de "A Catedral e o Bazaar", Timothee Besset da id Software onde menciona que o Linux build system do Doom3 utiliza o Scons e que é show. Essa já é a segunda vez que ouço que o Scons é utilizado em compilação de alguma coisa relacionada a jogos. Gosto de considerar a parte da avaliação envolvendo jogos devido sua dificuldade de programação que envolve inteligencia artificial, simulação de física, renderização e etc.

Man

 Apesar de muito conhecido, incluí o Man nessa história por que o GNU possui o seu próprio, o comando info. Detesto o info; hora ele é útil, a maior parte do tempo não.

QT 

É um framework muito conhecido por ser utilizado no desenvolver o KDE. Menciono essa pois acho mais poderosa do que a GTK.

Existem muitos outros projetos que são possíveis substituir os do GNU como:
 Percebi que projetos fora do GNU ou até forks são em certos aspectos mais eficientes em seus propósitos.
 Não estou aqui me levantando contra o projeto GNU, mas a mesma mensagem que deixo aos usuários de Windows envio também às comunidades de software livre de código aberto. Não devemos ficar presos unicamente à ideias ou paixão. O mundo é muito mais amplo do que possamos imaginar e podemos usufruir de tudo isso, dando chance a outros projetos também. Adaptar ou morrer é um fato.

 Se uma ferramenta surge para o bem da comunidade, vindo a substituir as já existentes, ela devem ser bem recebidas. Isso é algo que acontece constantemente no Linux.
 Essas ferramentas vem para a melhoria e o avanço da tecnologia. O que vejo é muita rivalidade inútil ao invés de foco na coisa mais importante, que é a melhoria contínua.

 Lembrem-se não somete do GNU, e sim de todos os projetos de software livre e de código aberto que, por muitas vezes, podem apresentar ser até mais eficientes. Lembrem-se de todas as licenças que também proporcionam e possibilitam a liberdade (GPL não é unica. Existem em torno de 800 licenças). Lembrem-se de todas as pessoas que contribuem para esses projetos; graças a elas é que os projetos tem crescido e evoluído. E o mais importante unindo aos três itens mencionados, lembrem-se de serem livres.

Lançado LLVM 9.0.1

Lançado LLVM 9.0.1
Lançado LLVM 9.0.1
 Um dos compiladores capazes de compilar o kernel Linux é o LLVM/Clang (já fiz uma série cahamada "3 compiladores capazes de compilar o kernel Linux além do GCC" sendo os outros o TinyCC do criador o Qemu e o ICC da Intel).

 Existe até mesmo o projeto da LLVM Linux Foundation que visa compilar totalmente o kernel utilizando o Clang (fronend do LLVM). Algumas distribuições, projetos e empresas já migraram para o compilador como a própria Apple (forte a adotar o LLVM), o Open Mandriva ja compilou 94% dos seus pacotes com Clang, o Android é 100% compilado com o LLVM, o  Debian hoje compila grande parte dos seus pacotes usando o LLVM/Clang, é fortemente indicado para embarcados, FreeBSD, PCBSD, Sony, Qualcomm e mais uma lista gigantesca de empresas.


 Antes de finalizar o ano, o projeto LLVM/Clang lançou a versão 9.0.1. Essa é uma versão de correção de bugs da versão anterior e mantendo sua compatibilidade. Não há muito o que se falar, mas eu não queria deixar passar batido o seu lançamento (e o seu próximo lançamento está previsto para 6 ou 7 de April de 2020). Fica aqui também um forte agradecimento aos financiadores do projeto que tem permitido esse compilador acontecer.

 O código fonte (ou binários) da nova versão podem ser baixados clicando aqui.
Mais sobre o LLVM/Clang pode ser conferido clicando aqui

Lançado LLVM 5.0

LLVM no Linux =)
LLVM no Linux =)

Um dos compiladores do Linux é o LLVM/Clang. Existe até mesmo o projeto da LLVM Linux Foundation que visa compilar totalmente o kernel utilizando o Clang (fronend do LLVM). Algumas distribuições, projetos e empresas já migraram para o compilador como a própria Apple (forte a adotar o LLVM), o Open Mandriva ja compilou 94% dos seus pacotes com Clang, o  Debian hoje compila grande parte dos seus pacotes usando o LLVM/Clang, é fortemente indicado para embarcados, FreeBSD, PCBSD, Android, Sony, Qualcomm e mais uma lista gigantesca de empresas.

Status do LLVM no Linux
Status do LLVM no Linux
Nesse feriado aqui no Brasil de 7 de Setembro foi lançada a nova versão do compilador saltando de 4.0.1 para 5.0 já que na nova versão possui um novo esquema versão (assim como aconteceu no Linux).

Nessa nova versão que foi um esforço de seis meses para o lançamento, foi adicionado suporte a C++17, co-rotinas, melhorias no desempenho, no warinig no compilador, muitas correções de bugs e muito mais.

todas as informações estão nas notas de lançamento que podem ser conferidas logo abaixo:
Notas de lançamento do LLVM/Clang 5.0
O LLVM está diponível para download no link abaixo e possui versão APT e para Windows (obrigado Microsoft, por contribuir com a comunidade LLVM).
Link para download da versão 5.0
Link para versão APT

Puppy quirky passará a utilizar toybox, musl e clang

Puppy quirky passará a utilizar toybox, musl e clang
Puppy quirky passará a utilizar toybox, musl e clang
 Puppy Quirky Linux é uma distribuição experimental criada por Barry Kauler em 2013 depois de se aposentar da liderança do projeto Puppy Linux. Sim, o Quirky é desenvolvido pelo fundador do Puppy Linux com a intenção de poder explorar o sistema mais a fundo com novas ideias podendo ser mais ousado nos desafios. Porém em Dezembro de 2018 o Quirky Linux foi descontinuado para dar lugar a sua nova distribuição experimental chamada EasyOS.
curso-linux-da-migração-a-administração-do-sistema-operacional
CLIQUE AQUI, VENHA APRENDER LINUX COMIGO E TORNE-SE UM VERDADEIRO PROFISSIONAL.
 No inicio de Outubro, anunciaram que irão iniciar sua próxima build T2 para o Puppy quirky e que planejam utilizar musl/clang e substituir o busybox totalmente pelo toybox. O maior problema no momento é que ainda não é possível utilizar o toybox como principal terminal padrão (nem mesmo no Hermetic Linux, ou mkroot que é a distribuição de teste de implementação do toybox) devido ainda ter certa dependência completa do toybox pendente. No caso do mkroot, o que ainda é feito no mkroot é trabalhar em dois  passos.

  1. Utilizar o Busybox como terminal de comandos padrão 
  2. Substituir os comandos pelos existentes no toybox.
 Por hora é o que pretendem fazer no build T2 do Puppy Quirky até que esse objetivo seja alcançado. Espero que tal dependência venha logo o que não falta muito para isso :)

Mais sobre o toybox
Mais sobre a musl
Mais sobre o llvm

NÃO SE ESQUEÇA DE SE INSCREVER NO MEU CURSO DE MIGRAÇÃO PARA LINUX. 

Lançado LLVM 8.0.1

Lançado LLVM 8.0.1
Lançado LLVM 8.0.1

 LLVM é a coleção de compiladores que tende a substituir o GCC no Linux (gostemos ou não) sendo já adota pelo Android (O Android é todo compilado com o LLVM), Debian (de mais 50 mil pacotes, 32.757 foram compilados com o LLVM e somente 1314 apresentaram falha (4 %),  o Open Mandriva (quase 100% do Open Mandriva) e o Fedora está tomando o mesmo rumo. Fora as distribuições Linux, outros sistemas operacionais também já o adotam como o MacOS (sendo uma das pioneiras no seu uso), o FreeBSD, o TrueOS e o DragonflyBSD (tendo suporte a ambos compiladores). Em Março foi lançada a versão 8.0.0 e como de costume, a cada seis meses é lançada uma nova versão.
curso-linux-da-migração-a-administração-do-sistema-operacional
CLIQUE AQUI, VENHA APRENDER LINUX COMIGO E TORNE-SE UM VERDADEIRO PROFISSIONAL.
 Foi lançada a sua versão 8.0.1 que traz muitas correções de bugs da versão 8.0.0 (porém mantendo a sua compatibilidade com a API e ABI da versão anterior); speculative load hardening; compilação atual na API ORC JIT; remoção do suporte experimental à alvo WebAssembly, uma opção do Clang para inicializar varáveis automáticas; melhorias no suporte á cabeçalho pre-compilado no clang-cl, na flag /Zc:dllexportInlines-; suporte a RISC-V no lld e muitas otimizações e melhorias em diagnósticos.
Mais sobre o LLVM, clique aqui

Lançado LLVM 10.0.0

Lançado LLVM 10.0.0
Lançado LLVM 10.0.0

 Artigo rápido anunciando que foi lançada a versão 10.0.0 do LLVM. Esse lançamento é o resultado de seis meses de árduo trabalho que traz suporte a conceitos C++ ao Clang, o Clang não roda mais em um processo separado por padrão ("in-process cc1"), Windows control flow guard (CFG) checks, suporte para mais núcleos de processador e features e, como de costume, muitas correções de bug, otimizações  e novos diagnósticos de compilador.
For more details, see the release notes:

Mais sobre o LLVM/Clang

Lançado LLVM 9.0.0

Linux e o LLVM
Lançado LLVM 9.0.0
 LLVM é a coleção de compiladores que tende a substituir o GCC no Linux (gostemos ou não) sendo já adota pelo Android (O Android é todo compilado com o LLVM), Debian (de mais 50 mil pacotes, 32.757 foram compilados com o LLVM e somente 1314 apresentaram falha (4 %)),  o Open Mandriva (quase 100% do Open Mandriva) e o Fedora está tomando o mesmo rumo. Fora as distribuições Linux, outros sistemas operacionais também já o adotam como o MacOS X (sendo uma das pioneiras no seu uso), o FreeBSD, o TrueOS e o DragonflyBSD (tendo suporte a ambos compiladores). Em Março foi lançada a versão 8.0.0 e como de costume, a cada seis meses é lançada uma nova versão.
curso-linux-da-migração-a-administração-do-sistema-operacional
CLIQUE AQUI, VENHA APRENDER LINUX COMIGO E TORNE-SE UM VERDADEIRO PROFISSIONAL.
 Foi anunciado no 19 de Setembro o lançamento da versão 9.0.0 do LLVM (um trabalho que levou seis meses depois do ultimo lançamento). Nesse lançamento foi adicionado suporte a asm goto, habilitando para construir a mainline do kernel Linux para x86_64 com o Clang, RISCV agora construído por padrão (não é mais experimental), suporte experimental a C++ para o OpenCL. Correções de bugs, otimizações e melhorias no diagnósticos.

LLVM Foundation pretende adotar linguagem Fortran em sua coleção

LLVM/Clang
LLVM/Clang + Fortran
 LLVM é o compilador que está ganhando cada vez mais espaço nos projetos, ambientes comerciais e acadêmicos. Esse começo de adoção tem a ver com a Apple depois de presenciar a Free Software Foundation tomou a errada atitude de processar a Cisco por um serviço da Broadcom.

 Desta forma, a Apple tomou a iniciativa de congelar o uso das ferramentas do GNU que ela já fazia e passou a investir em outros projetos como criar seu próprio servidor de arquivos, comprar o CUPs e investir no LLVM/Clang para substituir a toolchain do GNU. Depois disso, vários outros projetos começaram a seguir o mesmo caminho (que aparenta ser sem volta, até mesmo o Linux anda fazendo o mesmo)
Certificação Linux LPIC-1 e CompTIA Linux+


 Depois de muito debate, esta semana a fundação LLVM anunciou que irão adicionar o suporte ao compilador e runtime f18 Fortran. Tal conclusão foi feita na EuroLLVM’19 onde os diretores do LLVM aprovaram tal inclusão ao projeto. A fundação recomendou adotar um novo nome ao projeto como flang ou simplesmente fortran para se tornar mais óbvio para novos contribuidores.


Há outros debates sendo feitos em torno da nova adição. A comunidad LLVM Foundation dá boas vindas ao projeto ficando satisfeitas em ver novos esforços sobre o compilador e runtime.

Lançado LLVM 4.0.1

Eu já havia mencionado sobre o LLVM/Clang no artigo Redução do kernel Linux e do filesystem para IoT:
Aritgo sobre a redução do kernel e do filesystem para IoT
LLVM/Clang é compilador C/C++ que será utilizado como padrão no Linux como pode ser conferido no artigo O dia que o pinguim adquire asas e cauda de um dragão de ferro . A distribuição Open Mandriva já faz uso de quase 100% desse compilador como padrão e espero assim continuar; a própria distribuição Debian também também já faz desse compilador em muitos de seus pacotes (para a minha felicidade).
Página oficinal LLVM da Linux Foundation
Eu não poderia deixar de fazer esse anuncio uma vez que o LLVM/Clang vai fazer parte da série Muito além do GNU. então, confiram só que essa em que Tom Stellard anuncia que a nova versão traz correções de bugs presentes na versão 4.0.0 (inclusive esse lançamento é compatível com a versão anterior). Tudo bem... é só isso...

A versão anterior (na qual a 4.0.1 possui compatibilidade) inclui o uso de profile data em ThinLTO, eliminação de código morto (aggressive dead code elimination) mais agressivo more aggressive, suporte experimental a co-rotinas, alvo AVR experimental, melhor compatibilidade com o GNU ld e melhorias de desempenho significativas em LLD, tão bem quanto melhorias em otimoizações e muito mais.

A equipe do LLVM agradece a equipe de testers (Hans Wennborg, Bernhard Rosenkränzer, Dimitry Andric, Simon Dardis, Sylvestre Ledru, Diana Picus, Vedant Kumar) que sem seles não seria possível o seu lançamento. Agradecem tambem a todos que ajudaram a identificar bugs criticos, encontrar bug-fixes e resolver conflitos.
Agora é só aguardar a nova versão estar aqui.

Redução do kernel Linux e do filesystem para IoT

Essa é uma noticia mais de um mês atrás. mas já que estamos falando sobre o toybox na série "Muito além do GNU" essa semana, porque não estender mais o assunto para conhecer mais sobre a ferramenta?

Na Embedded Linux Conference que aconteceu do dia 21 a 23 de Fevereiro deste ano em Portland, Michael Opdenacker da Free Electrons apresentou a palestra sobre como reduzir o tamanho do sistema (tando o kernel quando o user space) já que Linux estava cedendo espaço na IoT para os RTOSes.

Link para o artigo com o vídeo em linux.com

Nessa, Michael apresentou utilizando ferramentos como o LLVM/Clang  3.8.1 no lugar do GCC (mesmo que o GCC 6.2 tenha apresentado melhoria diante o GCC 4.7 no ARM). Com o GCC podemos utilizar a opção -Os para reduzir o espaço enquanto que o LLVM/Clang faz isso “out of the box sem precisar fazer nada”. O LLVM/Clang compila o kernel também para a otimização de desempenho tornando-se melhor do que o que temos hoje com o GCC LTO hoje.

Chegaram a sugerir patches de melhoras para o GCC, mas os patches causaram novos problemas e os desenvolvedores temeram que isso criaria novos bugs dificeis de serem rastreados e por isso os patches não foram aceitos.

Outras tecnicas foram aparesentadas para utilizar com o GCC como a opção -mthumb (que no compilador do Ubuntu vem por padrão) para fazer uma mescla de instruções de 16 e 32 bits aos invés de somente 32 em procedores ARM, a opção “make tinyconfig” que é utilizada desde o kernel 3.18, para combinar junto ao “make allnoconfig” com mais algumas configurações e assim reduzir o tamanho dos binários 
“ela utiliza gcc optimize for size, assim o código pode ser mais lento mas se torna menor”
“Você habilita a compressão XZIP do kernel, e você economiza entre 6 a 10KB.”
Habilitar a opação obj-y no kernel Makefiles podendo compilar o kernel sem a necessidade do ptrace o tempo todo, que em ARM consome 14KB. 

no lado do user space, foram sugeridas ferramentas como o próprio toybox:

Site oficial to toybox

“Toybox possui as mesmas aplicações e a maioria dos mesmos recursos que o busybox, mas utiliza somente 84KB ao invés de 100KB,”
“Se você quiser um shell com apenas algunas algumas utilidades na linha de comando, toybox poderia lhe economizar milhares de bytes, embora ele seja menos configurável."
O uso da Musl que utiliza menos espaço do que glibc (sem duvida) ou que a uclibc foi outra opção sugerida por Michael. apresentando um teste de comparação entre bibliotecas compilando um programa hellho.c com o GCC 6.2, o resultado final com a musl foi de 7.3kb,  67KB com a uclibc-ng 1.0.22 e 49KB com a glibc.

Para reduzir o filesystem, Michael sugeriu o uso do initramfs que lhe permite realizar boot mais rápido uma vez que não inicializa um filesystem e drivers armazenados. Para sistemas com mais RAM, Michael sugere o uso de filesystems mais compactos com o squashfs, JFFS2 ou ZRAM. Michael conclui que ainda há melhorias significativas a serem feitas no kernel space e no userspace. Daí eu imagino:

Se Linux já é bom, imagina tendo essas melhorias. Espero ainda ver isso =)

Kernel Linux receberá proteção CFI


Como sempre, Linux está sempre muito a frente quando o assunto é inovação na parte de segurança. Em um vídeo sobre o Android eu dividi segurança em partes diferentes para mostrar como realmente funciona e a fim de desmistificar o assunto.

 Desta vez o kernel Linux receberá recurso de Integridade no fluxo de controle (CFI = Control-flow integrity). A ideia foi apresentada por Kees Cook na linux.conf.au deste ano em Gold Coast, Australia. Control-flow Intigrity é uma técnica utilizada para reduzir a habilidade de redirecionar a execução de um programa evitando que ataques escalem privilégio de administrador.

 O Clang já possui alguns recursos que podem dar assistência e manter control-flow integrity e que tem sido aplicado ao kernel Android.

 A ideia surgiu analisando de ataques históricos relacionados a antivirus. O user space pode escrever (gravar) e executar em qualquer lugar no address space mas não pode escrever na área reservada ao kernel space. Uma falha de escrita no kernel poderia permitir que algo no user space seja gravado no kernel memory. Daí surge a ideia do CFI assegurar que tentativas indiretas vão para seus respectivos endereços.
Mais sobre o LLVM/Clang

NÃO SE ESQUEÇA DE SE INSCREVER NO MEU CURSO DE MIGRAÇÃO PARA LINUX.
NÃO SE ESQUEÇA DE SE INSCREVER NO MEU CURSO DE MIGRAÇÃO PARA LINUX.
CURSO DE SHELL SCRIPT DO MATEUS MÜLLER

Marcadores

A pior história sobre Linux que já ouvi (5) A.I (1) ambiente gráfico (15) AMD (14) analise (9) Andriod (8) artigo (5) benchmark (3) BSDs (20) btrfs (12) Caixa de Ferramentas do UNIX (19) canto do Diego Lins (2) certificações Linux (6) Código Fonte (50) comandos (17) comp (1) compressores (4) container (1) CPU (18) criptografia (2) crowdfunding (9) cursos (21) daemons (13) Debian (29) desenvolvimento (55) desktop (17) DevOps (1) DevSecOps (1) dic (1) Dica de leitura (52) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diocast (1) dioliunx (3) distribuições Linux (13) Docker (7) DragonflyBSD (15) ead Diolinux (2) edição de vídeo (4) EMMI Linux (4) emuladores (5) endless (5) English interview (2) Enless OS (2) entrevista (16) espaço aberto (83) evento (4) facebook (1) Fedora (4) filesystem (59) financiamento coletivo (2) fork (3) fox n forests (4) FreeBSD (12) Funtoo Linux (13) games (87) gerenciadores de pacotes (2) GOG (3) google (8) gpu (3) hardware (98) I.A (1) init system (7) Intel (15) IoT (1) ispconfig (1) jogos (33) kernel (114) lançamento (43) leis (1) LFCS (1) licenças (7) Linus (15) linus torvalds (1) Linux (188) linux foundation (3) linux para leigos (1) live (4) LPI (8) LTS (1) machine learning (1) meetup (1) mesa redonda (27) microsoft (3) microst (1) muito além do GNU (120) não viva de boatos (9) navegadores (3) NetBSD (3) novatec (17) o meu ambiente de trabalho (3) off-topic (12) open source (79) OpenBSD (3) OpenShift (1) os vários sabores de Linux (39) padrim (2) palestras e eventos (3) partições (6) pentest (6) processadores (25) professor Augusto Manzano (11) Programação (40) propagandas com Linux (8) Red Hat (13) redes (2) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (1) runlevel (2) Secomp (1) segurança digital (14) servidores (1) shell (1) sistema operacional (18) Software livre e de código aberto (148) sorteio (3) Steam (8) Steam no Linux (6) supercomputadores (4) suse (5) systemd (7) terminal (73) toca do tux (1) toybox (15) tutorial (6) Tux (3) unboxing (7) UNIX (15) UNIX Toolbox (14) vartroy (1) vga (1) vulnerabilidade (3) wayland (2) whatsapp (1) Windows Subsystem for Linux (1) wine (12) WoT (1) ZFS (9)