Skip to content

Commit

Permalink
Version 0.8.0
Browse files Browse the repository at this point in the history
  • Loading branch information
TheRustifyer committed Mar 12, 2023
1 parent bf27d6a commit 668d180
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 26 deletions.
28 changes: 19 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,22 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.8.0] - // TODO
## [0.8.0] - 2023 - 03 - 12

### Feature

### Updates
- Zork++ generates now a compilation database for `C++` projects, known as the `compile_commands.json`
file, which is used by static analyzers and IDE's to offer code completion and linting.
- The cache has been updated to store data in a more efficient layout.
- The overall performance of the cache process has been reviewed. We get rid of a cache clone that was affecting
the performance, and making a huge impact the memory needed for the cache process during runtime
by a factor of two.
Now everything is smoothly handled by mutable and inmutable reference types.
- A command line flag `-c` has been included to reset the cache when the user requires.

### Update

- Source type has been modified to support individual files, and
- The source type has been modified to support individual files, and
sourceset now is a collection of those individuals, non one path or multiple paths
- Non module source files are compiled and assembled without linking now. This
allows us to generate the compile_commands.json for every translation unit
Expand All @@ -22,14 +29,17 @@ assembling and linking.
- Due to the described above, now the main task of the main command line
is to link the generated object files together, introducing the necessary dependencies
- Non module source files now have their explicit types and operations
- Internal deps: toml raised to the 0.7.2, criterion raised to its 0.4.0v
- Internal deps: criterion raised to its 0.4.0v
- We've merged some parts of the source code that was performing similar operations, specially the one that was mapping
data in the cache to some other datastructures. Even that technically that parts wasn't exactly
duplicated code, we've managed to make them cleaned and shorter.

### Fix

- Solved a bug for which the source files was always detected as a glob pattern,
even if they were declared in a non glob form

## [0.7.0] - 2022 - 03 - 01
## [0.7.0] - 2023 - 03 - 01

### Feature

Expand All @@ -44,14 +54,14 @@ the manual usage of the module map for featuring the `import std;`

- Solved a bug that was causing C++ modules containing a dot in their module identifier declaration to not be correctly processed by Zork++, causing a compilation error due to incorrect parameters

## [0.6.0] - 2022 - 02 - 28
## [0.6.0] - 2023 - 02 - 28

### Feature

- Allowing the usage of `import <system_module>` with `Clang`, by precompiling
the declared system modules required, just as we were doing with `GCC`

## [0.5.0] - 2022 - 02 - 08
## [0.5.0] - 2023 - 02 - 08

### Feature

Expand Down
45 changes: 32 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,19 +24,20 @@

# 📝 Table of Contents

- [About](#about)
- [Getting Started](#getting_started)
- [The `zork.toml` quick start](#usage)
- [The `zork.toml` reference guide](#zork_toml_reference)
- [The `Zork++` command_line](#zork_command_line)
- [C++23 `import std;`](#import_std)
- [The developers and contributors guide](#dev_guide)
- [TODO ZONE](#todo_zone)
- [Built Using](#built_using)
- [Contributing](../CONTRIBUTING.md)
- [About](#-about-a-name--about-a)
- [Getting Started](#-getting-started-a-name--gettingstarted-a)
- [The `zork.toml` quick start example](#generating-a-new-c-project-a-name--gettingstartedexample-a)
- [The `zork.toml` reference guide](#-the-zorktoml-reference-guide-a-namezorktomlreference-a)
- [The `Zork++` command_line](#-the-zork-command-line-interface-a-namezorkcommandline-a)
- [Compilation Database (`compile_commands.json`)](#-compilation-database-a-namecompilation-database-a)
- [C++23 `import std;`](#-c23-import-std-feature-a-nameimportstd-a)
- [The developers and contributors guide](#-developers-guide-a-namedevguide-a)
- [TODO ZONE](#-todo-zone-a-name--todozone-a)
- [Built Using](#-built-using-a-name--builtusing-a)
- [Contributing](./CONTRIBUTING.md)
- [License](./LICENSE)
- [Authors](#authors)
- [Acknowledgements](#acknowledgement)
- [Authors](#-authors-a-name--authors-a)
- [Acknowledgements](#-acknowledgements-a-name--acknowledgement-a)

# 🧐 About <a name = "about"></a>

Expand Down Expand Up @@ -360,6 +361,7 @@ ZorkConfigFile {
ProjectAttribute {
name: &'a str
authors: Option<Vec<str>>,
compilation_db : bool
}

/// The [compiler] key
Expand Down Expand Up @@ -499,10 +501,27 @@ a minimal setup. This command includes some arguments to make it more flexible,
should be used to set up the template

- `-v` ⇒ Outputs more information to stdout. The classical `verbose` command line flag
- `--clear-cache` ⇒ Clears the files in the cache, so, in the next iteration, cached items
- `-c,`--clear-cache` ⇒ Clears the files in the cache, so, in the next iteration, cached items
must be processed again. This is useful after a lot of program iterations, when the cache starts
to slow down the build process.

# 📑 Compilation Database <a name="compilation-database"></a>

`Zork++` is able to generate a compilation database file, commonly known as `compile_commands.json`. This file is typically
used by static code analyzers, IDE's and other tools to provide information about the status, the quality, problems, errors,
suggestions and all kind of crazy things that the linting tools are able to do.

To enable this feature, you will need to put a flag property, under the `#[project]` table, named `compilation_db`.

```toml
#[project]
compilation_db = true
```

The file will be automatically generated the first time that `Zork++` sees this property on the configuration file, and
will be regularly updated when changes are detected in the generated command lines, or when files are added/dropped
from your project.

# 📑 C++23 `import std;` feature <a name="import_std"></a>

The `C++23` standard is supposed to come with a nice feature to finally support modules in a real way, that is through the `import std;` statement.
Expand Down
2 changes: 1 addition & 1 deletion release-config/windows-installer-zork.iss
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "Zork++"
#define MyAppVersion "0.7.0"
#define MyAppVersion "0.8.0"
#define MyAppPublisher "Zero Day Code"
#define MyAppURL "https://github.com/zerodaycode/Zork"
#define MyAppExeName "zork++.exe"
Expand Down
2 changes: 1 addition & 1 deletion zork++/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion zork++/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "zork"
version = "0.7.0"
version = "0.8.0"
authors = ["Zero Day Code"]
edition = "2021"
description = "A modern C++ project manager and build system for modern C++"
Expand Down
2 changes: 1 addition & 1 deletion zork++/src/lib/cli/input/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ use clap::{Parser, Subcommand, ValueEnum};
#[derive(Parser, Debug, Default)]
#[command(name = "Zork++")]
#[command(author = "Zero Day Code")]
#[command(version = "0.7.0")]
#[command(version = "0.8.0")]
#[command(
about = "Zork++ is a build system for modern C++ projects",
long_about = "Zork++ is a project of Zero Day Code. Find us: https://github.com/zerodaycode/Zork"
Expand Down

0 comments on commit 668d180

Please sign in to comment.