Product SiteDocumentation Site

4. Изменения в Fedora для разработчиков

4.1. Общие сведения о разработке

Fedora содержит широкий набор инструментов для разработки программного обеспечения на всех популярных языках. В этом разделе освещаются некоторые из новых особенностей в Fedora 14.

4.1.1. Новый язык программирования

В Fedora 14 вводится поддержка D, языка системного програмимрования, сочетающего мощь и высокую производительность C и C++ с продуктивностью, которую обеспечивают программисту такие современные языки, как Ruby и Python.
За дополнительными сведениями обращайтесь к ресурсу Язык программирования D.

4.1.2. Поддержка GNUStep

В Fedora появляется среда разработки GNUstep, дающая возможность осуществлять легкую разработку кросс-платформенных приложений на Fedora, используя API и инструменты Cocoa (ранее NeXTSTEP/OpenStep). Главным языком разработки GNUstep является Objective-C, но GNUstep не ограничивается этим.

4.1.3. Другие улучшения

  • Обновления языков Python, Erlang и Perl и сред сразработки Netbeans и Eclipse.
  • Отладчик gdbдополнен новыми командами, облегчающими отслеживание и исправление избыточного использования памяти в программах и библиотеках, и дополнен индексом, который значительно ускоряет отладку.
Эти особенности замыкают обширный набор средств разработки, еще больше расширяющих возможности для разработчиков. Полный список сотен обновленных компонентов для разработки представлен в Технической сводке Fedora 14 на http://docs.fedoraproject.org.

4.2. Среда выполнения

4.2.1. boost

Библиотеки C++ boost обновлены до 4.4, сюда входят многочисленные изменения. Подробности смотрите в примечаниях к выпуску:
В числе основных особенностей новые библиотеки для UML2 FSM, адаптеры Polygons, Factory и Forward, а также библиотека UUID. Существующие библиотеки обновлены новыми функциями и имеют лучшую производительность.

4.2.2. libjpeg-turbo

Библиотека libjpeg заменена на библиотеку libjpeg-turbo, у которой такие же API/ABI, но она по меньшей мере в два раза быстрее на всех основных архитектурах и примерно на 25% быстрее на вторичных архитектурах. Дополнительную информацию см. в libjpeg-turbo в вики Fedora.

4.3. Инструменты разработки

4.3.1. Язык программирования D

D — язык системного программирования, стремящийся объединить в себе мощь и производительность C и C++ со скоростью разработки современных языков, таких как Ruby и Python. В языке D применяется статическая типизация, и он компилируется сразу в машинный код. Это мультипарадигменный язык, поддерживающий императивное, объектно-ориентированное и метапрограммирование. Он принадлежит к синтаксической группе C и очень похож на C++.
  • Компилятор D для LLVM
    LDC — компилятор языка D. Он основан на новейшем компиляторе DMD, а в качестве движка использует LLVM. Последний предоставляет быстрый и современный механизм для создания высокоэффективного кода.
  • Основная библиотека
    Tango — кроссплатформенная бибилиотека с открытым исходным кодом, написанная на языке D для разработчиков D. Она построена как связующая и всеохватывающая библиотека общего назначения, поддерживаемая постоянно растущим числом активных приверженцев D. Наличие единого исчерпывающего описания библиотеки — основное условие ее доступности, поэтому написанию документации проект уделяет не меньшее внимание, чем созданию блестящего функционала.
Дополнительная информация:

4.3.2. python

Используемая ветвь python 2 обновлена до версии 2.7. За списком изменений обратитесь к документу Новое в 2.7.
4.3.2.1. Нюанс: PyCObject и предупреждения
Python предоставляет различные API для использования с модулями расширения языка C. Одна их таких API, PyCObject, начиная с версии Python 2.7, объявлена устаревшей. Тем не менее, имеется ряд ключевых модулей, до сих пор не перестроившихся на ее замену.
По умолчанию предупреждения об устаревших функциях игнорируются, поэтому проблем не возникнет.
Как бы то ни было, если стандартные настройки предупреждений переназначены, недостатки этих модулей могут сказаться на работе интерпретатора Python. В частности, если для предупреждений задано «error», возможно аварийное завершение или ошибки сегментирования при импорте этих модулей.
Если вывод таких предупреждений нужен, следует также переназначить их обработку так, чтобы PendingDeprecationWarning добавлялись в журнал без вызова исключительной ошибки:
>>> import warnings
>>> warnings.simplefilter('error')
>>> warnings.simplefilter('default', PendingDeprecationWarning)

