Среда, 07.12.2022, 19:41Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Freebasic » Вопросы по языку FreeBasic » РЕЛИЗ компилятора FreeBasic 0.24 (РЕЛИЗ компилятора FreeBasic 0.24)
РЕЛИЗ компилятора FreeBasic 0.24
haavДата: Понедельник, 20.08.2012, 10:10 | Сообщение # 1
Группа: Администраторы
Сообщений: 1300
Репутация: 47
Статус: Offline
РЕЛИЗ компилятора FreeBasic 0.24

После представленной информации о предстоящем релизе, разработчики языка FreeBasic наконец его выпустили. Это наисерьезнейшее обновление связанное не только с исправлением огромного числа ошибок, но и перетряхиванием внутренностей компилятора. Компилятор все больше приближается по возможностям к такому языку как С++ и это не может не радовать!

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

[changed]- add a "special exception" to gfxlib2 license to allow linking into executables under more relaxed terms (the same as the rtlib)
- -target option now accepts system triplets (known from gcc/binutils)
- By default even the non-standalone fbc is now relocatable and relies on exepath()
- fbc no longer includes full ldscripts, a supplemental snippet (fbextra.x) is passed to the linker instead (except for the DOS/DJGPP version which still relies on a modified ldscript)
- __FB_UNIX__ and __FB_PCOS__ now work like the other target defines (check via #ifdef)
- All cross-compilation targets are now always enabled in the compiler
- -o now also affects .rc and .xpm input files (useful to change the file names of the temporary objects)
- -o must now clearly be specified in front or behind of the corresponding input file, for example: "fbc 1.bas 2.bas -o 1.o -o 2.o" no longer works, but "fbc -o 1.o 1.bas" is possible now
- -x used with -lib now sets the library file name
- "No newline at end of file" warning removed
- 'PALETTE index, r, g, b' now uses 8-bit precision on each color value
- The __FB_MIN_VERSION__() macro is no longer changed to ____FB_MIN_VERSION__() for -lang qb
- SWAP no longer accepts function calls
- ImageCreate() and Reset(streamno) now set the runtime error code, which can be retrieved with Err()
- Allow CONST STRING parameters in functions
- wstring Input is now subject to the same 4096 characters length limit like the normal [z]string Input
- #3492598: FB-only overloaded operators now use Itanium C++ ABI-compatible name mangling
- The bitwise NOT operator is now mangled as bitwise not ('~' in C++) instead of logical negation ('!' in C++)
- The '= ANY' intializer on variables or fields will now prevent the default constructor call (if any), instead of generating a warning message, requiring the variable or field to be initialized with an explicit constructor call. It still won't affect destructor calls though.
- #3051592: crt/ now uses __errno_location() to access errno on Linux
- The NAKED keyword is now disallowed under -gen gcc because gcc doesn't support naked functions on x86
- DELETE on something that's not a pointer now always triggers an error, not just a warning
- The -target option is no longer case-sensitive
- Linux standalone fbc won't try to use tools from PATH anymore
- PRINT USING now prints Inf/Nan/Ind values in the same style as QB, e.g. "1.#INF"
- PRINT USING now disallows commas between expressions (they had the same effect as semi-colons)

[added]- Single inheritance for classes: TYPE Child EXTENDS Parent
- BASE keyword for explicit base class access inside methods: BASE.member (as opposed to THIS.member)
- Runtime type information (RTTI) for classes extending other classes or the new builtin OBJECT class: IF variable IS SomeClass THEN ...
- THREADCALL keyword for starting functions in a new thread with parameters passed to them (requires libFFI)
- __DATE_ISO__ for returning the compile date in "yyyy-mm-dd" format
- fbc can now be built for installation into MinGW/DJGPP
- Support for windres instead of GoRC when installing into MinGW or cross-compiling from a non-win32 system
- The .def file generated when building a DLL is now preserved if -R was given
- 'fbc -static' option to tell the linker to link against static libraries if installed
- CONST may now be specified in front of the bodies of CONST methods, not just in the declaration, same as for STATIC
- "Real" Rnd() algorithm (activate via 'Randomize(, 5)') using Win32 Crypto APIs or Linux /dev/urandom
- New headers for many audio-related libraries (some experimental): libsndfile 1.0.X, libVLC 1.1.x, mpg123 library, MediaInfo, PortAudio, Flite 1.4, libmodplug
- New experimental X11 headers
- Updated headers for GNU gettext/libintl 0.17
- New algif and alpng headers for Allegro
- New header for the UUID library from e2fsprogs
- New headers for json-c
- New headers for the GNU dbm library
- acmStreamOpen() declaration to win/
- New header file: win/ddk/
- New headers for compression and archive handling libraries: libzip 0.10, libbzip2 1.0.6, liblzma 5.0.2, zlib 1.2.6
- Updated headers for wx-c 0.9.2
- New headers for libjit 1.0.0 and libffi 3.0.10
- New headers for the Chipmunk 4.1.0 physics library
- Updated headers for CGUI 2.0.1
- New headers for IUP 3.5
- Updated header for SQLite3 3.7.8
- Updated headers for OpenAL 1.13 and ALUT 1.1.0
- Updated header for FreeImage 3.15.1
- Updated header for QuickLZ 1.50
- Updated header for PDcurses 3.4
- Updated header for libcaca 0.99 beta17
- Updated headers for OpenGL, including new freeglut headers
- Updated header for BASS 2.4
- Updated header for ODE 0.11.1
- Updated header for libcurl 7.24.0
- New header for SQLiteExtensions
- Updated headers for GTK+ 2.24 and 3.2.2, including gdk-pixbuf 2.25.0, gtkglext 1.2.0, ATK 1.33.6, Cairo 1.10.2, Pango 1.29.5, glib 2.31.4
- Updated header for Mini-XML 2.7 header update
- New header for ZeroMQ 2.1.10
- Updated header for cryptlib 3.4.1
- Wstrings are now allowed in Print Using
- Len(), Sizeof() and Typeof() can now be used on function calls and array accesses even if they have the same identifier as a type
- Same type/expression disambiguation for Peek/Poke as for Len/Sizeof/Typeof
- FIELD = N can now be used on nested anonymous TYPEs/UNIONs
- IIF()'s with constant conditions are now evaluated at compile-time
- Updated headers for PCRE library 8.31

[fixed]- Subtracting pointers from numbers, e.g. (i-p) was being allowed, rearranging to (p-i)
- FBC should give an error if EOF reached while parsing code inside an #IF block
- Possible crashes in Date(), Now(), FileDateTime() if the system time couldn't be interpreted
- #3398498: VA_NEXT() intrinsic macro now works with types that aren't a multiple of 4 bytes
- #3404250: *.a input files being wrongly passed to ld as -l*.a
- Compiler crash on 'cast(T ptr, 0)->x'
- #2828675: UDT fields not having tail padding (ABI now changed to match GCC)
- #3422768: pp under -gen gcc complaining about va_arg/va_next tokens even if not used as the actual macros
- #2188864: Compiler crash on out of memory
- #3453953: GOTO/GOSUB allowed keywords as labels
- The #LANG metacommand was not allowed in disabled preprocessor blocks
- -gen gcc crash on 'if funcptr then ...'
- #3441855: SWAP allowed incompatible data types
- #3465650: Compiler crash after showing error for using array element as FOR loop iterator
- #3434928: Incomplete null op optimization breaking assumptions made for conditional jumps
- #3320650: gfx functions didn't accept CONST source images (DRAW STRING font, PUT/GET/POINT() source)
- False positive syntax errors after '#ifdef namespaceid' (and also #ifndef, #undef and #if defined())
- #3446210: SELECT CASE leaking its temporary (w)string if not reaching END SELECT (e.g. EXIT FUNCTION from inside a CASE block)
- Temporarily reset console during Unix dylibload() and dylibfree(), to properly restore terminal state at exit
- VAR initialized from a STRING * N variable created a STRING * 0 instead of a dynamic STRING
- -gen gcc: abs(longint) was just abs(integer)
- 'PALETTE index, r, g, b' wasn't behaving as expected on some obscure SCREEN modes
- Built-in macros are now working in -lang qb (__RGB(), __BIT(), __ASSERT(), ...)
- ERASE crashed on arrays of UDTs with constructor but no destructor
- Internal compiler error in cases like: '*(@cast(ubyte, byte_var_or_array_element) + 1)'
- SWAP allowed [z|w]strings marked as CONST
- #3215431: SWAP on byte/short array elements could generate bad code
- SWAP on bitfields now works with -gen gcc (caused internal compiler error), and won't use extra temp vars anymore
- 'SWAP a, b' could produce different results than 'SWAP b, a'
- SWAP on operands with different sizes could generate bad code
- #2824381: UDTs with methods inside module-level scope blocks caused compiler crash instead of error message
- EDI/ESI registers could be used without being preserved, when clearing local UDTs/strings/arrays > 16 bytes or copying UDTs > 16 bytes. The bug showed up when other parts of the function used EDI/ESI too (for example "plongint [indexvar]= longintvar").
- Procedure pointers could be dereferenced using the '*' operator
- #3476028: SWAP/LET() assignments allowed modification of string literals/constants
- SWAP on strings failed/produced bad results when strings had different lengths
- #3476021: SWAP didn't clear fixed-length string remainders
- GFX_SHAPED_WINDOW didn't work properly on some modern Linux systems (thanks Sisophon2001 for the fix)
- Wrong error message when calling non-const method on const UDT
- Shell() on Unix didn't return the proper shell exit code
- Memory leak and possible race condition in console Line Input function
- Infinite loop in Line Input on files opened with Encoding when reaching EOF without newline
- Bsave()'s length parameter wasn't unsigned like in the gfxlib
- Win32 ScreenControl GET_WINDOW_POS with minimized window could cause it to be locked up that way
- "array too big for stack" warning was shown for static arrays
- ScreenRes was truncating the screen's text width/height (columns/rows) to 0..255, causing incorrect Print'ing or even a division-by-zero crash during Print
- C backend: gcc warnings about pointer assignments from BOPs
- C backend: compiler crash on circular dependency between UDT and function pointer typedef
- Buffer overflow in wstring Input
- Input to dereferenced wstring ptr wasn't reading in anything
- #3510684: Array descriptors for arrays declared inside Extern blocks weren't always given an alias name, causing the mangled name for emitting to be wrong (under C++ mangling) or empty (under all other non-default manglings)
- #3496522: crt/sys/linux/ contained wrong typedefs (int64_t being just integer etc.)
- Missing GET/PUT "UDT with var-len fields" warning when nested UDT fields had var-len fields
- GLUT/Windows headers compatibility issues
- win/ TabCtrl_AdjustRect() and TabCtrl_SetImageList()
- win/winsock[2].bi: FD_CLR() macros were broken
- C backend: procedures using Pascal were treated as Cdecl
- C backend: Missing padding elements in multi-dimensional global array initializers
- C backend: didn't allow float-to-Long/Ulong casts
- C backend: float to uinteger conversions truncated to integer
- C backend: The 'as any ptr' overloads of bin/oct/hex didn't work unless the 'as integer' versions were used in the same module
- Wrong declarations of some the built-in wbin(), bin(), woct() overloads
- Buffer overflow in wbin()
- C backend: Pointer fields pointing to the parent UDT itself were always emitted as having a single PTR only, even if it was a PTR PTR etc.
- C backend: Taking address of module-level labels was broken (used by module-level error handling code)
- C backend: Wstring literals outside variable initializers were emitted assuming sizeof(wstring) = 2, causing buffer overflows on Linux (where sizeof(wstring) = 4)
- C backend: wchar type didn't match gcc's, breaking global fixed-length wstring initializers
- Unused bits (padding) in UDTs with bitfields could be left uninitialized by type initializers
- C backend #3421351: Wrong code for bitfield assignment when the target bitfield expression had nested field accesses
- #3509495: Delete[] on derived UDTs with destructors caused a compiler crash
- Overload resolution treated pointer arguments as uintegers, allowing them to match integer parameters
- Any Ptr arguments were seen as ambiguous even if there was a fully matching overload
- #3479361: Derived UDTs were allowed to access their base UDT's private fields
- Local arrays in methods didn't have access to private/protected destructors
- 'LET(fields...) = UDT' in methods didn't have access to private/protected fields
- Access to member constants wasn't always checking visibility
- ERASE and field declarations didn't check c/dtor visibility
- #3490779: -exx and -profile broke Naked procedures due to implicit RTL calls; now no more implicit code will be added (this change affects error handling/profiling calls for naked procedures, and member constructor/destructor calls in naked constructors/destructors)
- Compiler crash on naked constructors/destructors
- Early return from an UDT destructor prevented destruction of the UDT's fields
- #3489950: BASE() disabled implicit field construction and vtbl pointer setup in constructors
- #3479349: No error was shown when a constructor couldn't initialize the base UDT (i.e. when the base UDT didn't have a default constructor and there was no BASE() used either)
- #3479355: POD base UDTs weren't cleared by constructors
- #3474348: Multiple REDIMs on COMMON array were disallowed
- #3344224: Copy constructor, Let operator and destructor were added to UDTs having field initializers but no complex fields
- Implicit default and copy constructors (and also a Let overload and a destructor, if needed) will now be generated for derived UDTs which don't have either of them yet, if their base has a default constructor. If it has only non-default constructors, an error will be shown.
- Derived UDT constructors could implicitly use their base UDT's private default constructor
- #3372520, C backend: Buggy type initialization through pointers (i.e. NEW)
- #2855461: REDIM/ERASE on an array of UDT objects with non-parameterless default constructor was allowed, causing junk to be passed to the constructor parameters as the rtlib's REDIM implementation doesn't expect having to pass arguments
- ERASE could be used on an array of UDT objects with only non-default constructor
- EXTERN declarations of UDT variables with only non-default constructor caused an error
- Possible compiler crash when invoking variadic macro without specifying any argument text for the vararg ("...") parameter
- Macro arguments can now be completely empty (no space required anymore to get it to work)
- C backend: global constructor/destructor priorities were not emitted
- Win32: incorrect Inkey() values for Alt-7/Alt-8 (Thanks to DodgeRules for find/fix)
- Mismatched parentheses in various translated headers
- Concatenations could fail on some combinations of const/non-const and string/wstring operands
- Concatenations involving const strings could return const results, which could prevent them being passed to functions
- Some incorrect definitions/constants in (thanks to VANYA for fix)
- The Unix rtlib initialization code could start waiting for a response from the terminal without ensuring to have sent the escape sequence first (missing fflush(stdout)), thus blocking on the stdin read until some other input arrived (e.g. pressing ENTER)

Скачать можно с SourceForge

Или с

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
haavДата: Понедельник, 20.08.2012, 19:27 | Сообщение # 2
Группа: Администраторы
Сообщений: 1300
Репутация: 47
Статус: Offline
Все таки для русских пользователей не шибка понятна та каша, которую я скопипастил с оф. сайта Freebasic. Поэтому две части ( выборочно, что понял) я перевел на русский. А третью про исправление ошибок или недочетов даже трогать не стал biggrin

И так:

- Послабление в лицензии gfxlib2
- Кросскомпиляция теперь полностью доступна в компиляторе
- Четкая установка ключей -o для примера: "fbc 1.bas 2.bas -o 1.o -o 2.o" теперь не работает, но так можно: "fbc -o 1.o 1.bas"
- Ключ -x используется с ключем -lib для установки имени библиотеки
- "No newline at end of file" удалено предупреждение при компиляции (вроде уже в прошлых версиях убирали...)
- 'PALETTE index, r, g, b' теперь использует 8-битную точность на каждый цвет значения
- Макрос __FB_MIN_VERSION__() не изменился, но для компиляции устаревших файлов -lang qb изменено на это: ____FB_MIN_VERSION__()
- SWAP больше не принимает вызовы функций
- Для функций ImageCreate() и Reset(streamno) теперь тоже можно получить код ошибки с помощью Err()
- Позволены CONST STRING параметры в функциях из файлов
- Для wstring теперь так же как и для zstring возможно 4096 символов
- Побитовое NOT оператор теперь подогнан как в С++('~') вместо логического отрицания с++('!')
- NAKED ключевое слово теперь запрещено под GCC GCC потому что не поддерживает голых функций на x86
- DELETE если используется для значения не являющегося указателем , теперь вызывает ошибку, а не предупреждение как раньше

- Простое наследование для классов: TYPE Child EXTENDS Parent
- BASE Ключевое слово для явного доступа базового класса внутри метода: BASE.member (по сравнению с THIS.member)
- В любое время информация о типе (RTTI) для классов, и их наследников: IF variable IS SomeClass THEN ...
- THREADCALL удобная функция для запуска в отдельном потоке с любым кол-вом параметров
- __DATE_ISO__ для возвращения даты компиляции в формате "YYYY-MM-DD"
- fbc теперь может быть построена для установки в MinGW/DJGPP
- Поддержка windres вместо GoRC при установке в MinGW или кросс-компиляции из не-win32 системы
- .def файл генерируется при создании DLL если -R не был установлен
- "Реальный" Rnd() алгоритм (активировать через 'Randomize(, 5)') использует Win32 Crypto APIs или Linux /dev/urandom
- Новые заголовки многих аудио-библиотек (некоторые экспериментальные): libsndfile 1.0.X, libVLC 1.1.x, mpg123 library, MediaInfo, PortAudio, Flite 1.4, libmodplug
- Новые эксперементальные X11 заголовки
- Обновлены заголовки для GNU gettext/libintl 0.17
- Новый algif и alpng заголовки для Allegro
- Новые заголовки для UUID library from e2fsprogs
- Новые заголовки для json-c
- Новые заголовки для GNU dbm library
- acmStreamOpen() декларируется для win/
- Новый заголовок файла: win/ddk/
- Новые заголовки для : libzip 0.10, libbzip2 1.0.6, liblzma 5.0.2, zlib 1.2.6
- Обновлены заголовки для wx-c 0.9.2
- Новые заголовки для libjit 1.0.0 and libffi 3.0.10
- Новые заголовки для Chipmunk 4.1.0 physics library
- Обновлены заголовки для CGUI 2.0.1
- Новые заголовки для IUP 3.5
- Обновлены заголовки для SQLite3 3.7.8
- Обновлены заголовки для OpenAL 1.13 and ALUT 1.1.0
- Обновлены заголовки для FreeImage 3.15.1
- Обновлены заголовки для QuickLZ 1.50
- Обновлены заголовки для PDcurses 3.4
- Обновлены заголовки для libcaca 0.99 beta17
- Обновлены заголовки для OpenGL, including new freeglut headers
- Обновлены заголовки для BASS 2.4
- Обновлены заголовки для ODE 0.11.1
- Обновлены заголовки для libcurl 7.24.0
- Новые заголовки для SQLiteExtensions
- Обновлены заголовки для GTK+ 2.24 and 3.2.2, including gdk-pixbuf 2.25.0, gtkglext 1.2.0, ATK 1.33.6, Cairo 1.10.2, Pango 1.29.5, glib 2.31.4
- Обновлены заголовки для Mini-XML 2.7 header update
- Новые заголовки для ZeroMQ 2.1.10
- Обновлены заголовки для cryptlib 3.4.1
- Wstrings теперь разрешено в Print Using
- Len(), Sizeof() and Typeof() теперь можно использовать на вызовы функций и доступ к массиву, даже если они имеют тот же идентификатор типа
- FIELD = N теперь можно использовать на вложенные анонимных TYPEs/UNIONs
- IIF()'s с постоянными условиями в настоящее время оценивается во время компиляции
- Обновлены заголовки для PCRE library 8.31

Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
Форум » Freebasic » Вопросы по языку FreeBasic » РЕЛИЗ компилятора FreeBasic 0.24 (РЕЛИЗ компилятора FreeBasic 0.24)
  • Страница 1 из 1
  • 1