URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 104931
[ Назад ]

Исходное сообщение
"Разработанное в Microsoft приложение 'K' предложено к удален..."

Отправлено opennews , 30-Сен-15 08:38 
Компания Red Hat инициировала (http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1967.htm) процесс удаления приложения "K" в следующей версии стандарта  языка Си. Приложение K было добавлено в нынешний стандарт C11 и включает разработанный компанией Microsoft набор функций "*_s" с интерфейсом для проверки границ буферов. Проблема состоит в том, что данный интерфейс был добавлен в стандарт под давлением (https://sourceware.org/ml/libc-alpha/2014-08/msg00151.html)  "спонсора" без предварительной проверки на практике.


В итоге, недоработки архитектуры данного механизма и проблемы (https://sourceware.org/ml/libc-alpha/2014-08/msg00185.html), всплывшие при попытках создания практических реализаций, привели к тому, что данный интерфейс  на практике нигде не реализован (https://sourceware.org/ml/libc-alpha/2014-08/threads.html#00133) и не применяется, в том числе не поддерживается библиотеками Си (приложение К относится к опциональным возможностям).


URL: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1967.htm
Новость: http://www.opennet.me/opennews/art.shtml?num=43062


Содержание

Сообщения в этом обсуждении
"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 08:38 
Этот чудософт удивляет. То они поносят Си как могут, то свои фичи туда пытаются запилить. Какие-то непоследовательные.

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено x0r , 30-Сен-15 08:47 
вы так говорите, как будто завязывание на VS с С++
и пропаганда C# - вещи которые мешают друг другу

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Michael Shigorin , 30-Сен-15 09:17 
> Этот чудософт удивляет. То они поносят Си как могут, то свои фичи
> туда пытаются запилить. Какие-то непоследовательные.

Вполне последовательные -- как по ссылке и пишут:

---
[...] of a "sponsor" that has no interest in actually implementing the standard
and who has done nothing but try to undermine the C language for the past 20+ years
--- https://sourceware.org/ml/libc-alpha/2014-08/msg00151.html

Typical Microsoft (c)


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Джо , 02-Окт-15 09:33 
Скорее redhat удивляет, пусть предложат альтернативу хотя бы. Маинтейнеры glibc не хотят добавлять поддержку этих функций, даже когда им предлагают реализацию, а между тем пишут glibc "follows all relevant standards including ISO C11 and POSIX.1-2008". Короче ради того чтобы оставить эту сточку про полную поддержку ISO C11 они и предлагают исключить appendix K из стандарта, лол.

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Michael Shigorin , 02-Окт-15 12:35 
> Короче

Нет.  Читайте внимательно по ссылке.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Джо , 02-Окт-15 16:16 
Ну что нет? Из предложенных альтернатив там только инструментация и статический анализ, вроде Clang Address Sanitizer, _FORTIFY_SOURCE или Valgrind. API которого можно было бы использовать безопасно в своем коде нет. Используйте ребята ничего, а этот API мы добавлять себе в glibc не будем.

В С++ микрософт вроде набросал шаблонов, чтобы пользоваться

char array[10];
strcpy_s(array, "Hello, World");

Размер 10 будет автоматом подставлен в шаблонную реализацию strcpy_s, что вообще выглядит шикарно.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено iPony , 30-Сен-15 08:58 
Так а что использовать то?
Вот хочу strcpy написать и как теперь best practice?

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено anon4ik , 30-Сен-15 09:02 
strncpy, не? У bsd еще strlcpy. Но все это не замена предложенному MS, а замена strcpy.

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Michael Shigorin , 30-Сен-15 09:20 
> У bsd еще strlcpy.

Насколько понимаю, ещё в Owl; ну и в альте издавна: http://packages.altlinux.org/ru/4.0/srpms/glibc/patches/glib...


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено qwert , 30-Сен-15 13:11 
да, альт просто технологический лидер

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено chinarulezzz , 30-Сен-15 14:50 
это аргумент для менеджеров, разве что.

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 17:38 
слишком толсто

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено count0krsk , 01-Окт-15 15:04 
Зато своё, а не в пиндостане расположенное. Когда начнётся писец по настоящему, и убунта закроет свои репы по санкциям, посмотрю что петь тут будут ))

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 01-Окт-15 23:17 
Ядро линукса и железо x86 разработано в Пиндостане.

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено pavlinux , 02-Окт-15 01:46 
Да ты чо, а всё думали что в Linux в Финляндии, а Intel в Ирландии.  

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Яро Ш. Я. , 02-Окт-15 22:23 
>Да ты чо, а всё