4.3.3. python-migrate

python-migrate обновлен до версии 0.6. Среди нововведений поддержка SQLAlchemy 0.6, баз данных Firebird, собственных шаблонов, а также использование журнала python. Также в новой версии представлены изменения, нарушающие обратную совместимость:
  • api.test() и функции сравнения моделей отныне принимают URL в качестве первого параметра и репозитории в качестве второго.
  • Сценарии python upgrade/downgrade не импортируют волшебным образом migrate_engine, но принимают его как единственный достаточный параметр (напр. def upgrade(migrate_engine):)
  • Column.alter более не принимает current_name, а берет название старого столбца.
За полным списком изменений обратитесь к журналу разработки

4.3.4. Erlang

В Fedora 14 доступна новая версия Erlang/OTP. За подробностями обратитесь к документу Erlang R14 в wiki Fedora.

4.3.5. gdb

gdb улучшен за счет удаления лишних индексов из файлов .debug и заменой их индексами, значительно ускоряющими gdb.
Отладчик gdb расширен новыми командами, позволяющими легче отслеживать и устранять проблемы избыточного использования памяти в программах и библиотеках.
За более подробной информацией обратитесь к статье об индексах Gdb в wiki Fedora.

4.3.6. GNUstep

Эта особенность Fedora позволяет создавать приложения GNUstep. GNUstep — это свободная реализация Nextstep. Она предоставляет графическую основу для среды программирования на Objective-C.
Язык программирования Objective-C поддерживается набором компиляторов GNU (gcc).
Со списком приложений, основанных на GNUstep, можно ознакомиться на сайте проекта.
Подробное знакомство с проектом на странице Введение в GNUstep.

4.3.7. perl

Значительные изменения в perl 5.12:
  • Отныне Perl более полно соответствует требованиям Unicode. Более того, данным выпуском поддерживается версия стандарта 5.2.
  • Новые экспериментальные функции позволят расширить возможности Perl «подключаемыми» ключевыми словами и синтаксисами.
  • Отныне Perl лучше распознает время и способен просчитывать точные даты за пределами рубежа «Y2038».
  • Новый синтаксис позволит разработчикам указывать версии пакетов непосредственно в выражениях «package».
  • Теперь Perl по умолчанию будет предупреждать пользователя об устаревших функциях.
В Perl 5.12.x представлены многочисленные новые возможности, произведены оптимизации, и устранено множество ошибок. Полный список изменений доступен в сети по адресу:

4.3.8. rakudo

Fedora укомплектована Rakudo Perl, исполнением спецификации Perl 6 на основе виртуальной машины Parrot, дающим возможность разработчикам создавать новые и переностить уже существующие приложения на Perl 6. Для того, чтобы установить rakudo, воспользуйтесь инструментом Установка и удаление программ или командой su -c 'yum install rakudo'. Чтобы получить список параметров командной строки, выполните: man perl6man rakudo
За подробностями обратитесь к статье Особенность Fedora 14: Rakudo *.

4.3.9. отладчик bash

Исходный код Lisp для emacs-bashdb-el, отладчика bash emacs, отныне включен в Fedora. Отладчик обновлен до версии 4.1_0.4.

4.3.10. Pyjamas

Новинкой Fedora 14 является pyjamas, платформа для сетевой и настольной разработки клиентских веб-приложений (RIA). Все об этой новой возможности на сайте pyjs.org.

4.4. GCC

4.4.1. gcc

