Три дня до нового бита

Всего через 4 миллиона новых точек их номера выйдут за пределы 32-битного пространства чисел, что потребует от всех программ умения обработки 64-битных идентификаторов. Пол Норман подсчитал, что это случится в субботу вечером. Предупреждали об этом аж два года назад, а в декабре Фредерик Рамм подготовил набор тестовых данных. Большинство критичных инструментов — JOSM, Potlatch, osm2pgsql, Osmium, Maperitive, — уже готовы к переходу.

Слабым звеном, как обнаружил Сергей Астахов, оказался Osmosis. Классы для хранения списка идентификаторов начнут выбрасывать ошибки из-за слишком больших чисел. Это не помешает репликации, но фильтры по тегам и по полигонам перестанут работать. Как следствие, региональные выгрузки на гис-лабе сломаются. Конечно, если авторы osmosis-а не успеют устранить ограничение, а хранители выгрузок — обновить программу.

Вики-страница 64-bit Identifiers подскажет, какие ещё программы нужно обновить до этих выходных. Для слежения за идентификаторами есть обратный отсчёт.
Поделиться
Отправить

Мнения, высказанные на этом сайте, отражают точку зрения лично автора сайта и ничью больше: ни его бывших или настоящих работодателей, ни семьи и знакомых.

6 комментариев
OverQuantum 2013
> за пределы 32-битного пространства чисел
Ну если быть точным — то за пределы 31-битного. И проблемы начнутся у программ, которые используют знаковые переменные, т. к. именно знак хранится в 32-м бите. Тогда как беззнаковые (unsigned) переменные вполне смогут хранить идентификаторы до 4294967295 включительно.
Илья Зверев 2013
32-битное пространство — это почти во всех программах от -2³¹...2³¹-1. Не путай с «за пределы 2³²». Беззнаковые идентификаторы в OSM никто, вроде, не используем: см. отрицательные идентификаторы в JOSM и API 0.6. Кроме того, даже беззнаковость отсрочит переход максимум на полтора-два года.
OverQuantum 2013
Илья,
32-битная адресация памяти, 32-битный IPv4 адрес — вполне себе беззнаковые. «Почти во всех» — субъективное понятие. ;)
freeExec 2013
Видимо имелось ввиду программах использующих данные OSM. А вот в java как оказалось вообще нет такого понятия как unsigned :(
akks 2013
Там потому и нет unsigned, чтобы все побыстрее перешли на long и не парились :)

Там даже byte b=0; b=b+1; не компилируется т. к. byte+1 = int
Larry0ua 2013
в Java char = unsigned short :)
а вообще да, без этих знаково-беззнаковых извращений жизнь намного проще. Кроме писателей драйверов и прочих низкоуровневых вещей, но кто такое на Java будет делать?
OverQuantum 2013
Вот она
http://www.openstreetmap.org/browse/node/2147483648

Sat, 09 Feb 2013 09:17:24 +0000
Я бы сказал, это скорее утро, чем вечер :)
Популярное