Жителей сраней-эрзяней это ещё не все, так то!


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 09:39 
> У bsd еще strlcpy

Размер выхода за границы буфера на «молчаливое» обрезание строки, которое нужно диагностировать вручную отдельно, и которое в лучшем случае изменит логику работы программы, в худшем — приведёт к не менее серьёзной уязвимости, чем выход за границу буфера. Функции strl*() опасны.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 09:39 
>> У bsd еще strlcpy
> Размер выхода за границы буфера на «молчаливое» обрезание строки, которое нужно
> диагностировать вручную отдельно, и которое в лучшем случае изменит логику работы
> программы, в худшем — приведёт к не менее серьёзной уязвимости, чем
> выход за границу буфера. Функции strl*() опасны.

s/Размер/Размен


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Ytch , 01-Окт-15 00:26 
Так а предлагаемое ещё опасней в некоторых случаях. См. по одной из ссылок про неопределенные runtime-constraints - вообще песня! Оно ещё и "may
cause the program to exit or abort." или просто из-за глобальных переменных/состояния может испортить многопоточность. Ни фига себе "решили проблему переполнения".

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено dq0s4y71 , 01-Окт-15 14:31 
> которое нужно диагностировать вручную отдельно

Именно так в Си и должно быть. Чтобы быть уверенным, что код делает только то, что ты хочешь, а не то, что хотят компиляторо-/библиотекостроители. В противном случае, пишите на С++ или Питоне.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 09:18 
best practice это использовать например µstr http://www.and.org/ustr/

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 09:24 
Костыли и велосипеды

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено chinarulezzz , 30-Сен-15 11:23 
Костыли и велосипеды - это реализация строк на Си.

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено count0krsk , 01-Окт-15 15:22 
> Костыли и велосипеды - это реализация строк на Си.

Люто, бешено плюсую... В мой юный студенческий мозг в своё время никак не помещалось, что это за именование и разыменование. Учитывая отсутствие инета кроме модемного у богатых ребят, понять и принять это было сложно после Паскаля и Делфи. Хотя даже на прологе строки пишутся тупо в кавычках. Да и во многих других языках.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Ytch , 02-Окт-15 03:12 
> Хотя даже на прологе строки пишутся тупо в кавычках. Да и во многих других языках.

"Даже" намекает, что в Си, якобы, так нельзя?


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Яро Ш. Я. , 02-Окт-15 22:24 
>понять и принять это было сложно после Паскаля

хреново ты знал паскаль


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено dq0s4y71 , 01-Окт-15 16:42 
Те, кто использует Си в качестве языка обработки текста, должны страдать.

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено chinarulezzz , 01-Окт-15 19:45 
> реализация строк
> в качестве языка обработки текста

хорошо натянул.



"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено serg , 01-Окт-15 21:14 
Git?

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Яро Ш. Я. , 02-Окт-15 22:25 
Страдай, я разрешаю

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 09:59 
snprintf

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Тузя , 30-Сен-15 16:30 
Медленно!

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Анонимус Сапиенс , 30-Сен-15 09:29 
Что можно ожидать от конторы, в которой указатели прячут в макросы.

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Andrey Mitrofanov , 30-Сен-15 11:31 
> Что можно ожидать от конторы, в которой https://ru.wikipedia.org/wiki/Embrace%2C_Extend%2C...

Не благодари. :l


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 12:33 
>> Что можно ожидать от конторы, в которой https://ru.wikipedia.org/wiki/Embrace%2C_Extend%2C...
> Не благодари. :l

Честно они мне напоминают, рукожопых что ли. Нокия вроде норм мобилки были, но эмэсовские какое-то обыденное и тривиальное, нет особого желания пользоваться.  Вот наверняка AOL месседжер был нормальным, а эмэсовским никогда не пользовался, и всегда его отключал удалял и вообще..
А pdf читалка в 8-ке есть своя...


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 17:10 
Шизофазия.

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено dr Equivalent , 30-Сен-15 17:39 
Микрософт - это как царь Мидас наоборот. Все к чему он прикасается, превращается в безжизненное, посредственное, ненужное, безысходное говно.
Нокия была прекрасной компанией. Подотстала одно время, увлекшись симбианом, но N900 и N9 (вернее даже, может быть, ветыь развития Maemo-MeeGo) были вещами прорывными, и при должной поддержке платформы у нас бы на мобильном рынке было не два игрока, а три. А потом пришел Микрософт.
Вон скупе - когда-то даже p2p был.

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено клоун , 30-Сен-15 18:30 
У вас хронология события нарушена.

