looklook 0.9.0

Descriptive signal synthesiser.
// Copyright 2026 Gabriel Bjørnager Jensen.
//
// This file is part of LOOKLOOK.
//
// LOOKLOOK is free software: you can redistribute it and/or modify it under the
// terms of the GNU Affero General Public License as published by the Free Software
// Foundation, either version 3 of the License, or (at your option) any later ver-
// sion.
//
// LOOKLOOK is distributed in the hope that it will be useful, but WITHOUT ANY WAR-
// RANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
// PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License along
// with LOOKLOOK. If not, see <https://www.gnu.org/licenses/>.

//! Descriptive signal synthesiser.

#![feature(const_clone)]
#![feature(const_cmp)]
#![feature(const_convert)]
#![feature(const_default)]
#![feature(const_select_unpredictable)]
#![feature(const_trait_impl)]
#![feature(derive_const)]
#![feature(exact_bitshifts)]
#![feature(fn_traits)]
#![feature(file_buffered)]
#![feature(integer_widen_truncate)]
#![feature(pattern_type_macro)]
#![feature(pattern_types)]
#![feature(unboxed_closures)]

const _: () = assert!(
	usize::BITS >= u32::BITS,
	"looklook requires `32`-bit hosts at least",
);

pub mod config;
pub mod error;
pub mod ffi;
pub mod isa;
pub mod looklook;
pub mod signal;
pub mod vm;

/// The programme entry point.
fn main() {
	use std::process::exit;

	let looklook = looklook::Looklook::new();

	let exit_code = match looklook.run() {
		Ok(()) => {
			0
		}

		Err(e) => {
			eprintln!("{e}");
			1
		}
	};

	exit(exit_code);
}

//           ############
//         ##            ##
//     ##########    ##########
//   ##########        ##########
// ######      ##    ##      ######
// ####    ##    ####    ##    ####
// ####  ######        ######  ####
// ####    ##    ####    ##    ####
// ######      ########      ######
// ##############    ##############
// ############        ############
// ######  ##            ##  ######
// ####      ##        ##      ####
// ######      ##    ##      ######
// ######        ####        ######
// ########                ########