LINUX.ORG.RU

Swift 3.0

 


2

3

Официально представлена новая версия языка программирования Swift 3.0.

Swift 3 является первым крупным релизом со времени открытия исходных текстов, в котором представлены значительные улучшения и усовершенствования языка и стандартной библиотеки, большие дополнения в порт под Linux, и первый официальный релиз пакетного менеджера Swift Package Manager.

Порт для Linux теперь поставляется с Swift Core Libraries и Swift Package Manager.

Являясь крупным релизом, Swift 3 привносит изменения, которые делают язык несовместимым с версиями Swift 2.2 и 2.3 на уровне исходных текстов. Эти изменения затрагивают не только названия API стандартной библиотеки, но и то, как импортируются API из Objective-C (в частности из Cocoa) в Swift. Многие изменения в значительной степени являются механическими, и, чтобы помочь перевести проекты на новую версию языка, в Xcode 8.0 добавлен новый инструмент Swift Migrator. Также доступно руководство по миграции на Swift 3.

>>> Подробности

★★★★★

Проверено: Shaman007 ()

Начал писать новость и не зря решил проверить неподтверждённые. Релиз очень хороший.

Deleted ()
let variable = "test-test"
variable: String = "test-test"

Это что, какая то полуcтатическая типизация?

uin ★★ ()
Последнее исправление: uin (всего исправлений: 1)

Порт для Linux теперь поставляется с Swift Core Libraries и Swift Package Manager.

А вот это здорово. Будем напосмотреть.

anonymous ()
Ответ на: комментарий от uin

Это что, какая то полуcтатическая типизация?

Вывод типов же.

anonymous ()

это тот, где quicksort работает в 7 раз быстрее, чем на остальных языках? не нужно за пределами яблочных садов.

апшыпся, в 3.9 быстрее, чем в самом Python!

http://i.stack.imgur.com/wcdXk.jpg

dzidzitop ★★ ()
Последнее исправление: dzidzitop (всего исправлений: 1)
Ответ на: комментарий от anonymous

Разве можно так писать как будто это код, хоть бы в комментарии выхлоп убирали.

Не нравится мне этот свифт.

uin ★★ ()
Ответ на: комментарий от uin

Разве можно так писать как будто это код,

Это и есть код. Тут показывается, что тип можно писать, а можно оставить его вывод для компилятора. А вывод типов есть во многих языках. Например, в Rust и С++.

anonymous ()

Тоже хотел запостить.

Без перевода - не нужно.

RazrFalcon ★★★★★ ()

Тарабарщина

Сегодня ты компилируешь под Swift, а завтра попросят подписывать тарабарские соглашения. Не нужно, закопать. Кому «мало си», но не хочется плюс плюс - тем libCello.

shprotua ()

Мощно поломали. Поздравляю всех пострадавших с днём боли.

anonymous ()
Ответ на: комментарий от RazrFalcon

Без перевода - не нужно.

Upd: Без макинтоша не нужно. :)

gns ★★★★ ()

https://swift.org/blog :
MARCH 21, 2016 - Swift 2.2 Released!
JUNE 12, 2016  — We are pleased to announce Swift 2.3!

Теперь вот Swift 3.0, примерно через год после 2.0.

То-ли люди бегут впереди паровоза, то-ли...

Люди за год только успеют привыкнуть к языку, а уже какие-то несовместимости синтаксиса, а, возможно, и семантики. Такое впечатление, что язык — для его авторов, а не для пользователей...

Мелкотравчато все это как-то.

gns ★★★★ ()
Ответ на: комментарий от anonymous

Ничего не понял, википедия утверждает что «вывод типов» (type interface - я бы скорее перевел это как «система входных типов данных», ну да ладно) это возможность создать переменную не указывая ее тип.
Обалджеть какая фича (для статичных языков), да, но я то говорю про это: answer: String = "forty-two"- это что такое?

uin ★★ ()
Ответ на: комментарий от gns

язык — для его авторов, а не для пользователей

Так и есть. Аполю всегда начхать на пользователей было. Как решили так и будет.

entefeed ☆☆☆ ()

Зачем здесь этот эппловский треш?

Linux - это С/C++, иногда Python для пользовательского ПО. Всё.

Вот эти все эппловские извращения здесь не нужны.

