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 ()
Последнее исправление: DeadEye (всего исправлений: 2)
Ответ на: комментарий от ii8_

Да, синтаксис несовместим. Это МАЖОРНЫЙ релиз. Вы вообще программируете или только ноете даже о вещах, о которых прочитать не в состоянии?

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

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

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

Никакой суеты нет. Достаточно посмотреть что изменилось. Вам с лиспами и плюсами, небось, крышу сносит от кол-ва релизов фф с хромом.

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

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

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

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

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

А по теме: Оно ведь только для яблок писать пригодно или есть-то вроде моно?

большие дополнения в порт под Linux

Вот это вот значит что я смогу написав на этом Swift'е приложение собрать его и для маков и для онтопика? Стандартная библиотека общая? Гуйовая библиотека? Qt заменит?

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 3)
Ответ на: комментарий от ya-betmen

Когда мавен стал частью жабы?

А когда spring? Когда hibernate? Когда ангулар? Когда tomcat стал частью жабы? Наверное тогда, когда жаба перестала быть ЯП и стала стэком технологий. И когда будучи жабистом ты ничто без вышеупомянутых.

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

Гуй там только для macos и ios (но в стандартную библиотеку он не входит, используются биндинги для нативных библиотек).

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

Вот это вот значит что я смогу написав на этом Swift'е приложение собрать его и для маков и для онтопика?

Можешь.

Стандартная библиотека общая?

Да. + https://swift.org/core-libraries/

Гуйовая библиотека? Qt заменит?

Гуёвой нет стандартной (UIKit не кроссплатформенный), сторонние не искал. Не заменит.

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

Есть хоть пара примеров практически полезных приложений на свифте под Линукс?

А вы, собственно, почему интересуетесь?

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

Все остальные люди понимают что написали, ты не понимаешь на этапе написания. Только на ЛОРе я читаю подобное и узнаю новое из жизни линуксоидов.

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

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

unt1tled ★★★★
()

Убрали ++ и — потому что это затрудняет обучение. Понятно, очередной говноязык для дебилов.

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

Вот это вот значит что я смогу написав на этом Swift'е приложение собрать его и для маков и для онтопика?

Ну «hello, world» написать сможешь. Биндингов в Qt не заявлено, макосно-айосных фреймворков в линухе нет. Вывод — язык к применению вне мака пригоден чуть менее, чем полностью.

Вот, отсюда — https://www.raywenderlich.com/122189/introduction-to-open-source-swift-on-linux

What Apple Hasn’t Released

That’s quite a pile of functionality — but what hasn’t Apple released?

\Well, there’s no Xcode, no AppKit and no UIKit. There’s no Core Graphics, no Core Animation, no AVFoundation, nor many of the other familiar core Objective-C libraries. Basically, most of what you need to create beautiful iOS or Mac apps isn’t here yet. But what Apple has released is quite significant. Consider the Core Libraries project. Why did Apple take the trouble of re-implementing its own mature, battle-tested Foundation libraries?

The fact that the Core Libraries project doesn’t rely on the Objective-C runtime suggests that Apple is creating the underpinnings for Swift to replace Objective-C completely in the long run. And the fact that it’s cross-platform by design suggests Apple is seriously hoping people will use the language for Linux software development — at least for server software, if not for GUI apps.

Ну и нахрена он нам такой красивый-серверный тут сплющился? У нас тут своих серверных языков в ассортименте...

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

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

Так виснет же и падает временами.

Napilnik ★★★★★
()

Removing
Removing
Remove
Remove

Язык стремительно приближается к Оберону. И по полезности тоже.

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

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

https://is.gd/OAU3NT

Это называется ad-hoc polymorphism, и он есть в куче современных ЯП (присоединяюсь к вопросу анонимуса про подвал).

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

NIH-синдром, честное слово. Тусят все там друг рядом с другом в Калифорнии, но каждому нужно обязательно изобрести свой язычок. Одним - Objective-C и Swift, другим - Rust, третим - Go. А собраться вместе, поделиться опытом и выбрать что-то одно - ну никак))

Ein Volk, ein Reich, ein Programmiersprache?

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

NIH-синдром, честное слово. Тусят все там друг рядом с другом по всему миру, но каждому нужно обязательно изобрести своё DE. Одним - GNOME и Cinnamon, другим - Unity, третим - KDE. А собраться вместе, поделиться опытом и выбрать что-то одно - ну никак))

EXL ★★★★★
()

Ждём ебюлды.

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

Это называется ad-hoc polymorphism
присоединяюсь к вопросу анонимуса про подвал

Я спросил что оно делает, а не как это называется.
Насколько понял из кода, метод возвращает дефолтное значение того типа который мы явно задаем, и тоесть с
let a = foo.value() и тем более foo.value() будет ошибка, либо надо будет дописать еще костылей что бы оно не ломалось в таких местах.

