Skip to content

Latest commit

 

History

History
247 lines (176 loc) · 12.3 KB

File metadata and controls

247 lines (176 loc) · 12.3 KB

From @xet7

DONE

Changeable filename

  • Change everywhere that it's not hardcoded to filename "darkesthour" or "darkesthour.c", but instead it's changeable variable in settings. => Done: Source/settings.sh

TODO

C64 version of kanban related, colors and rounded corners possible

JSON

Xr0 verifier, guarantee the safety of C programs at compile time

How to Secure Existing C and C++ Software Without Memory Safety

C and C++ Prioritize Performance over Correctness (2023)

C Programming and Memory Management - Full Course

Compiler Options Hardening Guide for C and C++

Beej's Guide to C Programming

C++ creator calls for help to defend programming language from 'serious attacks'

Fil-C

stdlib not threadsafe

The C23 edition of Modern C

reftrack-plugin – plugin for GCC that tracks references to allocated objects

Memory safety without lifetime parameters

C memory safety

The incredible, terrible insecurity of Rust

So, by now I'm sure you've heard the news about a backdoor making it into xz builds on unstable versions of Debian and Fedora. I made a joke in one of the threads here about Rust surely being able to prevent this kind of vulnerability.

Then, I decided to look into the state of supply-chain security in Rust. And... wow.

For the last seventy-seven releases of the Rust compiler -- the last nine years of development -- the Rust team has worked meticulously to ensure that each new version of the compiler can only be built using the exact previous version. Want to compile rustc 1.77? You'll need to compile rustc 1.76 first; rustc 1.75 won't cut it. So compiling the most recent version of Rust from scratch is really difficult and expensive. (Even if you start from the third-party "mrustc" implementation, you'll still need to build more than 20 intermediate versions. "gccrs" won't save you either because they're planning to take hard dependencies on Rust libraries that will need to be compiled with rustc.)

This would not be a huge problem except that Rust developers demand that the latest version of Rust be available in distributions immediately. There's no official specification for the Rust language, and the year-based "editions" mechanism is almost worthless; correct Rust is whatever the compiler happens to accept at the moment, and that changes every six weeks. If you're a distro, good luck reviewing all those changes. If you're not, good luck participating in the community without bypassing your distro's security process to download rustc directly from the Rust team.

And that community is important! Rust is intentionally designed to (force) heavily encourage you to download packages from Crates.io, their community package manager. (Important features like proc macros and async are almost completely unusable without third-party packages.) Crates.io is heavily inspired by NPM, the JavaScript package manager you might have heard about from the constant stream of news articles about malicious packages and left-pad controversies.

Combine that with the "welcoming" behavior required by the Rust Code of Conduct and, well... if I was a nation-state actor trying to scheme a way to sneak backdoors onto people's computers, I don't think I could come up with much better than this.

Check C code for type safety?

C programming course 2024

Book

Learn C

Reading and writing files

Additional build architectures?

Additional run architectures?

  • ls /usr/bin/qemu* shows some, not added yet
  • For these, AmigaForever/C64Forever would maybe work for testing:
    • AmigaOS3/darkest-hour
    • AppleII/DarkestHour
    • C64/DarkestHour.prg
    • CBM-II/DarkestHour.prg
    • CommodorePET40columns/DarkestHour.prg
    • CommodorePET80columns/DarkestHour.prg
    • Plus4/DarkestHour.prg
  • VICE emulator has commands like "xvic" or "xpet" or "x64". Try could those start emulator with DarkestHour app directly?
  • Can other emulators start app directly too?

Other compiling, transpiling related, from post of xet7 elsewhere

I have not got Emscripten to work yet.

With Haxe https://haxe.org I have transpiled hello world https://github.com/wekan/hx/blob/main/prototypes/code/hello/Wekan.hx to some other programming languages https://github.com/wekan/hx/blob/main/prototypes/code/hello/build.sh#L296 . I'm also trying to learn HaxeUI http://haxeui.org .

But I think HaxeUI is also too heavy, similar like Godot to HTML5 would be, I would need to hand-code HTML4 to get smallest possible webpage size for web apps.

Today 2023-01-23 I found w2c2:

I'm trying to learn wax https://github.com/LingDong-/wax , it has some strange Lisp like AST syntax code, it is rare in so that it can also transpile to Swift. Transpiled code is near like hand-generated simple syntax, not much extra.

I did at 2018-2019 fork OneLang https://ide.onelang.io so that I could run it locally https://github.com/xet7?tab=repositories&q=onelang , but I have not looked has that language made some progress.

Nim with Python-like syntax can transpile to Javascript https://nim-lang.org

V with Go-like syntax can also transpile to Javascript https://vlang.io

Because doing big quality control app with MS Access 97 kind of made me like VBA and SQL, I have been looking at various basics at https://github.com/JohnBlood/awesome-basic like https://github.com/google/wwwbasic , DecimalBasic https://hp.vector.co.jp/authors/VA008683/english/ that can also be transpiled to Lazarus/FreePascal, Gambas Basic https://github.com/wekan/hx/tree/main/prototypes/ui/gambas

And while WeKan https://wekan.github.io is made with Javascript, some have paid me to write some WeKan related Python, and some others sent Python too https://github.com/wekan/wekan/wiki/Python

I did some benchmarks because I'm trying to make WeKan faster https://github.com/wekan/hx/tree/main/prototypes/code/webserver

Current lightweight mostly HTML4 WeKan prototype is still in beginning stages at https://github.com/wekan/php/blob/main/public/index.php

Current Meteor WeKan requires modern desktop or mobile browser like Safari/Firefox/Chromium based.

Related to Haxe, there is this diff tool made with Haxe https://github.com/paulfitz/daff , it also uses some older fork of Haxe that has transpile to Ruby support. I did send some PR sometime to daff project to fix some stuff I found.