summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-20 09:19:44 -0500
committerGitHub <noreply@github.com>2025-11-20 09:19:44 -0500
commit274936aa8c14c09239f771bce5b5cc5b6ae507a2 (patch)
tree6c16ac05bb73c7aea0bb4a69f5bc77c2f6ca2d77
parent3cc0546417ed38c69a5ba0af1d7fd4c47af1401f (diff)
parent56db5137ddd10f476b9820944b47ab72c6f8e019 (diff)
Merge pull request #25 from nekernel-org/dev
first set of patches to stable.
-rw-r--r--.github/workflows/necti-dev.yml3
-rw-r--r--dev/CompilerKit/AE.h6
-rw-r--r--dev/CompilerKit/Frontend.h6
-rw-r--r--dev/CompilerKit/PEF.h2
-rw-r--r--dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc14
-rw-r--r--dev/LibC++/filesystem.h2
-rw-r--r--dev/LibC++/new.cc8
-rw-r--r--dev/LibC++/new.h39
8 files changed, 48 insertions, 32 deletions
diff --git a/.github/workflows/necti-dev.yml b/.github/workflows/necti-dev.yml
index de50a30..a3dd77c 100644
--- a/.github/workflows/necti-dev.yml
+++ b/.github/workflows/necti-dev.yml
@@ -15,7 +15,6 @@ jobs:
- uses: actions/checkout@v4
- name: Install Packages
run: sudo apt update && sudo apt install build-essential && sudo apt install libboost-dev
- - name: Build
- run: cd dev/CompilerKit && nebuild ck-posix.json
+
diff --git a/dev/CompilerKit/AE.h b/dev/CompilerKit/AE.h
index b8e076d..3ca14e6 100644
--- a/dev/CompilerKit/AE.h
+++ b/dev/CompilerKit/AE.h
@@ -12,10 +12,10 @@
#include <CompilerKit/Defines.h>
-#define kAEVer (0x0120)
+#define kAEVer (0x0121)
-#define kAEMag0 'O'
-#define kAEMag1 'B'
+#define kAEMag0 'A'
+#define kAEMag1 'E'
#define kAESymbolLen (255)
#define kAEPad (8)
diff --git a/dev/CompilerKit/Frontend.h b/dev/CompilerKit/Frontend.h
index 225de96..500f952 100644
--- a/dev/CompilerKit/Frontend.h
+++ b/dev/CompilerKit/Frontend.h
@@ -18,7 +18,7 @@ struct SyntaxLeafList;
struct CompilerKeyword;
/// =========================================================== ///
-/// we want to do that because to separate keywords.
+/// @note we want to do that to separate keywords.
/// =========================================================== ///
enum KeywordKind {
@@ -79,7 +79,7 @@ struct SyntaxLeafList final {
};
std::vector<SyntaxLeaf> fLeafList;
- SizeType fNumLeafs;
+ SizeType fNumLeafs{0};
SizeType SizeOf() { return fNumLeafs; }
std::vector<SyntaxLeaf>& Get() { return fLeafList; }
@@ -116,7 +116,7 @@ class CompilerFrontendInterface {
/// =========================================================== ///
// NOTE: cast this to your user defined ast.
/// =========================================================== ///
- typedef void* AstType;
+ typedef VoidPtr AstType;
/// =========================================================== ///
//! @brief Compile a syntax tree ouf of the text.
diff --git a/dev/CompilerKit/PEF.h b/dev/CompilerKit/PEF.h
index dd2e03a..fc36fd7 100644
--- a/dev/CompilerKit/PEF.h
+++ b/dev/CompilerKit/PEF.h
@@ -46,7 +46,7 @@ enum {
kPefArchIntel86S,
kPefArchAMD64,
kPefArchRISCV,
- kPefArch64000, /* 64x0 RISC architecture. */
+ kPefArch64000, /* Open64x0 RISC architecture. */
kPefArch32000,
kPefArchPowerPC, /* 64-bit POWER architecture. */
kPefArchARM64,
diff --git a/dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc b/dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc
index 7c761f4..a13aa0e 100644
--- a/dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc
+++ b/dev/CompilerKit/src/Frontend/CPlusPlusCompilerAMD64.cc
@@ -90,14 +90,6 @@ struct CompilerState final {
CompilerKit::STLString fLastError{};
};
-/// @brief prints an error into stdout.
-/// @param reason the reason of the error.
-/// @param file where does it originate from?
-void print_error(const CompilerKit::STLString& reason,
- const CompilerKit::STLString& file) noexcept {
- kPrintErr << kRed << "Error in " << file << ": " << reason << kWhite << std::endl;
-}
-
static CompilerState kState;
static Int32 kOnClassScope = 0;
@@ -180,7 +172,7 @@ CompilerKit::SyntaxLeafList::SyntaxLeaf CompilerFrontendCPlusPlusAMD64::Compile(
CompilerKit::STLString text, CompilerKit::STLString file) {
CompilerKit::SyntaxLeafList::SyntaxLeaf syntax_tree;
- if (text.length() < 1) return syntax_tree;
+ if (text.empty()) return syntax_tree;
std::size_t index = 0UL;
std::vector<std::pair<CompilerKit::CompilerKeyword, std::size_t>> keywords_list;
@@ -755,8 +747,8 @@ class AssemblyCPlusPlusInterfaceAMD64 final CK_ASSEMBLY_INTERFACE {
CompilerKit::STLString line_source;
- out_fp << "#bits 64\n";
- out_fp << "#org " << kOrigin << "\n\n";
+ out_fp << "%bits 64\n";
+ out_fp << "%org " << kOrigin << "\n\n";
while (std::getline(src_fp, line_source)) {
out_fp << kFrontend->Compile(line_source, src).fUserValue;
diff --git a/dev/LibC++/filesystem.h b/dev/LibC++/filesystem.h
index 59e73a0..0a1a39a 100644
--- a/dev/LibC++/filesystem.h
+++ b/dev/LibC++/filesystem.h
@@ -9,6 +9,8 @@
#include <LibC++/defines.h>
+/// @brief Filesystem module for LibC++
+
namespace std {
class path;
class filesystem_error;
diff --git a/dev/LibC++/new.cc b/dev/LibC++/new.cc
new file mode 100644
index 0000000..4882652
--- /dev/null
+++ b/dev/LibC++/new.cc
@@ -0,0 +1,8 @@
+/* -------------------------------------------
+
+ Copyright (C) 2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
+
+------------------------------------------- */
+
+#include <LibC++/new.h>
+
diff --git a/dev/LibC++/new.h b/dev/LibC++/new.h
index 8b09328..3ac60d7 100644
--- a/dev/LibC++/new.h
+++ b/dev/LibC++/new.h
@@ -1,4 +1,3 @@
-
/* -------------------------------------------
Copyright (C) 2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
@@ -9,21 +8,37 @@
#include <LibC++/defines.h>
-struct __placement_new_info;
+namespace std {
+struct placement_new;
+
+/// =========================================================
+/// @brief Disambugate non-throwing allocation functions.
+/// =========================================================
+struct nothrow_t {
+ explicit nothrow_t() = default;
+};
+
+/// =========================================================
+/// @brief Placement new metadata.
+/// =========================================================
+struct placement_new {
+ void* __base;
+ int __align;
+ long long __size;
+};
+
+using placement_new_t = placement_new;
+} // namespace std
void* operator new(size_t);
void* operator new[](size_t);
+void* operator new(size_t, const std::nothrow_t&) noexcept;
+void* operator new(size_t, void*) noexcept;
+void* operator new[](size_t, const std::nothrow_t&) noexcept;
+void* operator new[](size_t, void*) noexcept;
+
void operator delete(void*) noexcept;
-void operator delete(void*, unsigned long) noexcept;
+void operator delete(void*, size_t) noexcept;
void operator delete[](void*) noexcept;
-
-/// =========================================================
-/// @brief Placement new information structure
-/// =========================================================
-struct __placement_new_info {
- void* __base;
- int __align;
- long long __size;
-}; \ No newline at end of file