Hacker News new | ask | show | jobs
by gaurav1804 1455 days ago
Hi! It is not only for C/C++, but it can be used for any project in general. This is a low level build system which runs your commands in a shell depending on the rules you define in the beast.build file. Think of it as a faster and more user-friendly replacement to Make. It's 'pythonic' syntax makes it very easy to use and it's build speeds are matching/overtaking those of community standards!

You are right in saying that since any command can be put in the beast file, it is suitable for building a project in any language.

It is a general purpose build system, with focus on speed and usability!

2 comments

Hi there, it might be a good idea to clear this up early on the github page itself. This is a good idea, but I would not read on after the first page if I don't see that it checks my boxes for what I need. And as I can see it is still not really defining it.
Thanks! Noted... I will take care of it! Thanks again
thanks for reply,

- examples for using it for android or iOS, or java project, and some numbers showing its better performance?

- how to use it for an android project? gradle handles it all with target(sub targets tree structure of the build tasks...), if use Beast, will still be using gradle? or the build tools gradles is calling for different things (compile, packaging,signing...)

1. Since Beast is new, there are not a lot of examples. Benchmarking is going on and it will take some time. In the mean time, you can take a look at how to write beast build files.

2. You can use it for any project you want if you know what are components of your project depend upon what other components. So as I see it, gradle is a build system for Java project in itself. Beast will not be using gradle if you are trying to compile a Java project. BUT.... you can for sure call `gradle` command from inside the beast.build file. Wherever build.gradle file is stored. So that in this case, beast provides you with an easier to use build system. Let us see an example:

In your beast file, you can have something like:

  build hello:
     ! gradle -q hello
and inside your gradle file:

  task hello {
    doLast {
      println 'tutorialspoint'
    }
  }
Hope that helps
It doesn’t make sense to have your build tool call another build tool to actually perform the build. In that case, why I would not just use Gradle directly?
There can be several reasons for that. Say your project doesn't only require gradle but other tools to be run too. Or say there are some post-scripts or pre-process-scripts that need to be run. They can be done easily like:

  build pre:
     ! echo 'pre script'

  build proj:
     ! gradle hello
Plus, you might want to run some python scripts or run some other shell commands during or after you have built your gradle project.
Hi! I made a mistake in my previous reply. I forgot mentioning 'pre' as a dependency for 'proj'. I meant something like:

  build pre:
     ! echo 'pre script'

  build proj: pre
     ! gradle hello
This will ensure that 'pre' scripts are run before main 'proj' script!
True. This seems more like a general-purpose task-runner like Task [1] than a self-contained build system.

1. https://taskfile.dev/#/

Hi! Task runner would not be an appropriate term for this. Since it also defines target based on their modification times. This is what we call a general purpose build system, just like we call Make and Ninja build system.

It can do anything you want if you can provide it with proper shell commands and define targets. This can not only be used for tasks but also for physical building targets that can be built on the machine.

I believe that the project you linked here is itself also a build system and not just a task runner. But again, it uses yaml, which might not be best while defining custom things related to a build system