boostorg / url

Boost.URL is a library for manipulating Uniform Resource Identifiers (URIs) and Locators (URLs).
https://www.boost.org/doc/libs/master/libs/url/index.html
Boost Software License 1.0
185 stars 50 forks source link

[help] Some questions about this project. #167

Closed balusch closed 2 years ago

balusch commented 2 years ago

I'm looking for a modern and efficient URL library(parsing, encoding/decoding...) written in C++ and finally find this project. After reading the readme and some source files, I think it is indeed what I need! However, I also have some questions about it and wish you can help me with them.

Thanks in advance.

sehe commented 2 years ago

(The review process for acceptance into Boost is underway, and can be followed on the Boost mailing list)

alandefreitas commented 2 years ago

Hi @balusch

The project name is Boost.URL, but it is said not an official sub-project of Boost yet. Will this project be merged into the Boost C++ library in the future?

You can follow the review schedule here: https://www.boost.org/community/review_schedule.html

Is the project ready to be used in the production environment now, or still in early development?

We test the library with the following compilers and methods:

This is the state of things:

Branch master develop
Azure Build Status Build Status
Docs Documentation Documentation
Drone Build Status Build Status
GitHub Actions CI CI
Matrix --- ---
Fuzzing --- ---
Appveyor Build status Build status
codecov.io codecov codecov

My project is using Boost as a third-party dependency, and is there any way to build this project with such an external Boost library?

I'm not sure I understand the question. But yes, it depends on Boost, and you can build it with an external recent version of Boost. It has to be a recent version though.

After skimming the CMakeLists.txt I found that it requires Boost-1.78.0, which is almost the newest version. Does it really need such a high version? And if not, which version of boost is the minimum requirement of Boost.URL?

As Boost.URL is a Boost proposal, the Boost.URL master and develop branches depend on the most recent version of Boost in their master and develop branches.

In principle, the library depends on the Boost master/develop branches, and the most recent version is 1.79.0. In practice, 1.78.0 might be good enough because the library depends on <boost/system/result.hpp> for result<T>, which was included in Boost-1.78.0. So Boost-1.77.0 definitely won't work.

balusch commented 2 years ago

@sehe Thanks! I'll make a subscription.

balusch commented 2 years ago

Hi, @alandefreitas, thanks a lot, it really helps.

I'm not sure I understand the question. But yes, it depends on Boost, and you can build it with an external recent version of Boost. It has to be a recent version though.

Yes, I just want to known how to build this project together with a Boost already used, or I should wait until it is merged into Boost and use the newest Boost then?

And another concern is the compatibility with Boost of old version. I thought is would be compatible but that seems not to be the case according to your following statement. That is a sad thing. 😭

alandefreitas commented 2 years ago

Yes, I just want to known how to build this project together with a Boost already used,

If you have a recent version of Boost installed on your computer, you just need the headers from the include directory and then follow the instructions as usual.

or I should wait until it is merged into Boost and use the newest Boost then?

That's also an option.

And another concern is the compatibility with Boost of old version.

Yes. The library isn't even in Boost yet, so only recent versions of Boost.

balusch commented 2 years ago

Yes. The library isn't even in Boost yet, so only recent versions of Boost.

I see. Seems not suitable for our project which is using an older Boost and not easy to update, but I can try it in my new project.

Anyway, thanks to your detailed explanation and such a good project -- URL utility is so fundamental and important in network/backend development.