
SDSL – Succinct Data Structure Library for C++ - vsbuffalo
https://github.com/simongog/sdsl-lite
======
lorenzhs
The SDSL is very easy to use, and its versatility is quite amazing. It's also
rather interesting to look at the list of papers that cite it:
[https://scholar.google.com/scholar?cites=6772708594529960585](https://scholar.google.com/scholar?cites=6772708594529960585)
and [https://scholar.google.com/scholar?q=SDSL-
lite](https://scholar.google.com/scholar?q=SDSL-lite)

------
jbandela1
Cool library. Any thoughts on getting it to work with Visual C++ 2015. It now
has pretty decent C++11 support, you already use CMake, and this library seems
like something that is inherently OS neutral.

Even when I am ultimately deploying on Linux, I will often develop and debug
my os-independent logic using Visual C++ on Windows and then when that is
working well, recompile using g++ or clang++.

~~~
matt4711
We are working on VS support. Last time we tried to port to VS some of the
constexpr stuff we use was not available yet. The next release (in 1-2 month)
should have full VS2015 support.

~~~
kjs3
Um...is that legal? Nothing in VS is licensed GPLv3.

------
olistovell
Very nice! Why did you choose GPLv3 instead of LGPLv3?

~~~
matt4711
The library is very template heavy and thus most of the code is in the header
files so I guess it wouldn't change much in this case?

Additionally, we (the main authors) have lots of contributions from other
researchers which we would ask for permission to the change the license (I
think?).

~~~
vog
Also, using GPL for a library is often the better choice!

Many people believe that GPL is for programs and LGPL for libraries - as if
the "L" would stand for "Library". But that's wrong! This was never the
intention. The "L" stands for "Lesser" and means less protection than GPL, for
very special circumstances.

According to FSF, you should use LGPL only for libraries that are competing
with widely accepted proprietary libraries. For anything new and original, you
should use GPL - to promote Free Software.

"Why you shouldn't use the Lesser GPL for your next library"

[https://www.gnu.org/licenses/why-not-
lgpl.en.html](https://www.gnu.org/licenses/why-not-lgpl.en.html)

(I disagree with that article in one point: If you compete with pervasive
software, use a simple license like ISC/MIT/BSD rather than LGPL, to promote
their usage even more.)

~~~
UK-AL
It makes the library unusable for anyone, but open source software.

If you write any sort of software, and link against this library, boom all the
code needs to be GPL'ed.

I don't think that's a good thing for promoting a library's use. Most people
will just not use the library, and leave a bad taste in there mouth rather
than spread the use of GPL.

If you want your library to popular don't use GPL.

What happens is that someone else comes a long and creates a MIT version.
Eventually it gets replaced with the MIT version.

~~~
vog
_> It makes the library unusable for anyone, but open source software._

Well, the author is free to dual-license it to propriertary software for some
fee - if they want.

 _> I don't think that's a good thing for promoting a library's use_

But it's a good thing for promoting Open Source!

That's the tactic question here: Do you want to promote your name and your
library, or do you want to encourage more people to open source their stuff?
In general you achieve both, but the question is: Which aspect is more
important to you?

 _> If you want your library to popular don't use GPL. What happens is that
someone else comes a long and creates a MIT version._

See
[https://news.ycombinator.com/item?id=10158535](https://news.ycombinator.com/item?id=10158535)

~~~
belorn
I have a very different question when I chose license for my software. I ask
if my software might end up being used in a product where someone could get
sued for sharing software online.

I would personally be fine with a new license that simply said "Be nice or
don't use my software. You can't sue people who use or share this software.
You can't apply for patents and sue people who are being creative and code.
You can't stop people from understanding the software that they run on their
own machine.". However I doubt many companies would prefer that over GPLv3 so
it easier to just use a commonly understood license which Linux distributions
understand and find legally acceptable.

~~~
vog
_> Be nice or don't use my software. You can't sue people who use or share
this software_

Would such a rule even be enforcable? If so, what's the penalty if a company
sues users anyway?

I like how the GPL(v3) makes such rules enforcable by trackling them "from
behind". For example, the patent protection does _not_ work by saying "you
must not sue people with your patents", which one would naively write into
one's license. Rather, they say (roughly) "if you distribute the software,
this includes a free patent license to all receivers." And this is just one
example. There is very clever legal stuff in the GPL, especially v3.

So I guess that the GPLv3 already does exactly what you want. It just doesn't
express this as directly as you would, but more "from behind". However, this
is for very good reasons, as it is necessary to do it that way, to make all
this stuff enforcable within the legal framework of copyright law.

~~~
belorn
I doubt such rule would work in US courts as the legal tradition there put
emphasis on exact wordings and would look for precedents which could direct
the court into an interpretation.

The courts where I live (Sweden) would look more into what the author intended
rather than the exact wording, so it will accepts much lesser precise wording
than other systems. The downside is that you are basically asking what one
judge and 3 politicians (lowest court instance) think is the authors
intention, common sense in this context, and if the distributor acted with
malice or not.

------
jheriko
this looks very cool but it is a shame about the license and a shame about the
code style.

STL is a poor exemplar to follow - its a real wasteland of a library and very
deficient compared to libraries for other modern languages.

however i will now go and learn these things and reinvent some wheels to make
myself a better programmer.

thanks. :)

------
amelius
How does it compare in terms of memory and speed, to the GNU implementation of
STL?

