From 7a2c7e4f125e258172e3f41e6ab22d1e14fcf581 Mon Sep 17 00:00:00 2001 From: "MATSUMOTO, Katsuyoshi" Date: Tue, 23 Dec 2025 23:11:28 +0900 Subject: [PATCH 1/3] rename vaporware to caotral --- vaporware.gemspec => caotral.gemspec | 10 +++---- exe/{vaporware => caotral} | 0 lib/{vaporware.rb => caotral.rb} | 0 lib/{vaporware => caotral}/assembler.rb | 0 lib/{vaporware => caotral}/assembler/elf.rb | 0 .../assembler/elf/header.rb | 0 .../assembler/elf/section.rb | 0 .../assembler/elf/section/bss.rb | 0 .../assembler/elf/section/data.rb | 0 .../assembler/elf/section/note.rb | 0 .../assembler/elf/section/null.rb | 0 .../assembler/elf/section/shstrtab.rb | 0 .../assembler/elf/section/strtab.rb | 0 .../assembler/elf/section/symtab.rb | 0 .../assembler/elf/section/text.rb | 0 .../assembler/elf/section_header.rb | 0 .../assembler/elf/sections.rb | 0 .../assembler/elf/utils.rb | 0 lib/{vaporware => caotral}/compiler.rb | 0 .../compiler/generator.rb | 0 lib/{vaporware => caotral}/error.rb | 0 lib/{vaporware => caotral}/linker.rb | 0 lib/{vaporware => caotral}/version.rb | 0 sig/{vaporware => caotral}/assembler.rbs | 4 +-- sig/{vaporware => caotral}/assembler/elf.rbs | 8 +++--- .../assembler/elf/header.rbs | 2 +- .../assembler/elf/section.rbs | 6 ++--- .../assembler/elf/section/bss.rbs | 2 +- .../assembler/elf/section/data.rbs | 2 +- .../assembler/elf/section/note.rbs | 2 +- sig/caotral/assembler/elf/section/null.rbs | 2 ++ .../assembler/elf/section/shstrtab.rbs | 2 +- .../assembler/elf/section/strtab.rbs | 2 +- .../assembler/elf/section/symtab.rbs | 2 +- .../assembler/elf/section/text.rbs | 2 +- .../assembler/elf/section_header.rbs | 6 ++--- .../assembler/elf/sections.rbs | 6 ++--- .../assembler/elf/utils.rbs | 4 +-- sig/{vaporware => caotral}/compiler.rbs | 2 +- .../compiler/generator.rbs | 2 +- .../compiler/linker.rbs | 2 +- sig/{vaporware.rbs => coatral.rbs} | 0 sig/vaporware/assembler/elf/section/null.rbs | 2 -- .../assembler/binary/elf/jump_test.rb | 4 +-- .../assembler/elf/section/test_note.rb | 6 ++--- .../assembler/elf/section/test_shstrtab.rb | 8 +++--- .../assembler/elf/section/test_symtab.rb | 4 +-- test/caotral/assembler/elf/test_header.rb | 10 +++++++ .../assembler/elf/test_section_header.rb | 4 +-- test/{vaporware => caotral}/test_assembler.rb | 8 +++--- test/{vaporware => caotral}/test_compiler.rb | 14 +++++----- test/{vaporware => caotral}/test_linker.rb | 8 +++--- .../assembler/binary/elf/lea_addr_test.rb | 27 ------------------- .../assembler/binary/elf/xor_test.rb | 26 ------------------ test/vaporware/assembler/elf/test_header.rb | 10 ------- 55 files changed, 73 insertions(+), 126 deletions(-) rename vaporware.gemspec => caotral.gemspec (82%) rename exe/{vaporware => caotral} (100%) rename lib/{vaporware.rb => caotral.rb} (100%) rename lib/{vaporware => caotral}/assembler.rb (100%) rename lib/{vaporware => caotral}/assembler/elf.rb (100%) rename lib/{vaporware => caotral}/assembler/elf/header.rb (100%) rename lib/{vaporware => caotral}/assembler/elf/section.rb (100%) rename lib/{vaporware => caotral}/assembler/elf/section/bss.rb (100%) rename lib/{vaporware => caotral}/assembler/elf/section/data.rb (100%) rename lib/{vaporware => caotral}/assembler/elf/section/note.rb (100%) rename lib/{vaporware => caotral}/assembler/elf/section/null.rb (100%) rename lib/{vaporware => caotral}/assembler/elf/section/shstrtab.rb (100%) rename lib/{vaporware => caotral}/assembler/elf/section/strtab.rb (100%) rename lib/{vaporware => caotral}/assembler/elf/section/symtab.rb (100%) rename lib/{vaporware => caotral}/assembler/elf/section/text.rb (100%) rename lib/{vaporware => caotral}/assembler/elf/section_header.rb (100%) rename lib/{vaporware => caotral}/assembler/elf/sections.rb (100%) rename lib/{vaporware => caotral}/assembler/elf/utils.rb (100%) rename lib/{vaporware => caotral}/compiler.rb (100%) rename lib/{vaporware => caotral}/compiler/generator.rb (100%) rename lib/{vaporware => caotral}/error.rb (100%) rename lib/{vaporware => caotral}/linker.rb (100%) rename lib/{vaporware => caotral}/version.rb (100%) rename sig/{vaporware => caotral}/assembler.rbs (87%) rename sig/{vaporware => caotral}/assembler/elf.rbs (77%) rename sig/{vaporware => caotral}/assembler/elf/header.rbs (95%) rename sig/{vaporware => caotral}/assembler/elf/section.rbs (67%) rename sig/{vaporware => caotral}/assembler/elf/section/bss.rbs (81%) rename sig/{vaporware => caotral}/assembler/elf/section/data.rbs (83%) rename sig/{vaporware => caotral}/assembler/elf/section/note.rbs (94%) create mode 100644 sig/caotral/assembler/elf/section/null.rbs rename sig/{vaporware => caotral}/assembler/elf/section/shstrtab.rbs (86%) rename sig/{vaporware => caotral}/assembler/elf/section/strtab.rbs (62%) rename sig/{vaporware => caotral}/assembler/elf/section/symtab.rbs (93%) rename sig/{vaporware => caotral}/assembler/elf/section/text.rbs (95%) rename sig/{vaporware => caotral}/assembler/elf/section_header.rbs (86%) rename sig/{vaporware => caotral}/assembler/elf/sections.rbs (65%) rename sig/{vaporware => caotral}/assembler/elf/utils.rbs (85%) rename sig/{vaporware => caotral}/compiler.rbs (93%) rename sig/{vaporware => caotral}/compiler/generator.rbs (96%) rename sig/{vaporware => caotral}/compiler/linker.rbs (92%) rename sig/{vaporware.rbs => coatral.rbs} (100%) delete mode 100644 sig/vaporware/assembler/elf/section/null.rbs rename test/{vaporware => caotral}/assembler/binary/elf/jump_test.rb (91%) rename test/{vaporware => caotral}/assembler/elf/section/test_note.rb (68%) rename test/{vaporware => caotral}/assembler/elf/section/test_shstrtab.rb (54%) rename test/{vaporware => caotral}/assembler/elf/section/test_symtab.rb (82%) create mode 100644 test/caotral/assembler/elf/test_header.rb rename test/{vaporware => caotral}/assembler/elf/test_section_header.rb (66%) rename test/{vaporware => caotral}/test_assembler.rb (94%) rename test/{vaporware => caotral}/test_compiler.rb (77%) rename test/{vaporware => caotral}/test_linker.rb (69%) delete mode 100644 test/vaporware/assembler/binary/elf/lea_addr_test.rb delete mode 100644 test/vaporware/assembler/binary/elf/xor_test.rb delete mode 100644 test/vaporware/assembler/elf/test_header.rb diff --git a/vaporware.gemspec b/caotral.gemspec similarity index 82% rename from vaporware.gemspec rename to caotral.gemspec index 4dbb103..2cad5b3 100644 --- a/vaporware.gemspec +++ b/caotral.gemspec @@ -3,16 +3,16 @@ require_relative "lib/vaporware/version" Gem::Specification.new do |spec| - spec.name = "vaporware-compiler" - spec.version = Vaporware::VERSION + spec.name = "caotral" + spec.version = Caotral::VERSION spec.authors = ["MATSUMOTO, Katsuyoshi"] spec.email = ["github@katsyoshi.org"] - spec.summary = "Vaporware is the vaporware." - spec.description = "Vaporware is the vaporware." + spec.summary = "Caotral is the ruby native compiler." + spec.description = "Caotral is the vaporware." spec.license = "MIT" spec.required_ruby_version = ">= 3.2.0" - spec.homepage = "https://github.com/katsyoshi/vaporware" + spec.homepage = "https://github.com/katsyoshi/caotral" # Specify which files should be added to the gem when it is released. # The `git ls-files -z` loads the files in the RubyGem that have been added into git. diff --git a/exe/vaporware b/exe/caotral similarity index 100% rename from exe/vaporware rename to exe/caotral diff --git a/lib/vaporware.rb b/lib/caotral.rb similarity index 100% rename from lib/vaporware.rb rename to lib/caotral.rb diff --git a/lib/vaporware/assembler.rb b/lib/caotral/assembler.rb similarity index 100% rename from lib/vaporware/assembler.rb rename to lib/caotral/assembler.rb diff --git a/lib/vaporware/assembler/elf.rb b/lib/caotral/assembler/elf.rb similarity index 100% rename from lib/vaporware/assembler/elf.rb rename to lib/caotral/assembler/elf.rb diff --git a/lib/vaporware/assembler/elf/header.rb b/lib/caotral/assembler/elf/header.rb similarity index 100% rename from lib/vaporware/assembler/elf/header.rb rename to lib/caotral/assembler/elf/header.rb diff --git a/lib/vaporware/assembler/elf/section.rb b/lib/caotral/assembler/elf/section.rb similarity index 100% rename from lib/vaporware/assembler/elf/section.rb rename to lib/caotral/assembler/elf/section.rb diff --git a/lib/vaporware/assembler/elf/section/bss.rb b/lib/caotral/assembler/elf/section/bss.rb similarity index 100% rename from lib/vaporware/assembler/elf/section/bss.rb rename to lib/caotral/assembler/elf/section/bss.rb diff --git a/lib/vaporware/assembler/elf/section/data.rb b/lib/caotral/assembler/elf/section/data.rb similarity index 100% rename from lib/vaporware/assembler/elf/section/data.rb rename to lib/caotral/assembler/elf/section/data.rb diff --git a/lib/vaporware/assembler/elf/section/note.rb b/lib/caotral/assembler/elf/section/note.rb similarity index 100% rename from lib/vaporware/assembler/elf/section/note.rb rename to lib/caotral/assembler/elf/section/note.rb diff --git a/lib/vaporware/assembler/elf/section/null.rb b/lib/caotral/assembler/elf/section/null.rb similarity index 100% rename from lib/vaporware/assembler/elf/section/null.rb rename to lib/caotral/assembler/elf/section/null.rb diff --git a/lib/vaporware/assembler/elf/section/shstrtab.rb b/lib/caotral/assembler/elf/section/shstrtab.rb similarity index 100% rename from lib/vaporware/assembler/elf/section/shstrtab.rb rename to lib/caotral/assembler/elf/section/shstrtab.rb diff --git a/lib/vaporware/assembler/elf/section/strtab.rb b/lib/caotral/assembler/elf/section/strtab.rb similarity index 100% rename from lib/vaporware/assembler/elf/section/strtab.rb rename to lib/caotral/assembler/elf/section/strtab.rb diff --git a/lib/vaporware/assembler/elf/section/symtab.rb b/lib/caotral/assembler/elf/section/symtab.rb similarity index 100% rename from lib/vaporware/assembler/elf/section/symtab.rb rename to lib/caotral/assembler/elf/section/symtab.rb diff --git a/lib/vaporware/assembler/elf/section/text.rb b/lib/caotral/assembler/elf/section/text.rb similarity index 100% rename from lib/vaporware/assembler/elf/section/text.rb rename to lib/caotral/assembler/elf/section/text.rb diff --git a/lib/vaporware/assembler/elf/section_header.rb b/lib/caotral/assembler/elf/section_header.rb similarity index 100% rename from lib/vaporware/assembler/elf/section_header.rb rename to lib/caotral/assembler/elf/section_header.rb diff --git a/lib/vaporware/assembler/elf/sections.rb b/lib/caotral/assembler/elf/sections.rb similarity index 100% rename from lib/vaporware/assembler/elf/sections.rb rename to lib/caotral/assembler/elf/sections.rb diff --git a/lib/vaporware/assembler/elf/utils.rb b/lib/caotral/assembler/elf/utils.rb similarity index 100% rename from lib/vaporware/assembler/elf/utils.rb rename to lib/caotral/assembler/elf/utils.rb diff --git a/lib/vaporware/compiler.rb b/lib/caotral/compiler.rb similarity index 100% rename from lib/vaporware/compiler.rb rename to lib/caotral/compiler.rb diff --git a/lib/vaporware/compiler/generator.rb b/lib/caotral/compiler/generator.rb similarity index 100% rename from lib/vaporware/compiler/generator.rb rename to lib/caotral/compiler/generator.rb diff --git a/lib/vaporware/error.rb b/lib/caotral/error.rb similarity index 100% rename from lib/vaporware/error.rb rename to lib/caotral/error.rb diff --git a/lib/vaporware/linker.rb b/lib/caotral/linker.rb similarity index 100% rename from lib/vaporware/linker.rb rename to lib/caotral/linker.rb diff --git a/lib/vaporware/version.rb b/lib/caotral/version.rb similarity index 100% rename from lib/vaporware/version.rb rename to lib/caotral/version.rb diff --git a/sig/vaporware/assembler.rbs b/sig/caotral/assembler.rbs similarity index 87% rename from sig/vaporware/assembler.rbs rename to sig/caotral/assembler.rbs index 337cc67..1f305dd 100644 --- a/sig/vaporware/assembler.rbs +++ b/sig/caotral/assembler.rbs @@ -1,5 +1,5 @@ -use Vaporware::Assembler::ELF -class Vaporware::Assembler +use Caotral::Assembler::ELF +class Caotral::Assembler @input: String @output: String @assembler: String diff --git a/sig/vaporware/assembler/elf.rbs b/sig/caotral/assembler/elf.rbs similarity index 77% rename from sig/vaporware/assembler/elf.rbs rename to sig/caotral/assembler/elf.rbs index baaf530..30dc8c1 100644 --- a/sig/vaporware/assembler/elf.rbs +++ b/sig/caotral/assembler/elf.rbs @@ -1,8 +1,8 @@ -use Vaporware::Assembler::ELF::Header -use Vaporware::Assembler::ELF::Section::Text -use Vaporware::Assembler::ELF::Sections +use Caotral::Assembler::ELF::Header +use Caotral::Assembler::ELF::Section::Text +use Caotral::Assembler::ELF::Sections -class Vaporware::Assembler::ELF +class Caotral::Assembler::ELF Error: singleton(StandardError) @input: String diff --git a/sig/vaporware/assembler/elf/header.rbs b/sig/caotral/assembler/elf/header.rbs similarity index 95% rename from sig/vaporware/assembler/elf/header.rbs rename to sig/caotral/assembler/elf/header.rbs index 33b559d..73939cc 100644 --- a/sig/vaporware/assembler/elf/header.rbs +++ b/sig/caotral/assembler/elf/header.rbs @@ -1,4 +1,4 @@ -class Vaporware::Assembler::ELF::Header +class Caotral::Assembler::ELF::Header IDENT: Array[Integer] ELF_FILE_TYPE: Hash[Symbol, Integer] diff --git a/sig/vaporware/assembler/elf/section.rbs b/sig/caotral/assembler/elf/section.rbs similarity index 67% rename from sig/vaporware/assembler/elf/section.rbs rename to sig/caotral/assembler/elf/section.rbs index f533ef1..0a6464c 100644 --- a/sig/vaporware/assembler/elf/section.rbs +++ b/sig/caotral/assembler/elf/section.rbs @@ -1,7 +1,7 @@ -use Vaporware::Assembler::ELF::SectionHeader -use Vaporware::Assembler::ELF::Section::* +use Caotral::Assembler::ELF::SectionHeader +use Caotral::Assembler::ELF::Section::* -class Vaporware::Assembler::ELF::Section +class Caotral::Assembler::ELF::Section attr_reader name: String attr_reader header: SectionHeader attr_reader body: Text | Null | Data | BSS | Symtab | Shstrtab | Strtab | Note diff --git a/sig/vaporware/assembler/elf/section/bss.rbs b/sig/caotral/assembler/elf/section/bss.rbs similarity index 81% rename from sig/vaporware/assembler/elf/section/bss.rbs rename to sig/caotral/assembler/elf/section/bss.rbs index 630968a..aef578f 100644 --- a/sig/vaporware/assembler/elf/section/bss.rbs +++ b/sig/caotral/assembler/elf/section/bss.rbs @@ -1,4 +1,4 @@ -class Vaporware::Assembler::ELF::Section::BSS +class Caotral::Assembler::ELF::Section::BSS attr_reader size: Integer attr_reader offset: Integer diff --git a/sig/vaporware/assembler/elf/section/data.rbs b/sig/caotral/assembler/elf/section/data.rbs similarity index 83% rename from sig/vaporware/assembler/elf/section/data.rbs rename to sig/caotral/assembler/elf/section/data.rbs index c6153cc..4072247 100644 --- a/sig/vaporware/assembler/elf/section/data.rbs +++ b/sig/caotral/assembler/elf/section/data.rbs @@ -1,4 +1,4 @@ -class Vaporware::Assembler::ELF::Section::Data +class Caotral::Assembler::ELF::Section::Data PREFIX: Hash[Symbol, Integer] REGISTER_CODE: Hash[Symbol, Integer] OPECODE: Hash[Symbol, Integer] diff --git a/sig/vaporware/assembler/elf/section/note.rbs b/sig/caotral/assembler/elf/section/note.rbs similarity index 94% rename from sig/vaporware/assembler/elf/section/note.rbs rename to sig/caotral/assembler/elf/section/note.rbs index b0f0b24..4365e76 100644 --- a/sig/vaporware/assembler/elf/section/note.rbs +++ b/sig/caotral/assembler/elf/section/note.rbs @@ -1,4 +1,4 @@ -class Vaporware::Assembler::ELF::Section::Note +class Caotral::Assembler::ELF::Section::Note def self.gnu_property: () -> String @nsize: Array[Integer]? diff --git a/sig/caotral/assembler/elf/section/null.rbs b/sig/caotral/assembler/elf/section/null.rbs new file mode 100644 index 0000000..d01a3a3 --- /dev/null +++ b/sig/caotral/assembler/elf/section/null.rbs @@ -0,0 +1,2 @@ +class Caotral::Assembler::ELF::Section::Null +end diff --git a/sig/vaporware/assembler/elf/section/shstrtab.rbs b/sig/caotral/assembler/elf/section/shstrtab.rbs similarity index 86% rename from sig/vaporware/assembler/elf/section/shstrtab.rbs rename to sig/caotral/assembler/elf/section/shstrtab.rbs index 0233e63..606b339 100644 --- a/sig/vaporware/assembler/elf/section/shstrtab.rbs +++ b/sig/caotral/assembler/elf/section/shstrtab.rbs @@ -1,4 +1,4 @@ -class Vaporware::Assembler::ELF::Section::Shstrtab +class Caotral::Assembler::ELF::Section::Shstrtab @strtab: Array[Integer] def initialize: () -> void def build: () -> String diff --git a/sig/vaporware/assembler/elf/section/strtab.rbs b/sig/caotral/assembler/elf/section/strtab.rbs similarity index 62% rename from sig/vaporware/assembler/elf/section/strtab.rbs rename to sig/caotral/assembler/elf/section/strtab.rbs index 7ba992f..0a8c77a 100644 --- a/sig/vaporware/assembler/elf/section/strtab.rbs +++ b/sig/caotral/assembler/elf/section/strtab.rbs @@ -1,4 +1,4 @@ -class Vaporware::Assembler::ELF::Section::Strtab +class Caotral::Assembler::ELF::Section::Strtab @name: String def initialize: (String) -> void def build: () -> String diff --git a/sig/vaporware/assembler/elf/section/symtab.rbs b/sig/caotral/assembler/elf/section/symtab.rbs similarity index 93% rename from sig/vaporware/assembler/elf/section/symtab.rbs rename to sig/caotral/assembler/elf/section/symtab.rbs index 06071aa..bd1dc90 100644 --- a/sig/vaporware/assembler/elf/section/symtab.rbs +++ b/sig/caotral/assembler/elf/section/symtab.rbs @@ -1,4 +1,4 @@ -class Vaporware::Assembler::ELF::Section::Symtab +class Caotral::Assembler::ELF::Section::Symtab @name: Array[Integer]? @info: Array[Integer] @other: Array[Integer] diff --git a/sig/vaporware/assembler/elf/section/text.rbs b/sig/caotral/assembler/elf/section/text.rbs similarity index 95% rename from sig/vaporware/assembler/elf/section/text.rbs rename to sig/caotral/assembler/elf/section/text.rbs index 747d3d9..3ba0464 100644 --- a/sig/vaporware/assembler/elf/section/text.rbs +++ b/sig/caotral/assembler/elf/section/text.rbs @@ -1,4 +1,4 @@ -class Vaporware::Assembler::ELF::Section::Text +class Caotral::Assembler::ELF::Section::Text PREFIX: Hash[Symbol, Integer] REGISTER_CODE: Hash[Symbol, Integer] OPECODE: Hash[Symbol, Array[Integer]] diff --git a/sig/vaporware/assembler/elf/section_header.rbs b/sig/caotral/assembler/elf/section_header.rbs similarity index 86% rename from sig/vaporware/assembler/elf/section_header.rbs rename to sig/caotral/assembler/elf/section_header.rbs index 7c67f50..1fb5aab 100644 --- a/sig/vaporware/assembler/elf/section_header.rbs +++ b/sig/caotral/assembler/elf/section_header.rbs @@ -1,6 +1,6 @@ -use Vaporware::Assembler::ELF +use Caotral::Assembler::ELF -class Vaporware::Assembler::ELF::SectionHeader +class Caotral::Assembler::ELF::SectionHeader @name: Array[Integer]? @type: Array[Integer]? @flags: Array[Integer]? @@ -13,7 +13,7 @@ class Vaporware::Assembler::ELF::SectionHeader @entsize: Array[Integer]? def build: () -> String - def set!: (?name: Integer?, ?type: Integer?, ?flags: Integer?, ?addr: Integer?, ?offset: Integer?, ?size: Integer?, ?link: Integer?, ?info: Integer?, ?addralign: Integer?, ?entsize: Integer?) -> Vaporware::Assembler::ELF::SectionHeader + def set!: (?name: Integer?, ?type: Integer?, ?flags: Integer?, ?addr: Integer?, ?offset: Integer?, ?size: Integer?, ?link: Integer?, ?info: Integer?, ?addralign: Integer?, ?entsize: Integer?) -> Caotral::Assembler::ELF::SectionHeader def null!: () -> ELF::SectionHeader def text!: () -> ELF::SectionHeader def note!: () -> ELF::SectionHeader diff --git a/sig/vaporware/assembler/elf/sections.rbs b/sig/caotral/assembler/elf/sections.rbs similarity index 65% rename from sig/vaporware/assembler/elf/sections.rbs rename to sig/caotral/assembler/elf/sections.rbs index 74aa795..ce38395 100644 --- a/sig/vaporware/assembler/elf/sections.rbs +++ b/sig/caotral/assembler/elf/sections.rbs @@ -1,6 +1,6 @@ -use Vaporware::Assembler::ELF::Section +use Caotral::Assembler::ELF::Section -class Vaporware::Assembler::ELF::Sections +class Caotral::Assembler::ELF::Sections ATTRIBUTES: Array[Symbol] attr_reader null: Section attr_reader text: Section @@ -12,5 +12,5 @@ class Vaporware::Assembler::ELF::Sections attr_reader shstrtab: Section def initialize: () -> void - def each: (){ (Vaporware::Assembler::ELF::Section) -> void } -> void + def each: (){ (Caotral::Assembler::ELF::Section) -> void } -> void end diff --git a/sig/vaporware/assembler/elf/utils.rbs b/sig/caotral/assembler/elf/utils.rbs similarity index 85% rename from sig/vaporware/assembler/elf/utils.rbs rename to sig/caotral/assembler/elf/utils.rbs index 253abed..2641788 100644 --- a/sig/vaporware/assembler/elf/utils.rbs +++ b/sig/caotral/assembler/elf/utils.rbs @@ -1,6 +1,6 @@ -use Vaporware::Assembler::ELF::Error +use Caotral::Assembler::ELF::Error -module Vaporware::Assembler::ELF::Utils +module Caotral::Assembler::ELF::Utils def build: () -> String def size: () -> Integer def empties: () -> Array[Symbol] diff --git a/sig/vaporware/compiler.rbs b/sig/caotral/compiler.rbs similarity index 93% rename from sig/vaporware/compiler.rbs rename to sig/caotral/compiler.rbs index b6914d2..12bd285 100644 --- a/sig/vaporware/compiler.rbs +++ b/sig/caotral/compiler.rbs @@ -1,4 +1,4 @@ -class Vaporware::Compiler +class Caotral::Compiler GCC_LD_PATH: String LD_PATH: String DYN_LD_PATH: String diff --git a/sig/vaporware/compiler/generator.rbs b/sig/caotral/compiler/generator.rbs similarity index 96% rename from sig/vaporware/compiler/generator.rbs rename to sig/caotral/compiler/generator.rbs index 82bad73..3eba879 100644 --- a/sig/vaporware/compiler/generator.rbs +++ b/sig/caotral/compiler/generator.rbs @@ -1,4 +1,4 @@ -class Vaporware::Compiler::Generator +class Caotral::Compiler::Generator REGISTER: Array[String] # attr_reader diff --git a/sig/vaporware/compiler/linker.rbs b/sig/caotral/compiler/linker.rbs similarity index 92% rename from sig/vaporware/compiler/linker.rbs rename to sig/caotral/compiler/linker.rbs index 2c90bee..7fbf9de 100644 --- a/sig/vaporware/compiler/linker.rbs +++ b/sig/caotral/compiler/linker.rbs @@ -1,4 +1,4 @@ -class Vaporware::Compiler::Linker +class Caotral::Compiler::Linker @input: String @output: String @linker: String diff --git a/sig/vaporware.rbs b/sig/coatral.rbs similarity index 100% rename from sig/vaporware.rbs rename to sig/coatral.rbs diff --git a/sig/vaporware/assembler/elf/section/null.rbs b/sig/vaporware/assembler/elf/section/null.rbs deleted file mode 100644 index 413179c..0000000 --- a/sig/vaporware/assembler/elf/section/null.rbs +++ /dev/null @@ -1,2 +0,0 @@ -class Vaporware::Assembler::ELF::Section::Null -end diff --git a/test/vaporware/assembler/binary/elf/jump_test.rb b/test/caotral/assembler/binary/elf/jump_test.rb similarity index 91% rename from test/vaporware/assembler/binary/elf/jump_test.rb rename to test/caotral/assembler/binary/elf/jump_test.rb index cfa8b58..3ac76a7 100644 --- a/test/vaporware/assembler/binary/elf/jump_test.rb +++ b/test/caotral/assembler/binary/elf/jump_test.rb @@ -7,7 +7,7 @@ def test_forward_jump input = Pathname.pwd.join("sample", "assembler", "jmp_forward.s").to_s output = "jmp_forward.o" - assembler = Vaporware::Assembler.new(input:, output:) + assembler = Caotral::Assembler.new(input:, output:) _header, _null, text, = assembler.to_elf expected = [ @@ -31,7 +31,7 @@ def test_backward_jump input = Pathname.pwd.join("sample", "assembler", "jmp_backward.s").to_s output = "jmp_backward.o" - assembler = Vaporware::Assembler.new(input:, output:) + assembler = Caotral::Assembler.new(input:, output:) _header, _null, text, = assembler.to_elf expected = [ diff --git a/test/vaporware/assembler/elf/section/test_note.rb b/test/caotral/assembler/elf/section/test_note.rb similarity index 68% rename from test/vaporware/assembler/elf/section/test_note.rb rename to test/caotral/assembler/elf/section/test_note.rb index 9c9a496..00a875a 100644 --- a/test/vaporware/assembler/elf/section/test_note.rb +++ b/test/caotral/assembler/elf/section/test_note.rb @@ -1,13 +1,13 @@ require "vaporware" require "test/unit" -class Vaporware::Assembler::ELF::Section::NoteTest < Test::Unit::TestCase +class Caotral::Assembler::ELF::Section::NoteTest < Test::Unit::TestCase def reference_binary = "\x04\x00\x00\x00 \x00\x00\x00\x05\x00\x00\x00GNU\x00\x02\x00\x01\xC0\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\xC0\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00".force_encoding("ASCII-8BIT") - def setup = @note = Vaporware::Assembler::ELF::Section::Note.new + def setup = @note = Caotral::Assembler::ELF::Section::Note.new def test_gnu_property! assert_equal( - Vaporware::Assembler::ELF::Section::Note.gnu_property, + Caotral::Assembler::ELF::Section::Note.gnu_property, reference_binary ) assert_equal( diff --git a/test/vaporware/assembler/elf/section/test_shstrtab.rb b/test/caotral/assembler/elf/section/test_shstrtab.rb similarity index 54% rename from test/vaporware/assembler/elf/section/test_shstrtab.rb rename to test/caotral/assembler/elf/section/test_shstrtab.rb index fc2ab48..d7b43ee 100644 --- a/test/vaporware/assembler/elf/section/test_shstrtab.rb +++ b/test/caotral/assembler/elf/section/test_shstrtab.rb @@ -1,8 +1,8 @@ require "vaporware" require "test/unit" -class Vaporware::Assembler::ELF::Section::TestShstrtab < Test::Unit::TestCase - def setup = @shstrtab = Vaporware::Assembler::ELF::Section::Shstrtab.new +class Caotral::Assembler::ELF::Section::TestShstrtab < Test::Unit::TestCase + def setup = @shstrtab = Caotral::Assembler::ELF::Section::Shstrtab.new def test_set_values binary = "\x00.text\x00".force_encoding("ASCII-8BIT") @shstrtab.set!(name: "text") @@ -12,7 +12,7 @@ def test_set_values assert_equal(@shstrtab.build, binary) end def test_alert_values - assert_raise(Vaporware::Assembler::ELF::Error) { @shstrtab.set!(name: :main) } - assert_raise(Vaporware::Assembler::ELF::Error) { @shstrtab.set!(name: 123) } + assert_raise(Caotral::Assembler::ELF::Error) { @shstrtab.set!(name: :main) } + assert_raise(Caotral::Assembler::ELF::Error) { @shstrtab.set!(name: 123) } end end diff --git a/test/vaporware/assembler/elf/section/test_symtab.rb b/test/caotral/assembler/elf/section/test_symtab.rb similarity index 82% rename from test/vaporware/assembler/elf/section/test_symtab.rb rename to test/caotral/assembler/elf/section/test_symtab.rb index bac0176..add52cd 100644 --- a/test/vaporware/assembler/elf/section/test_symtab.rb +++ b/test/caotral/assembler/elf/section/test_symtab.rb @@ -1,8 +1,8 @@ require "vaporware" require "test/unit" -class Vaporware::Assembler::ELF::Section::TestSymtab < Test::Unit::TestCase - def setup = @symtab = Vaporware::Assembler::ELF::Section::Symtab.new +class Caotral::Assembler::ELF::Section::TestSymtab < Test::Unit::TestCase + def setup = @symtab = Caotral::Assembler::ELF::Section::Symtab.new def test_default_values binary = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".force_encoding("ASCII-8BIT") diff --git a/test/caotral/assembler/elf/test_header.rb b/test/caotral/assembler/elf/test_header.rb new file mode 100644 index 0000000..12d8e33 --- /dev/null +++ b/test/caotral/assembler/elf/test_header.rb @@ -0,0 +1,10 @@ +require "vaporware" +require "test/unit" + +class Caotral::Assembler::ELF::HeaderTest < Test::Unit::TestCase + def setup = @elf_header = Caotral::Assembler::ELF::Header.new + + def test_build_elf_header + # TODO: ELF Header Section binary + end +end diff --git a/test/vaporware/assembler/elf/test_section_header.rb b/test/caotral/assembler/elf/test_section_header.rb similarity index 66% rename from test/vaporware/assembler/elf/test_section_header.rb rename to test/caotral/assembler/elf/test_section_header.rb index b2358e4..b08edd6 100644 --- a/test/vaporware/assembler/elf/test_section_header.rb +++ b/test/caotral/assembler/elf/test_section_header.rb @@ -1,8 +1,8 @@ require "vaporware" require "test/unit" -class Vaporware::Assembler::ELF::SectionHeaderTest < Test::Unit::TestCase - def setup = @section_header = Vaporware::Assembler::ELF::SectionHeader.new +class Caotral::Assembler::ELF::SectionHeaderTest < Test::Unit::TestCase + def setup = @section_header = Caotral::Assembler::ELF::SectionHeader.new def test_null! assert(@section_header.null!) assert_equal(@section_header.build.size, 64) diff --git a/test/vaporware/test_assembler.rb b/test/caotral/test_assembler.rb similarity index 94% rename from test/vaporware/test_assembler.rb rename to test/caotral/test_assembler.rb index e10e033..859807e 100644 --- a/test/vaporware/test_assembler.rb +++ b/test/caotral/test_assembler.rb @@ -3,11 +3,11 @@ require "tempfile" require "pathname" -class Vaporware::Assembler::ELFTest < Test::Unit::TestCase +class Caotral::Assembler::ELFTest < Test::Unit::TestCase def test_to_elf input = Pathname.pwd.join('sample', 'assembler', 'plus.s').to_s - assembler = Vaporware::Assembler.new(input:, output: "amd64.o") + assembler = Caotral::Assembler.new(input:, output: "amd64.o") header, null, text, data, bss, note, symtab, strtab, shstrtab, *section_headers = assembler.to_elf sh_null, sh_text, sh_data, sh_bss, sh_note, sh_symtab, sh_strtab, sh_shstrtab = section_headers r_header, r_null, r_text, r_data, r_bss, r_note, r_symtab, r_strtab, r_shstrtab, *r_section_headers = dumped_references @@ -36,12 +36,12 @@ def test_to_elf def test_assembler_command input = Pathname.pwd.join('sample', 'assembler', 'plus.s').to_s - assembler = Vaporware::Assembler.new(input:, output: "amd64.o") + assembler = Caotral::Assembler.new(input:, output: "amd64.o") assert_equal("as", assembler.command("as")) assert_equal("as", assembler.command("gcc")) assert_equal("clang", assembler.command("clang")) assert_match(/clang/, assembler.command("llvm")) - assert_raise(Vaporware::Assembler::Error) { assembler.command("foo") } + assert_raise(Caotral::Assembler::Error) { assembler.command("foo") } end def dumped_references diff --git a/test/vaporware/test_compiler.rb b/test/caotral/test_compiler.rb similarity index 77% rename from test/vaporware/test_compiler.rb rename to test/caotral/test_compiler.rb index ba89b00..b877792 100644 --- a/test/vaporware/test_compiler.rb +++ b/test/caotral/test_compiler.rb @@ -1,7 +1,7 @@ require "vaporware" require "test/unit" -class Vaporware::CompilerTest < Test::Unit::TestCase +class Caotral::CompilerTest < Test::Unit::TestCase def setup = @generated = ["tmp.s", "tmp.o"] def teardown File.delete("tmp") if File.exist?("tmp") @@ -9,7 +9,7 @@ def teardown end def test_sample_plus @file = "sample/plus.rb" - @vaporware = Vaporware.compile!(input: @file, assembler: "self") + @vaporware = Caotral.compile!(input: @file, assembler: "self") IO.popen("./tmp").close exit_code, handle_code = check_process($?.to_i) assert_equal(9, exit_code) @@ -18,7 +18,7 @@ def test_sample_plus def test_sample_variable @file = "sample/variable.rb" - @vaporware = Vaporware.compile!(input: @file, assembler: "self") + @vaporware = Caotral.compile!(input: @file, assembler: "self") IO.popen("./tmp").close exit_code, handle_code = check_process($?.to_i) assert_equal(1, exit_code) @@ -27,7 +27,7 @@ def test_sample_variable def test_sample_if @file = "sample/if.rb" - @vaporware = Vaporware.compile!(input: @file) + @vaporware = Caotral.compile!(input: @file) IO.popen("./tmp").close exit_code, handle_code = check_process($?.to_i) assert_equal(1, exit_code) @@ -36,7 +36,7 @@ def test_sample_if def test_sample_else @file = "sample/else.rb" - @vaporware = Vaporware.compile!(input: @file) + @vaporware = Caotral.compile!(input: @file) IO.popen("./tmp").close exit_code, handle_code = check_process($?.to_i) assert_equal(2, exit_code) @@ -45,7 +45,7 @@ def test_sample_else def test_sample_while @file = "sample/while.rb" - @vaporware = Vaporware.compile!(input: @file) + @vaporware = Caotral.compile!(input: @file) IO.popen("./tmp").close exit_code, handle_code = check_process($?.to_i) assert_equal(55, exit_code) @@ -55,7 +55,7 @@ def test_sample_while def test_sample_call_method @generated = ["libtmp.so", "libtmp.so.o", "libtmp.so.s"] @file = "sample/method.rb" - @vaporware = Vaporware.compile!(input: @file, output: "./libtmp.so", shared: true, linker: "mold", assembler: "as") + @vaporware = Caotral.compile!(input: @file, output: "./libtmp.so", shared: true, linker: "mold", assembler: "as") require './sample/fiddle.rb' assert_equal(10, X.aibo) end diff --git a/test/vaporware/test_linker.rb b/test/caotral/test_linker.rb similarity index 69% rename from test/vaporware/test_linker.rb rename to test/caotral/test_linker.rb index bac6e55..4ac61b9 100644 --- a/test/vaporware/test_linker.rb +++ b/test/caotral/test_linker.rb @@ -1,17 +1,17 @@ require "vaporware" require "test/unit" -class Vaporware::LinkerTest < Test::Unit::TestCase +class Caotral::LinkerTest < Test::Unit::TestCase def test_librarie - linker = Vaporware::Linker.new(input: "tmp.o") + linker = Caotral::Linker.new(input: "tmp.o") assert_false(linker.libpath.empty?, "should not be empty") assert_false(linker.gcc_libpath.empty?, "should not be empty") end def test_link_command - linker = Vaporware::Linker.new(input: "tmp.o", output: "tmp") + linker = Caotral::Linker.new(input: "tmp.o", output: "tmp") assert_match(%r|mold -o tmp -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /.+/crt1.o /.+/crti.o /.+/crtbegin.o /.+/crtend.o /.+/libc.so /.+/crtn.o tmp.o|, linker.link_command) - linker = Vaporware::Linker.new(input: "tmp.o", output: "tmp", shared: true) + linker = Caotral::Linker.new(input: "tmp.o", output: "tmp", shared: true) assert_match(%r|mold -o tmp -m elf_x86_64 --shared /.+/crti.o /.+/crtbeginS.o /.+/crtendS.o /.+/libc.so /.+/crtn.o tmp.o|, linker.link_command) end end diff --git a/test/vaporware/assembler/binary/elf/lea_addr_test.rb b/test/vaporware/assembler/binary/elf/lea_addr_test.rb deleted file mode 100644 index 8fd0e67..0000000 --- a/test/vaporware/assembler/binary/elf/lea_addr_test.rb +++ /dev/null @@ -1,27 +0,0 @@ -require "vaporware" -require "test/unit" -require "pathname" - -class ELFLeaTest < Test::Unit::TestCase - def test_lea_addr - input = Pathname.pwd.join("sample", "assembler", "lea_addr.s").to_s - output = "lea_addr.o" - - assembler = Vaporware::Assembler.new(input:, output:) - _header, _null, text, = assembler.to_elf - - expected = [ - 0x55, - 0x48, 0x89, 0xe5, - 0x48, 0x83, 0xEC, 0x08, - 0x48, 0x8D, 0x45, 0xF8, - 0x48, 0x89, 0xec, - 0x5d, - 0xc3, - ] - - assert_equal(expected, text.unpack("C*")[...expected.size]) - ensure - File.delete(output) if File.exist?(output) - end -end diff --git a/test/vaporware/assembler/binary/elf/xor_test.rb b/test/vaporware/assembler/binary/elf/xor_test.rb deleted file mode 100644 index 4f1c859..0000000 --- a/test/vaporware/assembler/binary/elf/xor_test.rb +++ /dev/null @@ -1,26 +0,0 @@ -require "vaporware" -require "test/unit" -require "pathname" - -class ELFXorTest < Test::Unit::TestCase - def test_xor_zero - input = Pathname.pwd.join("sample", "assembler", "xor_zero.s").to_s - output = "xor_zero.o" - - assembler = Vaporware::Assembler.new(input:, output:) - _header, _null, text, = assembler.to_elf - - expected = [ - 0x55, # push rbp - 0x48, 0x89, 0xe5, # mov rbp, rsp - 0x48, 0x31, 0xc0, # xor rax, rax - 0x48, 0x89, 0xec, # mov rsp, rbp - 0x5d, # pop rbp - 0xc3, # ret - ] - - assert_equal(expected, text.unpack("C*")[...expected.size]) - ensure - File.delete(output) if File.exist?(output) - end -end diff --git a/test/vaporware/assembler/elf/test_header.rb b/test/vaporware/assembler/elf/test_header.rb deleted file mode 100644 index 58cc929..0000000 --- a/test/vaporware/assembler/elf/test_header.rb +++ /dev/null @@ -1,10 +0,0 @@ -require "vaporware" -require "test/unit" - -class Vaporware::Assembler::ELF::HeaderTest < Test::Unit::TestCase - def setup = @elf_header = Vaporware::Assembler::ELF::Header.new - - def test_build_elf_header - # TODO: ELF Header Section binary - end -end From e7f85811ed64925b57cf5a1c2b8b87ccce30f18a Mon Sep 17 00:00:00 2001 From: "MATSUMOTO, Katsuyoshi" Date: Tue, 23 Dec 2025 23:22:20 +0900 Subject: [PATCH 2/3] replace vaporware to caotral --- Gemfile | 2 +- README.md | 4 +-- Rakefile | 2 +- bin/console | 2 +- caotral.gemspec | 4 +-- exe/caotral | 8 +++--- lib/caotral.rb | 16 +++++------ lib/caotral/assembler.rb | 2 +- lib/caotral/assembler/elf.rb | 2 +- lib/caotral/assembler/elf/header.rb | 4 +-- lib/caotral/assembler/elf/section.rb | 6 ++--- lib/caotral/assembler/elf/section/bss.rb | 4 +-- lib/caotral/assembler/elf/section/data.rb | 4 +-- lib/caotral/assembler/elf/section/note.rb | 4 +-- lib/caotral/assembler/elf/section/null.rb | 4 +-- lib/caotral/assembler/elf/section/shstrtab.rb | 8 +++--- lib/caotral/assembler/elf/section/strtab.rb | 4 +-- lib/caotral/assembler/elf/section/symtab.rb | 4 +-- lib/caotral/assembler/elf/section/text.rb | 8 +++--- lib/caotral/assembler/elf/section_header.rb | 4 +-- lib/caotral/assembler/elf/sections.rb | 18 ++++++------- lib/caotral/assembler/elf/utils.rb | 8 +++--- lib/caotral/compiler.rb | 4 +-- lib/caotral/compiler/generator.rb | 2 +- lib/caotral/error.rb | 2 +- lib/caotral/linker.rb | 2 +- lib/caotral/version.rb | 2 +- rbs_collection.yaml | 2 +- sig/coatral.rbs | 2 +- .../caotral/assembler/binary/elf/jump_test.rb | 2 +- .../assembler/binary/elf/lea_addr_test.rb | 27 +++++++++++++++++++ test/caotral/assembler/binary/elf/xor_test.rb | 26 ++++++++++++++++++ .../elf/{test_header.rb => header_test.rb} | 2 +- .../section/{test_note.rb => note_test.rb} | 2 +- .../{test_shstrtab.rb => shstrtab_test.rb} | 2 +- .../{test_symtab.rb => symtab_test.rb} | 2 +- ...ction_header.rb => section_header_test.rb} | 2 +- .../{test_assembler.rb => assembler_test.rb} | 2 +- .../{test_compiler.rb => compiler_test.rb} | 14 +++++----- .../{test_linker.rb => linker_test.rb} | 2 +- 40 files changed, 137 insertions(+), 84 deletions(-) create mode 100644 test/caotral/assembler/binary/elf/lea_addr_test.rb create mode 100644 test/caotral/assembler/binary/elf/xor_test.rb rename test/caotral/assembler/elf/{test_header.rb => header_test.rb} (91%) rename test/caotral/assembler/elf/section/{test_note.rb => note_test.rb} (96%) rename test/caotral/assembler/elf/section/{test_shstrtab.rb => shstrtab_test.rb} (97%) rename test/caotral/assembler/elf/section/{test_symtab.rb => symtab_test.rb} (97%) rename test/caotral/assembler/elf/{test_section_header.rb => section_header_test.rb} (95%) rename test/caotral/{test_assembler.rb => assembler_test.rb} (99%) rename test/caotral/{test_compiler.rb => compiler_test.rb} (79%) rename test/caotral/{test_linker.rb => linker_test.rb} (97%) diff --git a/Gemfile b/Gemfile index 0e0df1f..71a260b 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" -# Specify your gem's dependencies in vaporware.gemspec +# Specify your gem's dependencies in caotral.gemspec gemspec gem "rake", "~> 13.0" diff --git a/README.md b/README.md index ee0d5bf..d2e6848 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# Vaporware +# Caotral -it's the vaporware. +it's the caotral. diff --git a/Rakefile b/Rakefile index 1a2e030..98f9b71 100644 --- a/Rakefile +++ b/Rakefile @@ -8,7 +8,7 @@ require "steep/cli" task default: %i[test] Rake::TestTask.new do |t| - t.test_files = FileList['test/test*.rb', 'test/**/test*.rb', 'test/**/*_test.rb'] + t.test_files = FileList['test/**/*_test.rb'] end namespace :steep do diff --git a/bin/console b/bin/console index 1c78074..f4051a4 100755 --- a/bin/console +++ b/bin/console @@ -2,7 +2,7 @@ # frozen_string_literal: true require "bundler/setup" -require "vaporware" +require "caotral" # You can add fixtures and/or initialization code here to make experimenting # with your gem easier. You can also use a different console, if you like. diff --git a/caotral.gemspec b/caotral.gemspec index 2cad5b3..6ddf92d 100644 --- a/caotral.gemspec +++ b/caotral.gemspec @@ -1,6 +1,6 @@ # frozen_string_literal: true -require_relative "lib/vaporware/version" +require_relative "lib/caotral/version" Gem::Specification.new do |spec| spec.name = "caotral" @@ -9,7 +9,7 @@ Gem::Specification.new do |spec| spec.email = ["github@katsyoshi.org"] spec.summary = "Caotral is the ruby native compiler." - spec.description = "Caotral is the vaporware." + spec.description = "Caotral is the caotral." spec.license = "MIT" spec.required_ruby_version = ">= 3.2.0" spec.homepage = "https://github.com/katsyoshi/caotral" diff --git a/exe/caotral b/exe/caotral index 6196846..cfd7c54 100755 --- a/exe/caotral +++ b/exe/caotral @@ -1,6 +1,6 @@ #!/usr/bin/env ruby -require "vaporware" +require "caotral" require "optparse" opt = OptionParser.new options = { @@ -70,17 +70,17 @@ basename = File.expand_path(File.basename(input, ".*")) extname = File.extname(output) == ".so" output = basename + ".s" -Vaporware.compile(input:, output:, debug:) if options[:compile] +Caotral.compile(input:, output:, debug:) if options[:compile] input, output = output, basename + ".o" if options[:assemble] input = ARGV.first unless options[:compile] - Vaporware.assemble(input:, output:, assembler:, debug:) + Caotral.assemble(input:, output:, assembler:, debug:) File.delete(input) if File.exist?(input) && !debug && File.extname(input) != ".s" end if options[:link] input, output = output, basename output = options[:output] || output output += ".so" if options[:shared] && !extname - Vaporware.link(input:, output:, debug:, shared:, linker:) if options[:link] + Caotral.link(input:, output:, debug:, shared:, linker:) if options[:link] File.delete(input) if File.exist?(input) && !debug && File.extname(input) != ".o" end diff --git a/lib/caotral.rb b/lib/caotral.rb index b41dc85..6d5ab81 100644 --- a/lib/caotral.rb +++ b/lib/caotral.rb @@ -1,12 +1,12 @@ # frozen_string_literal: true -require_relative "vaporware/version" +require_relative "caotral/version" -require_relative "vaporware/assembler" -require_relative "vaporware/compiler" -require_relative "vaporware/linker" +require_relative "caotral/assembler" +require_relative "caotral/compiler" +require_relative "caotral/linker" -module Vaporware +module Caotral module_function def compile!(input:, assembler: "as", linker: "ld", output: "tmp", debug: false, compiler_options: ["-O0"], shared: false) d = File.expand_path(output) @@ -17,12 +17,12 @@ def compile!(input:, assembler: "as", linker: "ld", output: "tmp", debug: false, link(input: basename+".o", output: execf, linker:, debug:, shared:) end def compile(input:, output: "tmp.s", debug: false, shared: false) - Vaporware::Compiler.compile!(input:, output:, debug:) + Caotral::Compiler.compile!(input:, output:, debug:) end def assemble(input:, output: "tmp.o", debug: false, shared: false, assembler: "as") - Vaporware::Assembler.assemble!(input:, output:, debug:, assembler:, shared:) + Caotral::Assembler.assemble!(input:, output:, debug:, assembler:, shared:) end def link(input:, output: "tmp", linker: "ld", debug: false, shared: false) - Vaporware::Linker.link!(input:, output:, linker:, debug:, shared:) + Caotral::Linker.link!(input:, output:, linker:, debug:, shared:) end end diff --git a/lib/caotral/assembler.rb b/lib/caotral/assembler.rb index f3e185a..89e0733 100644 --- a/lib/caotral/assembler.rb +++ b/lib/caotral/assembler.rb @@ -5,7 +5,7 @@ require_relative "assembler/elf/sections" require_relative "assembler/elf/section_header" -class Vaporware::Assembler +class Caotral::Assembler GCC_ASSEMBLERS = ["gcc", "as"].freeze CLANG_ASSEMBLERS = ["clang", "llvm"].freeze ASSEMBLERS = (GCC_ASSEMBLERS + CLANG_ASSEMBLERS).freeze diff --git a/lib/caotral/assembler/elf.rb b/lib/caotral/assembler/elf.rb index 0b99bfe..d1f3411 100644 --- a/lib/caotral/assembler/elf.rb +++ b/lib/caotral/assembler/elf.rb @@ -1,4 +1,4 @@ -class Vaporware::Assembler +class Caotral::Assembler class ELF class Error < StandardError; end class Section; end diff --git a/lib/caotral/assembler/elf/header.rb b/lib/caotral/assembler/elf/header.rb index e36ce9d..aefd134 100644 --- a/lib/caotral/assembler/elf/header.rb +++ b/lib/caotral/assembler/elf/header.rb @@ -1,7 +1,7 @@ require_relative "../elf" -class Vaporware::Assembler::ELF::Header - include Vaporware::Assembler::ELF::Utils +class Caotral::Assembler::ELF::Header + include Caotral::Assembler::ELF::Utils IDENT = [0x7f, 0x45, 0x4c, 0x46, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00].freeze ELF_FILE_TYPE = { NONE: 0, REL: 1, EXEC: 2, DYN: 3, CORE: 4 }.freeze diff --git a/lib/caotral/assembler/elf/section.rb b/lib/caotral/assembler/elf/section.rb index 82e5663..a1080b5 100644 --- a/lib/caotral/assembler/elf/section.rb +++ b/lib/caotral/assembler/elf/section.rb @@ -8,15 +8,15 @@ require_relative "section/shstrtab" require_relative "section_header" -class Vaporware::Assembler::ELF::Section +class Caotral::Assembler::ELF::Section attr_reader :header, :body, :name, :section_name def initialize(type:, options: {}) type_string = type.to_s.capitalize type_string = type_string.upcase if type_string == "Bss" @section_name = type_string.downcase @name = section_name == "null" ? "" : "\0.#{section_name}" - @header = Vaporware::Assembler::ELF::SectionHeader.new.send("#{@section_name}!") - @body = Module.const_get("Vaporware::Assembler::ELF::Section::#{type_string}").new(**options) + @header = Caotral::Assembler::ELF::SectionHeader.new.send("#{@section_name}!") + @body = Module.const_get("Caotral::Assembler::ELF::Section::#{type_string}").new(**options) end def name=(name) diff --git a/lib/caotral/assembler/elf/section/bss.rb b/lib/caotral/assembler/elf/section/bss.rb index 518ae1b..87da36a 100644 --- a/lib/caotral/assembler/elf/section/bss.rb +++ b/lib/caotral/assembler/elf/section/bss.rb @@ -1,5 +1,5 @@ -class Vaporware::Assembler::ELF::Section::BSS - include Vaporware::Assembler::ELF::Utils +class Caotral::Assembler::ELF::Section::BSS + include Caotral::Assembler::ELF::Utils def initialize(**opts) = nil def build = bytes.flatten.pack("C*") def set! = self diff --git a/lib/caotral/assembler/elf/section/data.rb b/lib/caotral/assembler/elf/section/data.rb index 26e8b0c..ecf8d9a 100644 --- a/lib/caotral/assembler/elf/section/data.rb +++ b/lib/caotral/assembler/elf/section/data.rb @@ -1,5 +1,5 @@ -class Vaporware::Assembler::ELF::Section::Data - include Vaporware::Assembler::ELF::Utils +class Caotral::Assembler::ELF::Section::Data + include Caotral::Assembler::ELF::Utils def initialize(**opts) = nil def build = bytes.flatten.pack("C*") def set! = self diff --git a/lib/caotral/assembler/elf/section/note.rb b/lib/caotral/assembler/elf/section/note.rb index af5804e..ece321c 100644 --- a/lib/caotral/assembler/elf/section/note.rb +++ b/lib/caotral/assembler/elf/section/note.rb @@ -1,5 +1,5 @@ -class Vaporware::Assembler::ELF::Section::Note - include Vaporware::Assembler::ELF::Utils +class Caotral::Assembler::ELF::Section::Note + include Caotral::Assembler::ELF::Utils def self.gnu_property = new.gnu_property!.build def self.null = new.null!.build diff --git a/lib/caotral/assembler/elf/section/null.rb b/lib/caotral/assembler/elf/section/null.rb index 6173406..e5dcb37 100644 --- a/lib/caotral/assembler/elf/section/null.rb +++ b/lib/caotral/assembler/elf/section/null.rb @@ -1,5 +1,5 @@ -class Vaporware::Assembler::ELF::Section::Null - include Vaporware::Assembler::ELF::Utils +class Caotral::Assembler::ELF::Section::Null + include Caotral::Assembler::ELF::Utils def initialize(**opts) = nil def build = bytes.flatten.pack("C*") def set! = self diff --git a/lib/caotral/assembler/elf/section/shstrtab.rb b/lib/caotral/assembler/elf/section/shstrtab.rb index 57a03b4..493a6d0 100644 --- a/lib/caotral/assembler/elf/section/shstrtab.rb +++ b/lib/caotral/assembler/elf/section/shstrtab.rb @@ -1,5 +1,5 @@ -class Vaporware::Assembler::ELF::Section::Shstrtab - include Vaporware::Assembler::ELF::Utils +class Caotral::Assembler::ELF::Section::Shstrtab + include Caotral::Assembler::ELF::Utils def initialize(**opts) = @name = [] def build = bytes.flatten.pack("C*") def set!(name:) = (@name << name!(name); self) @@ -11,12 +11,12 @@ def name!(name) when String (name.match(/\A\0\..+\z/) ? name : "\0.#{name}").bytes when Array - raise Vaporware::Assembler::ELF::Error, "unaccepted type in Array" unless name.all? { |elem| elem.is_a?(Integer) } + raise Caotral::Assembler::ELF::Error, "unaccepted type in Array" unless name.all? { |elem| elem.is_a?(Integer) } n = name n.unshift(0) && n.push(0) unless n.first == 0 && n.last == 0 n else - raise Vaporware::Assembler::ELF::Error, "unsupported type" + raise Caotral::Assembler::ELF::Error, "unsupported type" end end end diff --git a/lib/caotral/assembler/elf/section/strtab.rb b/lib/caotral/assembler/elf/section/strtab.rb index e093db0..8984894 100644 --- a/lib/caotral/assembler/elf/section/strtab.rb +++ b/lib/caotral/assembler/elf/section/strtab.rb @@ -1,5 +1,5 @@ -class Vaporware::Assembler::ELF::Section::Strtab - include Vaporware::Assembler::ELF::Utils +class Caotral::Assembler::ELF::Section::Strtab + include Caotral::Assembler::ELF::Utils def initialize(names = "\0main\0", **opts) = @names = names def build = @names.bytes.pack("C*") end diff --git a/lib/caotral/assembler/elf/section/symtab.rb b/lib/caotral/assembler/elf/section/symtab.rb index e1fa26a..215e8cc 100644 --- a/lib/caotral/assembler/elf/section/symtab.rb +++ b/lib/caotral/assembler/elf/section/symtab.rb @@ -1,5 +1,5 @@ -class Vaporware::Assembler::ELF::Section::Symtab - include Vaporware::Assembler::ELF::Utils +class Caotral::Assembler::ELF::Section::Symtab + include Caotral::Assembler::ELF::Utils def initialize(**opts) @entsize = [] @name = num2bytes(0, 4) diff --git a/lib/caotral/assembler/elf/section/text.rb b/lib/caotral/assembler/elf/section/text.rb index da9f6d6..c82b012 100644 --- a/lib/caotral/assembler/elf/section/text.rb +++ b/lib/caotral/assembler/elf/section/text.rb @@ -1,4 +1,4 @@ -class Vaporware::Assembler::ELF::Section::Text +class Caotral::Assembler::ELF::Section::Text PREFIX = { REX_W: 0x48, }.freeze @@ -115,14 +115,14 @@ def opecode(op, offset, *operands) when "ret" [0xc3] else - raise Vaporware::Assembler::ELF::Error, "yet implemented operations: #{op}" + raise Caotral::Assembler::ELF::Error, "yet implemented operations: #{op}" end end def jump(op, offset, *operands) label = operands.first target = @label_positions.fetch(label) do - raise Vaporware::Compiler::Assembler::ELF::Error, "unknown label: #{label}" + raise Caotral::Compiler::Assembler::ELF::Error, "unknown label: #{label}" end size = instruction_size(op, label) rel = target - (offset + size) @@ -253,7 +253,7 @@ def reg(r) when /\d+/ r.to_i(16) else - raise Vaporware::Assembler::ELF::Error, "yet implemented operand address: #{r}" + raise Caotral::Assembler::ELF::Error, "yet implemented operand address: #{r}" end end def immediate(operand) = [operand.to_i(16)].pack("L").unpack("C*") diff --git a/lib/caotral/assembler/elf/section_header.rb b/lib/caotral/assembler/elf/section_header.rb index 7b72f35..a0a9e34 100644 --- a/lib/caotral/assembler/elf/section_header.rb +++ b/lib/caotral/assembler/elf/section_header.rb @@ -1,5 +1,5 @@ -class Vaporware::Assembler::ELF::SectionHeader - include Vaporware::Assembler::ELF::Utils +class Caotral::Assembler::ELF::SectionHeader + include Caotral::Assembler::ELF::Utils def initialize @name = nil @type = nil diff --git a/lib/caotral/assembler/elf/sections.rb b/lib/caotral/assembler/elf/sections.rb index 79c30b6..5a99773 100644 --- a/lib/caotral/assembler/elf/sections.rb +++ b/lib/caotral/assembler/elf/sections.rb @@ -1,18 +1,18 @@ require_relative "section" -class Vaporware::Assembler::ELF::Sections +class Caotral::Assembler::ELF::Sections ATTRIBUTES = %i|null text data bss note symtab strtab shstrtab| attr_reader *ATTRIBUTES def initialize - @null = Vaporware::Assembler::ELF::Section.new(type: :null) - @text = Vaporware::Assembler::ELF::Section.new(type: :text) - @data = Vaporware::Assembler::ELF::Section.new(type: :data) - @bss = Vaporware::Assembler::ELF::Section.new(type: :bss) - @note = Vaporware::Assembler::ELF::Section.new(type: :note, options: {type: :gnu}) - @symtab = Vaporware::Assembler::ELF::Section.new(type: :symtab) - @strtab = Vaporware::Assembler::ELF::Section.new(type: :strtab) - @shstrtab = Vaporware::Assembler::ELF::Section.new(type: :shstrtab) + @null = Caotral::Assembler::ELF::Section.new(type: :null) + @text = Caotral::Assembler::ELF::Section.new(type: :text) + @data = Caotral::Assembler::ELF::Section.new(type: :data) + @bss = Caotral::Assembler::ELF::Section.new(type: :bss) + @note = Caotral::Assembler::ELF::Section.new(type: :note, options: {type: :gnu}) + @symtab = Caotral::Assembler::ELF::Section.new(type: :symtab) + @strtab = Caotral::Assembler::ELF::Section.new(type: :strtab) + @shstrtab = Caotral::Assembler::ELF::Section.new(type: :shstrtab) end def each(&block) = ATTRIBUTES.each { |t| yield send(t) } diff --git a/lib/caotral/assembler/elf/utils.rb b/lib/caotral/assembler/elf/utils.rb index f6b1e6e..e10f46b 100644 --- a/lib/caotral/assembler/elf/utils.rb +++ b/lib/caotral/assembler/elf/utils.rb @@ -1,7 +1,7 @@ -module Vaporware::Assembler::ELF::Utils +module Caotral::Assembler::ELF::Utils def build = (build_errors; bytes.flatten.pack("C*")) def size = build.bytesize - def set! = (raise Vaporware::Assembler::ELF::Error, "should be implementing #{self.class}") + def set! = (raise Caotral::Assembler::ELF::Error, "should be implementing #{self.class}") def empties = must_be_filled_section_fields private @@ -9,7 +9,7 @@ def align(val, bytes) val << 0 until val.size % bytes == 0 val end - def bytes = (raise Vaporware::Assembler::ELF::Error, "should be implementing #{self.class}") + def bytes = (raise Caotral::Assembler::ELF::Error, "should be implementing #{self.class}") def must_be_filled_section_fields = instance_variables.reject { |i| instance_variable_get(i) } def num2bytes(val, bytes) = hexas(val, bytes).reverse def check(val, bytes) = ((val.is_a?(Array) && val.all? { |v| v.is_a?(Integer) } && val.size == bytes) || (val.is_a?(Integer) && (hexas(val, bytes).size == bytes))) @@ -18,6 +18,6 @@ def build_errors return unless bytes.any?(&:nil?) errors = [] bytes.each_with_index { |v, idx| errors << instance_variables[idx] if v.nil? } - raise Vaporware::Assembler::ELF::Error, "unaccepted types: #{errors.join(",")}" + raise Caotral::Assembler::ELF::Error, "unaccepted types: #{errors.join(",")}" end end diff --git a/lib/caotral/compiler.rb b/lib/caotral/compiler.rb index 617435f..dfcc32a 100644 --- a/lib/caotral/compiler.rb +++ b/lib/caotral/compiler.rb @@ -2,7 +2,7 @@ require_relative "compiler/generator" -class Vaporware::Compiler +class Caotral::Compiler attr_reader *%i(generator assembler linker) def self.compile!(input:, output: "tmp.s", debug: false, compiler_options: ["-O0"], shared: false) @@ -11,7 +11,7 @@ def self.compile!(input:, output: "tmp.s", debug: false, compiler_options: ["-O0 end def initialize(input:, output:, debug: false, shared: false) - @generator = Vaporware::Compiler::Generator.new(input:, output:, debug:, shared:) + @generator = Caotral::Compiler::Generator.new(input:, output:, debug:, shared:) end def compile(compiler_options: ["-O0"]) = @generator.compile end diff --git a/lib/caotral/compiler/generator.rb b/lib/caotral/compiler/generator.rb index 0f3a763..b0d39cd 100644 --- a/lib/caotral/compiler/generator.rb +++ b/lib/caotral/compiler/generator.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module Vaporware +module Caotral class Compiler class Generator REGISTER = %w(rdi rsi rdx rcx r8 r9) diff --git a/lib/caotral/error.rb b/lib/caotral/error.rb index b9c5682..18fd6b7 100644 --- a/lib/caotral/error.rb +++ b/lib/caotral/error.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true -module Vaporware +module Caotral class Error < StandardError; end end diff --git a/lib/caotral/linker.rb b/lib/caotral/linker.rb index df1880e..9a73dd2 100644 --- a/lib/caotral/linker.rb +++ b/lib/caotral/linker.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true -class Vaporware::Linker +class Caotral::Linker def self.link!(input:, output: "a.out", linker: "mold", debug: false, shared: false) = new(input:, output:, linker:, debug:, shared:).link def initialize(input:, output: "a.out", linker: "mold", linker_options: [], shared: false, debug: false) diff --git a/lib/caotral/version.rb b/lib/caotral/version.rb index 5736065..dac458a 100644 --- a/lib/caotral/version.rb +++ b/lib/caotral/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true -module Vaporware +module Caotral VERSION = "0.2.0" end diff --git a/rbs_collection.yaml b/rbs_collection.yaml index 215fdea..a3d2947 100644 --- a/rbs_collection.yaml +++ b/rbs_collection.yaml @@ -15,7 +15,7 @@ gems: ignore: true - name: rbs ignore: true - - name: vaporware + - name: caotral ignore: true - name: set ignore: true diff --git a/sig/coatral.rbs b/sig/coatral.rbs index 91b07d5..4f0d4d6 100644 --- a/sig/coatral.rbs +++ b/sig/coatral.rbs @@ -1,4 +1,4 @@ -module Vaporware +module Caotral VERSION: String # See the writing guide of rbs: https://github.com/ruby/rbs#guides class Compiler diff --git a/test/caotral/assembler/binary/elf/jump_test.rb b/test/caotral/assembler/binary/elf/jump_test.rb index 3ac76a7..6e06202 100644 --- a/test/caotral/assembler/binary/elf/jump_test.rb +++ b/test/caotral/assembler/binary/elf/jump_test.rb @@ -1,4 +1,4 @@ -require "vaporware" +require "caotral" require "test/unit" require "pathname" diff --git a/test/caotral/assembler/binary/elf/lea_addr_test.rb b/test/caotral/assembler/binary/elf/lea_addr_test.rb new file mode 100644 index 0000000..fac54af --- /dev/null +++ b/test/caotral/assembler/binary/elf/lea_addr_test.rb @@ -0,0 +1,27 @@ +require "caotral" +require "test/unit" +require "pathname" + +class ELFLeaTest < Test::Unit::TestCase + def test_lea_addr + input = Pathname.pwd.join("sample", "assembler", "lea_addr.s").to_s + output = "lea_addr.o" + + assembler = Caotral::Assembler.new(input:, output:) + _header, _null, text, = assembler.to_elf + + expected = [ + 0x55, + 0x48, 0x89, 0xe5, + 0x48, 0x83, 0xEC, 0x08, + 0x48, 0x8D, 0x45, 0xF8, + 0x48, 0x89, 0xec, + 0x5d, + 0xc3, + ] + + assert_equal(expected, text.unpack("C*")[...expected.size]) + ensure + File.delete(output) if File.exist?(output) + end +end diff --git a/test/caotral/assembler/binary/elf/xor_test.rb b/test/caotral/assembler/binary/elf/xor_test.rb new file mode 100644 index 0000000..743f15e --- /dev/null +++ b/test/caotral/assembler/binary/elf/xor_test.rb @@ -0,0 +1,26 @@ +require "caotral" +require "test/unit" +require "pathname" + +class ELFXorTest < Test::Unit::TestCase + def test_xor_zero + input = Pathname.pwd.join("sample", "assembler", "xor_zero.s").to_s + output = "xor_zero.o" + + assembler = Caotral::Assembler.new(input:, output:) + _header, _null, text, = assembler.to_elf + + expected = [ + 0x55, # push rbp + 0x48, 0x89, 0xe5, # mov rbp, rsp + 0x48, 0x31, 0xc0, # xor rax, rax + 0x48, 0x89, 0xec, # mov rsp, rbp + 0x5d, # pop rbp + 0xc3, # ret + ] + + assert_equal(expected, text.unpack("C*")[...expected.size]) + ensure + File.delete(output) if File.exist?(output) + end +end diff --git a/test/caotral/assembler/elf/test_header.rb b/test/caotral/assembler/elf/header_test.rb similarity index 91% rename from test/caotral/assembler/elf/test_header.rb rename to test/caotral/assembler/elf/header_test.rb index 12d8e33..b6fe3d9 100644 --- a/test/caotral/assembler/elf/test_header.rb +++ b/test/caotral/assembler/elf/header_test.rb @@ -1,4 +1,4 @@ -require "vaporware" +require "caotral" require "test/unit" class Caotral::Assembler::ELF::HeaderTest < Test::Unit::TestCase diff --git a/test/caotral/assembler/elf/section/test_note.rb b/test/caotral/assembler/elf/section/note_test.rb similarity index 96% rename from test/caotral/assembler/elf/section/test_note.rb rename to test/caotral/assembler/elf/section/note_test.rb index 00a875a..4e67160 100644 --- a/test/caotral/assembler/elf/section/test_note.rb +++ b/test/caotral/assembler/elf/section/note_test.rb @@ -1,4 +1,4 @@ -require "vaporware" +require "caotral" require "test/unit" class Caotral::Assembler::ELF::Section::NoteTest < Test::Unit::TestCase diff --git a/test/caotral/assembler/elf/section/test_shstrtab.rb b/test/caotral/assembler/elf/section/shstrtab_test.rb similarity index 97% rename from test/caotral/assembler/elf/section/test_shstrtab.rb rename to test/caotral/assembler/elf/section/shstrtab_test.rb index d7b43ee..ecccd44 100644 --- a/test/caotral/assembler/elf/section/test_shstrtab.rb +++ b/test/caotral/assembler/elf/section/shstrtab_test.rb @@ -1,4 +1,4 @@ -require "vaporware" +require "caotral" require "test/unit" class Caotral::Assembler::ELF::Section::TestShstrtab < Test::Unit::TestCase diff --git a/test/caotral/assembler/elf/section/test_symtab.rb b/test/caotral/assembler/elf/section/symtab_test.rb similarity index 97% rename from test/caotral/assembler/elf/section/test_symtab.rb rename to test/caotral/assembler/elf/section/symtab_test.rb index add52cd..05d2732 100644 --- a/test/caotral/assembler/elf/section/test_symtab.rb +++ b/test/caotral/assembler/elf/section/symtab_test.rb @@ -1,4 +1,4 @@ -require "vaporware" +require "caotral" require "test/unit" class Caotral::Assembler::ELF::Section::TestSymtab < Test::Unit::TestCase diff --git a/test/caotral/assembler/elf/test_section_header.rb b/test/caotral/assembler/elf/section_header_test.rb similarity index 95% rename from test/caotral/assembler/elf/test_section_header.rb rename to test/caotral/assembler/elf/section_header_test.rb index b08edd6..900e0d9 100644 --- a/test/caotral/assembler/elf/test_section_header.rb +++ b/test/caotral/assembler/elf/section_header_test.rb @@ -1,4 +1,4 @@ -require "vaporware" +require "caotral" require "test/unit" class Caotral::Assembler::ELF::SectionHeaderTest < Test::Unit::TestCase diff --git a/test/caotral/test_assembler.rb b/test/caotral/assembler_test.rb similarity index 99% rename from test/caotral/test_assembler.rb rename to test/caotral/assembler_test.rb index 859807e..780c0e2 100644 --- a/test/caotral/test_assembler.rb +++ b/test/caotral/assembler_test.rb @@ -1,4 +1,4 @@ -require "vaporware" +require "caotral" require "test/unit" require "tempfile" require "pathname" diff --git a/test/caotral/test_compiler.rb b/test/caotral/compiler_test.rb similarity index 79% rename from test/caotral/test_compiler.rb rename to test/caotral/compiler_test.rb index b877792..3b78871 100644 --- a/test/caotral/test_compiler.rb +++ b/test/caotral/compiler_test.rb @@ -1,4 +1,4 @@ -require "vaporware" +require "caotral" require "test/unit" class Caotral::CompilerTest < Test::Unit::TestCase @@ -9,7 +9,7 @@ def teardown end def test_sample_plus @file = "sample/plus.rb" - @vaporware = Caotral.compile!(input: @file, assembler: "self") + @caotral = Caotral.compile!(input: @file, assembler: "self") IO.popen("./tmp").close exit_code, handle_code = check_process($?.to_i) assert_equal(9, exit_code) @@ -18,7 +18,7 @@ def test_sample_plus def test_sample_variable @file = "sample/variable.rb" - @vaporware = Caotral.compile!(input: @file, assembler: "self") + @caotral = Caotral.compile!(input: @file, assembler: "self") IO.popen("./tmp").close exit_code, handle_code = check_process($?.to_i) assert_equal(1, exit_code) @@ -27,7 +27,7 @@ def test_sample_variable def test_sample_if @file = "sample/if.rb" - @vaporware = Caotral.compile!(input: @file) + @caotral = Caotral.compile!(input: @file) IO.popen("./tmp").close exit_code, handle_code = check_process($?.to_i) assert_equal(1, exit_code) @@ -36,7 +36,7 @@ def test_sample_if def test_sample_else @file = "sample/else.rb" - @vaporware = Caotral.compile!(input: @file) + @caotral = Caotral.compile!(input: @file) IO.popen("./tmp").close exit_code, handle_code = check_process($?.to_i) assert_equal(2, exit_code) @@ -45,7 +45,7 @@ def test_sample_else def test_sample_while @file = "sample/while.rb" - @vaporware = Caotral.compile!(input: @file) + @caotral = Caotral.compile!(input: @file) IO.popen("./tmp").close exit_code, handle_code = check_process($?.to_i) assert_equal(55, exit_code) @@ -55,7 +55,7 @@ def test_sample_while def test_sample_call_method @generated = ["libtmp.so", "libtmp.so.o", "libtmp.so.s"] @file = "sample/method.rb" - @vaporware = Caotral.compile!(input: @file, output: "./libtmp.so", shared: true, linker: "mold", assembler: "as") + @caotral = Caotral.compile!(input: @file, output: "./libtmp.so", shared: true, linker: "mold", assembler: "as") require './sample/fiddle.rb' assert_equal(10, X.aibo) end diff --git a/test/caotral/test_linker.rb b/test/caotral/linker_test.rb similarity index 97% rename from test/caotral/test_linker.rb rename to test/caotral/linker_test.rb index 4ac61b9..1c117c2 100644 --- a/test/caotral/test_linker.rb +++ b/test/caotral/linker_test.rb @@ -1,4 +1,4 @@ -require "vaporware" +require "caotral" require "test/unit" class Caotral::LinkerTest < Test::Unit::TestCase From 1f3bb4f6955dd0101ebdfd763b9cc1a9728a0da5 Mon Sep 17 00:00:00 2001 From: "MATSUMOTO, Katsuyoshi" Date: Wed, 24 Dec 2025 00:02:40 +0900 Subject: [PATCH 3/3] add README new package name --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d2e6848..93a44b1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ # Caotral -it's the caotral. +Caotral is a project to build a toolchain that compiles Ruby to native binaries. + +## Future +- Compile Ruby code to native binaries on all PCs. +- Learn compilers, cssemblers, and linkers by implementing the pipeline end to end.