Implemented my own std::function alternative (which is allocator-aware) called istl::function and it's beating std::function's performance with the default std::allocator.
Read more about its performance here
Read more about its performance here
✔️ SQL Query Builder tests are passing
✔️ istl::function tests are passing
1. Next steps are to write more tests for SQL Query Builder and then solve them of course so we can have a more stable SQL Database support system inside this.
2. After that, I might start working on a new, dynamic router. The current router is static and it's good but you probably can't use it inside a source file and thus that would mean your whole application essentially will have to be a big header-only executable. So a dynamic router is necessary.
I probably will use the recently made
✔️ istl::function tests are passing
1. Next steps are to write more tests for SQL Query Builder and then solve them of course so we can have a more stable SQL Database support system inside this.
2. After that, I might start working on a new, dynamic router. The current router is static and it's good but you probably can't use it inside a source file and thus that would mean your whole application essentially will have to be a big header-only executable. So a dynamic router is necessary.
I probably will use the recently made
istl::function in there too.
Web++: A C++ Web Framework
Implemented my own std::function alternative (which is allocator-aware) called istl::function and it's beating std::function's performance with the default std::allocator. Read more about its performance here
Some of istl::function properties so far:
- allocator-aware
- Small stack size (alloc size + void*)
- no internal SOO, you can use stack_allocator instead
- beats std::function at benchmarks, and gets beaten by it at the same time
- allocator-aware
- Small stack size (alloc size + void*)
- no internal SOO, you can use stack_allocator instead
- beats std::function at benchmarks, and gets beaten by it at the same time
It's fun getting blocked by someone who's trying to make a twitter bot that makes a list of people with different political views than you so you can block them all in one go, for saying that such tools will lead people into isolation and is a begging of radicalism.
I thought it's a good time to change the channel's photo for people who are not comfortable with the last one.
It's interesting how much people don't want to hear the opposite side fearing they might learn a thing or two along the way that'll have to change their minds about things they previously thought were facts!
I thought it's a good time to change the channel's photo for people who are not comfortable with the last one.
It's interesting how much people don't want to hear the opposite side fearing they might learn a thing or two along the way that'll have to change their minds about things they previously thought were facts!
⚙️ invocable_inorder, invoke_inorder Utilities:
Call your function, and pass the its arguments in any order or by omitting any number of them!
Source on compiler explorer
Source in project
Call your function, and pass the its arguments in any order or by omitting any number of them!
// define:
void callable(one, two, three);
// call it like this:
invoke_inorder(callable, three, one, two, four);
Source on compiler explorer
Source in project
We can totally replace "
Instead of checking 2 types, you can check two ranges:
Splits it in the middle, checks if both half are the same.
Code on Project's Github
Code on Compiler Explorer
std::same_as" and "std::is_same_v" with this utility right here; and also "cvref_as" is probably more useful.Instead of checking 2 types, you can check two ranges:
same_as_all<T..., U...>
Splits it in the middle, checks if both half are the same.
Code on Project's Github
Code on Compiler Explorer
🟢 sub_tuple implementation.
Here I needed to create a sub-tuple, so I implemented one that creates a sub-tuple.
Usages:
or:
I have already implemented some utilities for making custom index_sequences based on conditions, ranges, or ...
Source code of this in the project
Here I needed to create a sub-tuple, so I implemented one that creates a sub-tuple.
Usages:
sub_tuple<1, 6>(tup)
or:
sub_tuple(tup, index_sequence<1, 3, 6>)
I have already implemented some utilities for making custom index_sequences based on conditions, ranges, or ...
Source code of this in the project
Today, I managed to remove the old static routing system from the library and replace it with the new valve system (the same thing, but implemented better).
I benchmarked them and the new system even though it was significantly simpler to implement, it was faster.
I guess I tried to do lots of premature optimizations when I started the library, don't be like me :)
I benchmarked them and the new system even though it was significantly simpler to implement, it was faster.
I guess I tried to do lots of premature optimizations when I started the library, don't be like me :)