anonymous ()
Ответ на: комментарий от dzidzitop

апшыпся, в 3.9 быстрее, чем в самом Python!

Во-первых ты недооцениваешь скорость сортировки в Python. Что можно заранее захардкодить для оптимизации - в Python работает достаточно шустро. Во-вторых работа с объектами и само ООП в разных языках достаточно сильно отличаются. За дополнительную гибкость и возможности надо платить.

anonymous ()
Ответ на: комментарий от uin

Объявление переменной типа String с инициализацией, что еще это может быть? (свифт не знаю).

anonymous ()

Что за мода тащить пакетные менеджеры в языки программирования и текстовые редакторы? Установкой библиотек, плагинов и обновлений должен заниматься только системный пакетный менеджер. Любой файл в системе, не созданный пользователем явно, должен быть под контролем системного пакетного менеджера.

Pythagoras ★★ ()
Ответ на: комментарий от uin

type interface - я бы скорее перевел это как «система входных типов данных», ну да ладно

type inference, переводчик. Сперва прочитай правильно, потом переводи.

answer: String = «forty-two»- это что такое

Это, видимо, синтаксис объявления переменной с явным указанием типа.

Esper ()
Ответ на: комментарий от gns

Ты так говоришь, как будто быстрая эволюция - это плохо.

cdshines ★★★★ ()
Ответ на: комментарий от entefeed

Ну на девелоперов явно не начхать. А то ну как вдруг аппстор опустеет :)

gns ★★★★ ()
Ответ на: комментарий от uin

это что такое?

Это очень удобно с дженериками:

let v1: i32 = a.value();
let v2: f32 = a.value();
При условии, что 'value' шаблонный метод, - мы можем вызвать нужную нам реализацию.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от cdshines

Ты так говоришь, как будто быстрая эволюция - это плохо.

Это не быстрая эволюция, это кривое проектирование.

Esper ()
Ответ на: комментарий от Pythagoras

Что делать, если мне нужна определенная версия либы, собранная с особыми флагами?

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Что делать, если мне нужна определенная версия либы, собранная с особыми флагами?

Обратная совместимость? Нет, не слышал.

Если дошло до того, что нужна определённая версия либы, собранная с особыми флагами, то остаётся либо менять язык, либо вдоль.

Pythagoras ★★ ()

Чего-то у них тарболы только для Ubuntu 14.04 и 15.10, но ведь свежий LTS сейчас 16.04. Почему для него нет?

void_ptr ★★★★ ()
Ответ на: комментарий от cdshines

Это допустимо, если у языка нет большой кодовой базы (а, видимо, нет), или если язык имеет контролируемое ограниченное распространение.

Быстрая эволюция не всегда хороша. потому как вот буде я сейчас стал бы писать для макинтоша, я бы выбрал Objective C. Потому как хочется «чтоб оно как-то устаканилось сначала». Они выпускают новые диалекты языка раньше, чем я научаюсь думать на существующем. Как-то так.

gns ★★★★ ()
Ответ на: комментарий от Pythagoras

менять язык

Именно. Менять язык на тот, где есть пакетный менеджер и нет упоротых евангелистов вроде тебя. Свифт, например.

Esper ()
Ответ на: комментарий от Esper

нет упоротых евангелистов

Свифт

/0

anonymous ()
Ответ на: комментарий от uin

В каком глубоком подвале надо сидеть, чтобы в 2016 году не знать про вывод типов.

anonymous ()
Ответ на: комментарий от Pythagoras

Если дошло до того, что нужна определённая версия либы, собранная с особыми флагами, то остаётся либо менять язык, либо вдоль.

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

anonymous ()
Ответ на: комментарий от uin

answer: String = «forty-two»

в некотором скажем так абстрактном, си-подобном языке программирования это как-то так:

string answer = «forty-two»;

что тут может быть непонятно?

anonymous ()
Ответ на: комментарий от Esper

И сидеть в своём мирке на загаженной системе, перекомпилируя либы с разными флагами, вместо того, чтобы разрабатывать уже что-то своё.

Pythagoras ★★ ()
Ответ на: комментарий от anonymous

упоротых евангелистов вроде тебя

/0

Имелись в виду упоротые евангелисты линуксового пакетного менеджмента.