А еще все это выглядит честно говоря не очень.

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

Вместо дефолтного значения там могло быть что угодно. Это просто пример того, как компилятор может вывести конкретный тип для функции с полиморфным возвращаемым значением исходя из контекста (и этим контекстом не обязательно должен быть явно указанный тип переменной, см. другой пример).

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

Никакой суеты нет.

Python - между 2.0 и 3.0 - восемь лет. Swift - между 2.0 и 3.0 - один год. Никакой суеты, ога.

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

Нет, это эволюция.

Она слишком активная для языка без слова alpha рядом с версией.

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

выглядит честно говоря не очень.

Это отличная штука, я использовал ее в котлине когда писал по андроид. Создаешь такую простую функцию:

inline fun <reified T : View> View.find(id: Int): T {
    return findViewById(id) as T
}
и потом во всяких адаптерах можно писать такое:
val a:EditText = view.find(R.id.edit)
val b:TextView = view.find(R.id.label)

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

А когда spring?

Никогда

Когда hibernate?

Никогда

Когда ангулар?

Тем более никогда

Когда tomcat стал частью жабы?

Никогда

Наверное тогда, когда жаба перестала быть ЯП и стала стэком технологий

Ачто свифт стал стеком технологий?

И когда будучи жабистом ты ничто без вышеупомянутых.

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

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

Три символа разницы. Разумеется, ради этого стоило вводить оператор.

Во-первых += - тоже сахар. Почему его бы не выкинуть? Во-вторых += вроде как нельзя использовать в выражениях, т.е. это не аналог и разница не только в «три символа».

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

Выкатывай контекст, в котором такое нужно.

Да где угодно, где есть счетчики создаваемые по ключу. Это может быть статистика, например, или генерация ID-ов. А области применения могут быть самые разные. От игр до БД и веба.

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

А теперь выкатывай код на Swift.

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

Лучше такое:

А тут проблема не в операторе, а в том, что есть языки, где его реализацию оставили на усмотрение компилятора. Есть и другие языки, где такой проблема.

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

Во-первых += - тоже сахар. Почему его бы не выкинуть?

Очевидно, потому что от них есть профит. Операция с присваиванием - это простая, логичная и полезная концепция.

Во-вторых += вроде как нельзя использовать в выражениях

Во-первых, это зависит от укуренности разработчиков языка. В Си, например, можно. А в каком-то языке нельзя было и инкременты использовать. Во-вторых, операторы в арифметических выражениях нечитабельны, особенно c норкоманской сишной семантикой (привет, i++ + ++i).

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

Операция с присваиванием - это простая, логичная и полезная концепция.

++ - это простая, логичная и полезная концепция. (c)

В Си, например, можно.

В Си и ++ есть, потому мы не про него говорим.

Во-вторых, операторы в арифметических выражениях нечитабельны, особенно c норкоманской сишной семантикой (привет, i++ + ++i).

Если писать i += 1 + i += 1, то будет нешибко читабельней.

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

Я о том что выглядит как типичный костыль а делает то что есть by design в динамических языках, то есть вот, статическая типизация - хорошо потому что не позволяет скомпилироваться коду который будет выдавать неправильный результат, поэтому давайте писать все статическим а для использования динамических особенностей будем подгонять распорки.
Хотя пока скорость статичного подхода на две головы выше, ничего против него не имею как такового, непонятно только зачем новоязы делать опять такими.

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

А тут проблема не в операторе

Тут вообще нет никакой проблемы, это валидный код без UB. Проблема только в том, что писать такое приходится раз в 10 лет и можно спокойно раскошелиться на две строчки:

int j = i * 2;
i += 2;
Esper
()
Ответ на: комментарий от Esper

это валидный код без UB.

Компиляторы считают по другому:

gcc:

warning: operation on ‘i’ may be undefined [-Wsequence-point]
     int j = (i++) + (i++);
             ~~^~~


clang:

test.cpp:3:15: warning: multiple unsequenced modifications to 'i'
      [-Wunsequenced]
    int j = (i++) + (i++);
              ^       ~~
anonymous
()
Ответ на: комментарий от anonymous

++ - это простая

Ну да. Настолько простая, что мамины сишные какиры считают её осиливание показателем интеллекта:

Понятно, очередной говноязык для дебилов.

, а потом выдают на форумах перлы типа:

int j = (i++) + (i++);

А тут проблема

.

полезная концепция

Нет. Она нужна только в языках с сишными циклами, когда инкремент приходится писать по пять раз на дню и разница между i++ и i += 1 становится ощутимой.

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

а потом выдают на форумах перлы типа:

Как я уже написал выше, компиляторы дают за такие перлы по рукам. Ну а кто не читает их предупреждения - ССЗБ, и тут язык уже не причем.

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