CVE-2023-4863 is going to require patching everything that renders WebP images. Every browser/electron apps/mobile apps like telegram/Flutter apps/etc etc
Welcome to the modern software supply chain!
CVE-2023-4863 is going to require patching everything that renders WebP images. Every browser/electron apps/mobile apps like telegram/Flutter apps/etc etc
Welcome to the modern software supply chain!
@shlee All of this could've been avoided if it was written in the OG #MemorySafe #Ada / #SPARK (normally I'd say #CommonLisp, but on very resource-constrained platforms it performs a bit worse, such hosts do call for Ada) like it should've been.
Writing any new non-toy #software in C or similar #MemoryUnsafe languages is gross #negligence, nothing else.
@wakame @shlee I wouldn't mind such a standard showing up.
Unfortunately for the very resource-constrained, even Scheme can be a bit chonky.
It has been tested in the past (with pretty promising results) that a small #embeddable #bytecode VM can actually do that job relatively well (while minimizing porting effort).
But even then, aggressive tree-shaking is basically mandatory.
I'm curious to see where #Guile and #WASM will go, for this reason among others.
From my perspective, functional languages are description first and programming languages only second.
Concepts like "tree-shaking" exist because for a long time it wasn't obvious to remove code you don't need.
And the question if something is needed depends on the "expressivity" of a language.
Therefore, it is IMHO easy with proper functional languages, nearly impossible with C.
[Btw: This is a bit of a pseudo-religious topic for me, sry
]
@wakame @shlee It also depends on the purpose/paradigm of the language.
Lisp systems are inherently dynamic systems you're supposed to be able to reprogram live, which means keeping most of the implementation & compiler around.
So static deployment removes a lot of that and represents a special case (hence tree-shaking).
Also, #Ada & #GNAT support dead-code elimination (https://gcc.gnu.org/onlinedocs/gcc-7.5.0/gnat_ugn/Reducing-Size-of-Executables-with-Unused-Subprogram_002fData-Elimination.html#Reducing-Size-of-Executables-with-Unused-Subprogram_002fData-Elimination).
For me, it seems like the original idea of Lisp was lost along the way:
An alternative description of computation (instead of Turing machines).
Which would lead to something that current languages fail at:
The ability for the computer to reason about the program. In a way, "understanding" the program.