Motorola, Nokia и Blackberry, получив некую популярность, растеряли её, докатились до предбанкротного состояния и искали кому продаться.

Параллельно Google и Microsoft искали способ войти на рынок мобильной аппаратуры.

Motorola продалась Google. Nokia - MS.

Blackberry до сих пор тихо подыхает. И в ближайшие несколько лет, видимо, будет кем-нибудь поглощена.

МС и Google не заинтересованы в производстве мобильных телефонов, им нужны патенты и технологии чтобы не профукать приближающийся (по прогнозам аналитиков) интернет вещей, который должен расти по 20-50% в год.

Второй прорывной технологией ближайшего будущего должен стать автомобиль без водителя. Все крупнейшие компании (как ИТ, так и автомобильные) уже имеют свои прототипы. А кто не имеет, будут покупать чужие убыточные бизнесы.

Ничего личного, только бизнес.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Michael Shigorin , 30-Сен-15 20:46 
> Motorola продалась Google. Nokia - MS.

Когда доведётся копать за еду, так и скажете -- "взял Элопа на работу".
И не спрашивайте, за что это.  За вот это.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Ytch , 01-Окт-15 00:53 
> А pdf читалка в 8-ке есть своя...

Офигенная вещь! Как раз недавно мозг попарила!
Есть у меня одна маленькая, несложная и довольно древняя программка. Суть её работы тут особо не важна, но она умеет, в качестве результата, формировать, скажем так, некие отчеты-таблицы в pdf-формате. Зависимостей минимум, от ОС не зависит.
И тут мне звонят и говорят, что данные ошибочные получаются в таблицах... Я пришел, а там как раз 8-ка. От ОС функционал вообще не зависит, поэтому значения сначала не придал.
Всяко думал что в программе баг какой или в данных лажа... Смотрю-смотрю, а ошибки не нахожу. И данные в порядке и логика вроде без ошибок и таблички переформировывал несколько раз. Открыл pdf-ничек другой смотрелкой (не сразу сообразил), глядь, а там всё правильно! Открыл снова во встроенной (тот же файл!) - лажа. Он, сука, где-то закешировал что-то и раз за разом показывал старое содержимое, несмотря на то что файл был несколько раз уже изменен на нормальный! Через какое-то время его кеш "протух", он перечитал, наконец, файл который в нем и пытались открыть и стал тоже показывать нормально. Не скажу, конечно, чтоб я был особо удивлен - вендор приучил, но уж от смотрелки pdf подлянки все-таки не ожидал.
Имейте ввиду, если кому-то доведется пытаться разобраться в проблеме, симптомом которой является "неправильные данные в pdf в 8-ке". А ещё лучше - stay away, если есть возможность.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено fox_mulder , 01-Окт-15 23:59 
вот так кулстори!

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 10:18 
Интереснее было бы послушать про реализацию multi-threaded части стандарта C11. Судя по спекам - в C11 появляются thread locals. Значит ли это, что многопоточность в стиле msvcrt.dll окончательно победила и обязательна к исполнению в любом компиляторе (например, в каждом потоке свой буфер под результат ctime и т.д.)? Или в POSIX придется продолжать использовать reentrant-функции?

Еще была инфа, что реализация потоков в стиле C11 сильно конфликтует с pthreads. В какую сторону будут двигаться новые стандарты POSIX? По их логике - если есть конфликт со спецификацией компилятора C - все противоречия трактуются в пользу стандарта на компилятор. Но C11 что-то не очень спешит появляться в *nix...


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Andrey Mitrofanov , 30-Сен-15 11:42 
> логике - если есть конфликт со спецификацией компилятора C - все
> противоречия трактуются в пользу стандарта на компилятор. Но C11 что-то не
> очень спешит появляться в *nix...

Нудк, напишут ещё новость, мол, спонсированный Майкрософтом необязательный к исполнению стандарт C11 решено по..рить для совместимости с сущ.реализациями.

Начало же уже положено!


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 11:21 
>В итоге, недоработки архитектуры данного механизма и проблемы, всплывшие при попытках создания практических реализаций, привели к тому, что данный интерфейс на практике нигде не реализован и не применяется

