mapnik / mapnik

Mapnik is an open source toolkit for developing mapping applications

Home Page:http://mapnik.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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?

@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