redub 1.2.16
Dub Based Build System, with parallelization per packages and easier to contribute
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
Redub - Dub Based Build System
Making it faster
Have you ever wondered why dub was slow? I tried solving it, but its codebase was fairly unreadable. After building this project, I've implemented features that dub don't use
- Lazy build project configuration evaluation
- Parallelization on build sorted by dependency
- Fully parallelized build when only link is waiting for dependencies
Philosophy
- Separate build system from package manager.
- Have total backward compatibility on dub for initial versions.
- On initial versions, develop using phobos only
- Make it less stateful.
- Achieve at least 90% of what dub does.
- Isolate each process. This will make easier for adding and future contributors
Achieving it
Legend
- api -> Can be freely be imported from any module
- module -> Needs to be isolated as much as possible from each module. If one needs to communicate with other, a bridge/api may be created after the initial idea
How it works
Here are described the modules which do most of the work if someone wants to contribute.
- buildapi: Defines the contents of build configurations, tree of projects and commons for them
- parsers.json: Parse dub.json into a build configuration
- parsers.automatic: Parse using an automatic parser identification
- cli.dub + app: Parse CLI to get the build root and an initial build configuration
- parsers.environment: Merge environment variables into build configuration
- tree_generators.dub: Output build dependency tree while merging their configurations
- command_generator.automatic: Convert build configuration into compilation flags
- buildapi + building.compile: Transform build tree into dependency order tree
- building.compile: Spawn build processes for the dependencies until it links
Contributor Attracting
- Isolate module as much as possible to attract contributors working on self contained modules which only gets input and returns an output
Starting small
- No need to handle edge cases in the beginning. They may become even separate modules.
A week project
- This project had a small start. I gave one week for doing it, but since it was very succesful on its achievements, I decided to extend a little the deadline for achieving support. Right now, it has been tested with
Working examples
Those projects were fairly tested while building this one
- dub
- glui
- dplug
- arsd-official
- Hipreme Engine
Package manager
- Will be implemented as a hook in the build system. I'm accepting PRs, but I'm not implementing myself.
- 1.2.16 released 10 months ago
- MrcSnm/redub
- MIT
- Authors:
- Dependencies:
- xxhash3, semver, adv_diff, colorize
- Versions:
-
1.17.15 2024-Nov-23 1.17.14 2024-Nov-22 1.17.13 2024-Nov-22 1.17.12 2024-Nov-21 1.17.11 2024-Nov-21 - Download Stats:
-
-
49 downloads today
-
82 downloads this week
-
143 downloads this month
-
349 downloads total
-
- Score:
- 3.8
- Short URL:
- redub.dub.pm