ગો પ્રોગ્રામિંગ ભાષાનું પ્રકાશન 1.16

Go 1.16 પ્રોગ્રામિંગ લેંગ્વેજનું પ્રકાશન રજૂ કરવામાં આવ્યું છે, જે Google દ્વારા સમુદાયની ભાગીદારી સાથે હાઇબ્રિડ સોલ્યુશન તરીકે વિકસાવવામાં આવી રહ્યું છે જે સંકલિત ભાષાઓના ઉચ્ચ પ્રદર્શનને સ્ક્રિપ્ટીંગ ભાષાઓના આવા ફાયદાઓ સાથે જોડે છે જેમ કે કોડ લખવામાં સરળતા. , વિકાસની ઝડપ અને ભૂલ સંરક્ષણ. પ્રોજેક્ટ કોડ BSD લાયસન્સ હેઠળ વિતરિત કરવામાં આવે છે.

ગોનું વાક્યરચના C ભાષાના પરિચિત તત્વો પર આધારિત છે જેમાં પાયથોન ભાષામાંથી કેટલીક ઉધાર લેવામાં આવી છે. ભાષા તદ્દન સંક્ષિપ્ત છે, પરંતુ કોડ વાંચવા અને સમજવામાં સરળ છે. ગો કોડ સ્ટેન્ડ-અલોન બાઈનરી એક્ઝિક્યુટેબલ ફાઈલોમાં કમ્પાઈલ કરવામાં આવે છે જે વર્ચ્યુઅલ મશીનનો ઉપયોગ કર્યા વિના મૂળ રીતે ચાલે છે (પ્રોફાઈલિંગ, ડિબગીંગ મોડ્યુલ્સ અને અન્ય રનટાઈમ પ્રોબ્લેમ ડિટેક્શન સબસિસ્ટમ્સ રનટાઈમ ઘટકો તરીકે સંકલિત છે), જે C પ્રોગ્રામ્સની તુલનાત્મક કામગીરી માટે પરવાનગી આપે છે.

આ પ્રોજેક્ટ શરૂઆતમાં મલ્ટિ-થ્રેડેડ પ્રોગ્રામિંગ અને મલ્ટી-કોર સિસ્ટમ્સ પર કાર્યક્ષમ કામગીરીને ધ્યાનમાં રાખીને વિકસાવવામાં આવ્યો છે, જેમાં સમાંતર કમ્પ્યુટિંગ અને સમાંતર-એક્સેક્યુટેડ પદ્ધતિઓ વચ્ચે ક્રિયાપ્રતિક્રિયાનું આયોજન કરવા માટે ઓપરેટર-સ્તરના માધ્યમો પૂરા પાડવાનો સમાવેશ થાય છે. ભાષા વધુ પડતી ફાળવેલ મેમરી બ્લોક્સ સામે બિલ્ટ-ઇન સુરક્ષા પણ પૂરી પાડે છે અને ગાર્બેજ કલેક્ટરનો ઉપયોગ કરવાની ક્ષમતા પૂરી પાડે છે.

Основные новшества, представленные в выпуске Go 1.16:

  • Добавлен пакет embed, предоставляющий средства для встраивания в программу произвольных файлов и каталогов. Для указания файлов, которые необходимо встроить на этапе компиляции, предоставляется новая директива «//go:embed». Например, указание в коде комментария «//go:embed test.txt» и объявление следом переменной «var f embed.FS» приведёт в встраиванию файла test.txt и возможности обращения к нему через дескриптор «f». Подобным образом можно встраивать необходимые для работы файлы с ресурсами или отдельными значениями определённого типа, например, для получения строковой переменной «s» из файла version.txt можно указать: import _ «embed» //go:embed version.txt var s string print(s)
  • По умолчанию теперь требуется использование новой системы модулей с интегрированной поддержкой версионирования, которая пришла на смену средствам управления зависимостями на основе GOPATH. Переменная окружения GO111MODULE теперь выставлена в значение «on» по умолчанию и режим модулей используется независимо от присутствия файла go.mod в рабочем или родительском каталоге. В новом режиме сборочные команды, такие как «go build» и «go test», не изменяют содержимое go.mod и go.sum, а команда «go install» обрабатывает аргументы с указанием версии («go install example.com/[ઇમેઇલ સુરક્ષિત]»). Для возвращения старого поведение следует изменить GO111MODULE на значение «auto». Отмечается, что 96% разработчиков уже перешли на новую систему модулей.
  • Проведена оптимизация компоновщика. Для больших проектов компоновка теперь выполняется на 20-25% быстрее и требует на 5-15% меньше памяти.
  • В компиляторе добавлена поддержка inline-развёртывания функций с сокращённым определением циклов «for», методом значений (method values) и конструкциями ‘type switch’.
  • Добавлена поддержка систем Apple, оснащённых новым ARM-чипом Apple M1. Добавлены порты netbsd/arm64 и openbsd/mips64 с поддержкой NetBSD на 64-разрядных ARM и OpenBSD на системах MIPS64. В порт linux/riscv64 добавлена поддержка cgo и режима «-buildmode=pie».
  • Прекращена поддержка режима компиляции x87 (GO386=387). Поддержка процессоров без инструкций SSE2 теперь доступна через программный режим «GO386=softfloat».

Дополнительно можно отметить начало тестирования бета-выпуска языка Dart 2.12, в котором стабилизирован режим безопасного использования значения «Null» (null safety), который позволят избежать крахов, вызванных попытками использования переменных, значение которых не определено и выставлено в «Null». Режим подразумевает, что переменные не могут иметь неопределённые значения, если им явно не присваивается значение null. В режиме строго учитываются типы переменных, что позволяет компилятору применять дополнительные оптимизации. Соответствие типов проверяется на этапе компиляции, например, в случае попытки присвоения значения «Null» переменной с типом, не подразумевающим неопределённое состояние, таким как «int», будет выведена ошибка.

સોર્સ: opennet.ru

એક ટિપ્પણી ઉમેરો