Live data from Hacker News

Atria: A toolkit for modern C++ development from Ableton

abletonag.github.io

11–20 of 39 posts

Re: Atria: A toolkit for modern C++ development from Ableton

#12
post #2

First reaction: "Header only - This is great!" Then I read: "Dependencies boost". OK, moving on...

Interesting... There are not many parts depending on boost and we could make it entirely optional [1] (it would be still be nice for people wanting to use atria::variant::match in combo with boost::variant, optionally). Could you elaborate on why boost is a total no-go for you? https://github.com/AbletonAG/atria/search?utf8=%E2%9C%93&q=b...

I'm not the same person, but I don't use boost, and I avoid projects that depend on it, because every time I've used boost in the past it's always done dreadful things to the build time.

Anything that uses boost always seems to compile at a glacial pace and then takes aeons to link. It's also not much fun in the debugger, should you happen upon it in a call stack or see one of its types in the watch window - but build times are the more serious problem. C++ projects always seem to suffer from appalling iteration times, but boost just seems to make things worse...

Re: Atria: A toolkit for modern C++ development from Ableton

#13
post #2

First reaction: "Header only - This is great!" Then I read: "Dependencies boost". OK, moving on...

Interesting... There are not many parts depending on boost and we could make it entirely optional [1] (it would be still be nice for people wanting to use atria::variant::match in combo with boost::variant, optionally). Could you elaborate on why boost is a total no-go for you? https://github.com/AbletonAG/atria/search?utf8=%E2%9C%93&q=b...

Most C and C++ programmers I know hate dragging in large dependencies (increase in build and runtime complexity, code size, "can I debug this if I have a problem," etc), and would consider a library depending on Boost to be a red flag at best, or a deal breaker at worst.

Re: Atria: A toolkit for modern C++ development from Ableton

#14

Earlier quoted context omitted.

Honest question from someone who hasn't done C++ in a very long time: why is "header only" a good thing?

From the popular (in game development circles, at least) stb libraries: >Why single-file headers? >Windows doesn't have standard directories where libraries live. That makes deploying libraries in Windows a lot more painful than open source developers on Unix-derivates generally realize. (It also makes library dependencies a lot worse in Windows.) >There's also a common problem in Windows where a library was built ag…

Worth noting that only the first two points there are relevant here, since these are not single file libraries. Also, the STB libraries work massively differently from C++ header only libs (#define STB_FOO_IMPLEMENTATION, for example).

Also, fwiw Sean Barrett also has gone on record as saying that he's not really a fan of C++ before. I'm struggling to find a specific link, but it's not really a secret.

(As a side note, to anybody who is in the need for what they do, the STB libraries are really absurdly high quality and can do exactly what you want them to 99% of the time. Highly recommend!!)

Re: Atria: A toolkit for modern C++ development from Ableton

#15

Earlier quoted context omitted.

Honest question from someone who hasn't done C++ in a very long time: why is "header only" a good thing?

From the popular (in game development circles, at least) stb libraries: >Why single-file headers? >Windows doesn't have standard directories where libraries live. That makes deploying libraries in Windows a lot more painful than open source developers on Unix-derivates generally realize. (It also makes library dependencies a lot worse in Windows.) >There's also a common problem in Windows where a library was built ag…

How does header-only versus header+impl file have anything to do with deploying libraries? Versus a separate header + DLL, sure. But having an impl file isn't gonna matter if you link it all in. This sounds more like a source-vs-bin issue. What am I missing?

Re: Atria: A toolkit for modern C++ development from Ableton

#16
post #2

First reaction: "Header only - This is great!" Then I read: "Dependencies boost". OK, moving on...

Honest question from someone who hasn't done C++ in a very long time: why is "header only" a good thing?

The biggest value is that you don't have a link-time dependency, only compile-time. This means that you don't have to concern yourself with a lot of the versioning problems that plague C++ application deployment simply because your dependency is compiled into the binary.

Re: Atria: A toolkit for modern C++ development from Ableton

#17
post #2

First reaction: "Header only - This is great!" Then I read: "Dependencies boost". OK, moving on...

Interesting... There are not many parts depending on boost and we could make it entirely optional [1] (it would be still be nice for people wanting to use atria::variant::match in combo with boost::variant, optionally). Could you elaborate on why boost is a total no-go for you? https://github.com/AbletonAG/atria/search?utf8=%E2%9C%93&q=b...

Boost is a very large project with varying degrees of API quality, and so when you say it depends on boost, I wonder "the good parts (any, variant, stuff that usually gets looked at for standardization)" or "the bad parts (Spirit, etc)". Also, as others have said, it's a huge dependency that generally raise a red flag (for performance and compile time).

Re: Atria: A toolkit for modern C++ development from Ableton

#18
post #2

First reaction: "Header only - This is great!" Then I read: "Dependencies boost". OK, moving on...

Interesting... There are not many parts depending on boost and we could make it entirely optional [1] (it would be still be nice for people wanting to use atria::variant::match in combo with boost::variant, optionally). Could you elaborate on why boost is a total no-go for you? https://github.com/AbletonAG/atria/search?utf8=%E2%9C%93&q=b...

I think making Boost optional would be a big win for you and your project. For one, given the aversion of so many C++ devs to Boost, removing Boost would probably result in more contributors. But most importantly, it would make life much easier for anyone who wanted to use the toolkit.

Re: Atria: A toolkit for modern C++ development from Ableton

#19
post #12

Earlier quoted context omitted.

Interesting... There are not many parts depending on boost and we could make it entirely optional [1] (it would be still be nice for people wanting to use atria::variant::match in combo with boost::variant, optionally). Could you elaborate on why boost is a total no-go for you? https://github.com/AbletonAG/atria/search?utf8=%E2%9C%93&q=b...

I'm not the same person, but I don't use boost, and I avoid projects that depend on it, because every time I've used boost in the past it's always done dreadful things to the build time. Anything that uses boost always seems to compile at a glacial pace and then takes aeons to link. It's also not much fun in the debugger, should you happen upon it in a call stack or see one of its types in the watch window - but buil…

You have to be careful with what you pull in. But with precompiled headers I'm building a suite of 25 command line apps, all dependent on boost, in 22 seconds on a 2012 MacBook Air. gcc on Windows is similar.

Microsoft doesn't even let you share precompiled headers across projects, but it's still building in under 20 seconds.

There's a LOT of really idiotic C++ build scripts out there. I really don't know what some people are thinking.

Re: Atria: A toolkit for modern C++ development from Ableton

#20
post #16

Earlier quoted context omitted.

Honest question from someone who hasn't done C++ in a very long time: why is "header only" a good thing?

The biggest value is that you don't have a link-time dependency, only compile-time. This means that you don't have to concern yourself with a lot of the versioning problems that plague C++ application deployment simply because your dependency is compiled into the binary.

This static linking thing is gonna be the wave of the future!
Post reply on HN