Esper ()
Ответ на: комментарий от void_ptr

Почему для него нет?

На нем и так будет работать любой из билдов.

anonymous ()

Являясь крупным релизом, Swift 3 привносит изменения, которые делают язык несовместимым с версиями Swift 2.2 и 2.3 на уровне исходных текстов

Прям как во время перехода с php5.2 на php5.3.

r_asian ☆☆☆ ()
Ответ на: комментарий от Pythagoras

сидеть в своём мирке на загаженной системе

Любой файл в системе, не созданный пользователем явно, должен быть под контролем системного пакетного менеджера.

В твоём понимании - все сидят в загаженной системе. Или ты знаешь пакетный менеджер, который успешно управляется с каталогами типа ~/.mozilla?

Esper ()
Ответ на: комментарий от anonymous

я уверен, что и C и С++ в поставке «язык + стандартная библиотека» опередят этот Swift на любом наборе данных. и это единственная причина, почему на графике есть Python и нет нормальных системных языков.

dzidzitop ★★ ()
Ответ на: комментарий от Esper

В твоём понимании - все сидят в загаженной системе. Или ты знаешь пакетный менеджер, который успешно управляется с каталогами типа ~/.mozilla?

Он просто никогда не писал ничего, или не писал ничего сложного. Иначе понимал бы разницу между версиями библиотек, и что они не просто так обновляются.

anonymous ()
Ответ на: комментарий от dzidzitop

я уверен, что и C и С++ в поставке «язык + стандартная библиотека» опередят этот Swift на любом наборе данных. и это единственная причина, почему на графике есть Python и нет нормальных системных языков.

В С и ООП то нет, чтоб он был на том графике. А в С++ нет ARC (про само ООП промолчим, чтоб не устраивать холивар). И если использовать std::shared_ptr как его альтернативу, то вполне вероятно С++ еще и програет.

anonymous ()
Ответ на: комментарий от Pythagoras

Дык для огрызков это нормально. У них там каждый пакет поставляется с толпой сторонних библиотек. Только что эппловские фреймворки с собой не тащат. Ну избавляются таким образом от глобальных зависимостей. Вон какое-то очередное Федорино горе имело на борту only FIPS-овскую сборку openssl, так там дохрена эллптических кривых было выпилено. Вот старый и код перестал работать, потому как сертификаты проверить нечем стало...

И вообще, посмотри, что у тебя в /opt творится... :)

gns ★★★★ ()
Последнее исправление: gns (всего исправлений: 1)
Ответ на: комментарий от anonymous

Объявление переменной типа String с инициализацией, что еще это может быть? (свифт не знаю).

Например выхлопом интерпритатора, когда мы объявили let answer = "forty-two", потом написакли answer и он нам выплюнул тип = значение String = "forty-two"

там просто выше баловство с интерпритатором аналогично выглядит

3 + 1
$R0: Int = 4
Вот я и спросил.

Esper
А, тогда это распознавание типа, «вывод типа» все равно некорректно звучит и сбивает с толку, я вот подумал про вывод в консоль типа переменной.

Это, видимо, синтаксис объявления переменной с явным указанием

RazrFalcon

v1: i32 = a.value();
v2: f32 = a.value();

Не понял, a.value() какую то мешанину байтов возвращает что-ли что ее можно хоть как определять?

uin ★★ ()
Последнее исправление: uin (всего исправлений: 2)
Ответ на: комментарий от anonymous

Тогда понятно.

а непонятно было то что зачем вначале объявили а потом объявили еще раз то же самое

let abc = "abc"
abc: String = "abc"

uin ★★ ()
Ответ на: комментарий от uin

Тыжразработчик. Обязан всё знать и уметь, всем интересоваться.

anonymous ()
Ответ на: комментарий от uin

а непонятно было то что зачем вначале объявили а потом объявили еще раз то же самое

Дык что тут непонятно то? Swift запущен в режиме интерпретатора и вторая строка - это его ответ на ввод первой

Fawkes ()
Ответ на: комментарий от Fawkes

Дык что тут непонятно то? Swift запущен в режиме интерпретатора и вторая строка - это его ответ на ввод первой

Блин, точно, там же let нет.

anonymous ()

Это тот самый язык который может правильно созданный файл на 30 строк собирать часами?

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.