Road to v4
mathisloge opened this issue · comments
This is mostly a todo list for me.
@artemp there is a v4 Milestone, which are some must haves of those?
- #4291
- all the proj changes in mapnik-python and node-mapnik.
- maybe mapnik/node-mapnik#976
- maybe mapnik/python-mapnik#242
- when #4291 gets merged,
mapnik::setup()
method needs to be called in python-mapnik and node-mapnik - fix svg rendering artifacts from the visual tests
@mathisloge - My thinking -> v4
is way overdue so let's defer static plugins which will bring breaking changes for later feature release v4.1.x
?
I still didn't have time to properly look into mapnik::setup()
but my first reaction - can we make it at least configurable e.g if plugins are dynamic there's no requirement to call setup()
? Sorry for lacking ambition on this, just feels like a big change 😄
@artemp agree that mapnik::setup()
is a big breaking change. If you want to make it optionally, I need to look into calling setup method in the translation unit to call it at dynamic initialization time.
https://github.com/mapnik/mapnik/blob/bb1bc2f07bdd85ed76d2dfa07a46670fa8b53769/src/mapnik.cpp
e.g.
#ifndef MAPNIK_STATIC_DEFINE
bool shared_init_complete = mapnik::setup();
#endif
or without the macro and just always call the setup method. If the compiler then removes the dynamic init call, the user must add it. Should only be necessary if compiled statically.
With those changes we can introduce #4291 without silently breaking users code (bc. they are unaware of the setup method) and loudly fail users with custom plugins because compilation will fail.
@mathisloge sounds good! Avoiding macro feels more c++ but your call. It might be easier to #ifdef