В Fedora 14 входит версия 4.5 gcc и различных компиляторов, зависящих от gcc. Полную информацию об изменениях можно найти в журналах изменений, но некоторые основные моменты приводятся ниже.
4.4.1.1. Поддержка и особенности устаревших версий
В следующих случаях перенос отдельных систем на конкретные платформы устарел:
  • выпуски IRIX до 6.5 (mips-sgi-irix5*, mips-sgi-irix6.[0-4])
  • Solaris 7 (*-*-solaris2.7)
  • выпуски Tru64 UNIX до V5.1 (alpha*-dec-osf4*, alpha-dec-osf5.0*)
  • Подробную информацию об устаревших версиях для IRIX, Solaris 7 и Tru64 UNIX можно найти в объявлении.
  • Поддержка классической архитектуры POWER в оригинальных процессорах RIOS и RIOS2 старой линии продуктов IBM RS/6000 прекращена в порте на rs6000. Это не относится к архитектурам нового поколения Power и PowerPC.
Поддержка также удалена для ряда функций, устаревших в 4.4.

Снижение производительности при соответствии C99

На платформе x86 программа, содержащая вычисления с плавающей запятой, может работать значительно медленнее, чем в случае с более ранними версиями GCC, если ее скомпилировать с помощью GCC 4.5 в режиме строгого соответствия C99. Это обусловлено более строгим соответствием компилятора стандарту, и избежать этого можно, используя параметр -fexcess-precision=fast.

4.4.2. Улучшение оптимизатора

  • -save-temps теперь принимает дополнительный аргумент. Ключи -save-temps и -save-temps=cwd приводят к записи временных файлов в текущий рабочий каталог на основе первоначального исходного файла. Ключ -save-temps=obj приводит к записи файлов в каталог, заданный параметром -o, а промежуточные имена файлов получаются на основе выходного файла.
  • Отладочные дампы теперь создаются в том же каталоге, что и объектный файл, а не в текущем рабочем каталоге.
  • Добавлен новый оптимизатор времени компоновки (-flto). Когда используется этот параметр, GCC создает представление в виде байт-кода для каждого входного файла и записывает его в специальные ELF-секции в каждом объектном файле.
  • Проход автоматического распараллеливания был расширен для поддержки распараллеливания внешних циклов.
  • GCC теперь оптимизирует код обработки исключений.
Обращайтесь к указанной выше странице за дополнительными подробностями об этой и других оптимизациях.

4.4.3. Улучшения для конкретных языков

Есть новые специфические языковые особенности для Ada, C, C++, Fortran и Java.

4.4.4. Новые цели

Есть новые целевые процессоры в семействах AIX, ARM, AVR, IA32, M68K, MeP, MIPS, RS/6000 и RX.

4.4.5. Изменения в установке

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

4.5. Java

4.5.1. NetBeans

NetBeans IDE 6.9 является значительным обновлением NetBeans IDE 6.8.
В NetBeans IDE 6.9 представлены функционал для взаимодействия с OSGi приложениями платформы NetBeans и поддержка разработки связок OSGi при помощи Maven; поддержка JavaFX SDK 1.3 с новым JavaFX Composer, инструментом визуальной компоновки для визуального построения графических приложений JavaFX, аналогичным редактору интерфейсов Swing GUI builder для приложений Java SE, а также поддержка среды PHP Zend и Ruby on Rails 3.0 и усовершенствования в Java Editor, Java Debugger, отслеживании проблем и т.д.
За дополнительной информацией об этом выпуске обращайтесь к документам:

4.5.2. yydebug

Новым для Fedora является yydebug, отладчик кода, создаваемого парсером jay. За полной информацией обратитесь к документу о yyDebug на сайте cs.rit.edu.

4.6. Haskell

GHC обновлен до 6.12.3, а haskell-platform - до стабильного выпуска 2010.2.0.0.
Были внесены дальнейшие усовершенствования в ghc-rpm-macros и cabal2spec, в том числе слияние подпакетов -doc в -devel.
Самый простой способ установить поддержку Haskell в Fedora - установить группу Haskell yum group из Anaconda или YUM.
 yum install @haskell

4.7. Eclipse

eclipse обновлен до версии Helios. Среди новых возможностей: улучшенная поддержка C/C++, хранилище приложений, поддержка git, платформы веб-инструментов, улучшенная поддержка JavaScript и много другое.
Дополнительные сведения:

4.8. Ядро

Fedora 14 включает в свой состав ядро Linux 2.6.35.