diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1a9289d..478640c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,16 @@
# Change Log
+
v0.5.0 - 2024-08-04
+
+### Changed
+- Less relying on pointers
+- CMake target name `cURLio::cURLio`
+
+### Fixed
+- Fix segfaults on kick-starting new requests
+- Fix CURL deprecation warnings
+- Various bugs
+
v0.4 - 2022-11-27
### Changed
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 09c30a4..b768bb3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.16)
project(
cURLio
- VERSION 0.4.0
+ VERSION 0.5.0
DESCRIPTION "The simple glue for cURL and Boost.ASIO"
HOMEPAGE_URL "https://github.com/terrakuh/curlio"
LANGUAGES CXX
diff --git a/README.md b/README.md
index fba2c93..b4f727e 100644
--- a/README.md
+++ b/README.md
@@ -11,15 +11,15 @@ The following examples uses the [coroutines](https://en.cppreference.com/w/cpp/l
```cpp
asio::io_service service{};
-auto session = curlio::make_session(service.get_executor());
+curlio::Session session{ service.get_executor() };
// Create request and set options.
-auto request = curlio::make_request(session);
+auto request = std::make_shared(session);
request->set_option("http://example.com");
request->set_option("cURLio");
// Launches the request which will then run in the background.
-auto response = co_await session->async_start(request, asio::use_awaitable);
+auto response = co_await session.async_start(request, asio::use_awaitable);
// Read all and do something with the data.
char data[4096];
@@ -52,8 +52,8 @@ cmake --install curlio/build
And then in your `CMakeLists.txt`:
```cmake
-find_package(curlio 0.4 REQUIRED)
-target_link_libraries(my-target PRIVATE curlio::curlio)
+find_package(cURLio 0.5 REQUIRED)
+target_link_libraries(my-target PRIVATE cURLio::cURLio)
```
## Debugging
diff --git a/curlio/CMakeLists.txt b/curlio/CMakeLists.txt
index 90f7c0b..d29e071 100644
--- a/curlio/CMakeLists.txt
+++ b/curlio/CMakeLists.txt
@@ -6,6 +6,7 @@ target_link_libraries(cURLio INTERFACE CURL::libcurl Threads::Threads Boost::boo
target_include_directories(
cURLio INTERFACE "$" $
)
+target_compile_features(cURLio INTERFACE cxx_std_17)
if(CURLIO_ENABLE_LOGGING)
target_compile_definitions(cURLio INTERFACE CURLIO_ENABLE_LOGGING)
diff --git a/curlio/basic_request.hpp b/curlio/basic_request.hpp
index cd08f24..5c54f6c 100644
--- a/curlio/basic_request.hpp
+++ b/curlio/basic_request.hpp
@@ -3,48 +3,54 @@
#include "config.hpp"
#include "detail/asio_include.hpp"
#include "detail/function.hpp"
-#include "fwd.hpp"
#include "detail/option_type.hpp"
+#include "fwd.hpp"
#include
namespace curlio {
template
-class Basic_request : public std::enable_shared_from_this> {
+class BasicRequest {
public:
using executor_type = Executor;
+ using strand_type = CURLIO_ASIO_NS::strand;
- Basic_request(const Basic_request& copy);
- ~Basic_request() noexcept;
+ BasicRequest(BasicSession& session) noexcept;
+ BasicRequest(const BasicRequest& copy) noexcept;
+ BasicRequest(BasicRequest&& move) = delete;
+ ~BasicRequest();
template
void set_option(detail::option_type