почитал оригинальный тред. Насчет отсутствия реализаций - вранье (как минимум есть MSVC), насчет невозможности писать thread-safe-код - снова вранье. Откуда следует неизбежный вывод: у товарища просто бомбануло от того что эта часть стандарта предложена "корпорацией зла" (тм). Предлагаю ему переключиться на C++ и начать там бороться за отмену оператора new и кастомных аллокаторов.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 11:43 
>насчет невозможности писать thread-safe-код - снова вранье

Ну давай, расскажи нам, как писать thread-safe код с глобальными переменными.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 13:19 
https://code.google.com/p/slibc/

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Вареник , 30-Сен-15 11:51 
хорошо что какой-нибудь _fastcall __dllcall не втиснули

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 12:11 
> оператора new и кастомных аллокаторов.

а причём тут microsoft?


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 12:32 
> Насчет отсутствия реализаций - вранье (как минимум есть MSVC)

А теперь давай вместе почитаем что же там в действительности написано:

Despite the specification of the APIs having been around for over a decade only a handful of implementations exist with varying degrees of completeness and conformance.

Microsoft Visual Studio implements an early version of the APIs. However, the implementation is incomplete and conforms neither to C11 nor to the original TR 24731-1.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено клоун , 30-Сен-15 14:04 
А теперь выдели из написанного доказанные утверждения и личное мнение автора. Внимание следует обращать лишь на первое.

Пока что я вижу лишь желание исключить модуль только потому, что он предложен конкретной компанией.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Нимано , 30-Сен-15 16:10 
> Пока что я вижу лишь желание исключить модуль только потому, что он предложен конкретной компанией.

Чей компилятор/VS в 2011 году не поддерживал с99? Типа, классическое опеннетное "мы не пользуемся, но лучше знаем, как надо ПРАВИЛЬНО!"? )


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Michael Shigorin , 30-Сен-15 17:06 
> Пока что я вижу лишь желание исключить модуль только потому,
> что он предложен конкретной компанией.

s/предложен/подложен/


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 21:38 
> Пока что я вижу лишь желание исключить модуль только потому, что он предложен конкретной компанией.

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


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Ordu , 01-Окт-15 11:23 
> Пока что я вижу лишь желание исключить модуль только потому, что он предложен конкретной компанией.

Зенки протри. Или к окулисту сходи. Ну на самом деле: твои проблемы со зрением -- это *твои* проблемы. Не надо с ними приставать к прохожим, держи их при себе. Или иди к специалисту.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 15:10 
> предложен конкретной компанией

чья "implementation is incomplete". Это примерно как с OpenXML.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Тузя , 30-Сен-15 17:17 
Все эти _s функции, на самом деле мертвому припарок, всегда им были им же и останутся! Они не добавляют защищенности, они добавляют кучу лишнего кода. Как минимум, они добавляют кучу проверок, которые можно сделать, не меняя синтаксис стандартных функций, вполне самостоятельно. Ради интереса попробуйте перенести любую С-программу в их студию и переделать на _s. Там с ума сойти сколько переписывать, смысла нет. Так эти наглецы еще и показывают предупреждения и ошибки нагло навязывая использовать эти ненужные _s. Чтобы переключиться на нормальное поведение? там какую-то еще коyстанту надо пропихнуть компилятору, чтобы он прекратил этот кошмар!

Непонятно, почему это вообще впихнули в стандарт, благо, это лишь необязательное приложение.


"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Аноним , 30-Сен-15 23:31 
Особенно феерично смотрятся _s-версии функций, которые и так принимают размер целевого буфера (например, snprintf). Казалось бы, если уже есть параметр, позволяющий избежать переполнение буфера, зачем добавлять ещё один с точно такой же целью? Но Microsoft была бы не Microsoft, если бы действовала согласно здравому смыслу...

"Разработанное в Microsoft приложение K предложено к удалению..."
Отправлено Ytch , 01-Окт-15 01:17 
> Особенно феерично смотрятся _s-версии функций, которые и так принимают размер целевого
> буфера (например, snprintf). Казалось бы, если уже есть параметр, позволяющий избежать
> переполнение буфера, зачем добавлять ещё один с точно такой же целью?

Так в новых функциях есть ещё некий умолчальный обработчик runtime-constraints, который по стандарту(!): "The behavior of the default handler is implementation-defined, and it may
cause the program to exit or abort." Не отказаться выполнять небезопасное действие, не вернуть ошибку, а имеет законное право обрушить программу! И этот обработчик один на всё! Можно задать свой, но он тоже будет один на все вызовы (из всех используемых библиотек и потоков)! Какой уж тут здравый смысл...