Вышла бета версия PureBasic 6.20.
Привет всем,
Рождество близко, а значит и следующая основная версия PureBasic! Этот релиз — важный шаг к тому, чтобы PureBasic оставался актуальным и актуальным в будущем, с большим обновлением OGRE 3D (до последней версии, включая все его зависимости для всех ОС) и новой поддержкой Windows arm64. Он также включает в себя некоторые долгожданные команды, такие как сокеты TLS и создание собственной PureLibrary напрямую с помощью PureBasic!
- Updated: OGRE 3D to lastest 14.3 version (big thanks for the help Pf Shadoko) ! - Added: Windows 11 arm64 support ! - Added: TLS support for Network library (Thanks Idle for the tips) ! - Added: PureLibrary creation in PureBasic (C Backend only) ! - Added: WebWiewProxy() to enable proxy support (Sponsored by Kukulkan) - Added: #PB_Editor_TabNavigation support to EditorGadget() (Sponsored by Quin) - Added: #PB_Entity_InheritScale support Get/SetEntityAttribute() - Added: DLL support to UsePostgreSQL() (Sponsored by wayne-c) - Added: Windows 10+ mode to link directly to UCRT.dll to have smaller executables and up-to-date CRT - Added: IsPack() - Added: PureBasic-CLI.cmd to easily open a commandline environment (Windows)
Ogre3D.
- Added: Get/SetWorldAttribute() to control water and sky - Optimized: BuildMeshLOD() now uses a much better algorithm for automatic lod creation - Modified: SaveRenderTexture() -> only .png format is supported - Modified: reworked SkyDome() and CreateWater() fonction to have better and faster rendering - Modified: Add3DArchive() always needs to be after OpenScreen() - Modified: filenames are now case-sensitive even on Windows and OS X - Removed: Sun() has been removed -> replacement with CreateLight() - Removed: LoadWord() which was based on old BSP tech - Removed: WaterHeight() - Removed: SwitchCamera() which makes no sense
Пример создания библиотеки (PureLibrary).
DisablePureLibrary Test ; Needed to avoid function conflict if the lib is already loaded Global Test$ Global NewMap a() Procedure InitPureLibrary() MessageRequester("Init","Init") EndProcedure Procedure FreePureLibrary() MessageRequester("End","End") EndProcedure ; QuickHelp MyMax(Min [, Max [, Flags, Mode]]) - A standard min/max function ProcedureDLL MyMax3(a, b, c, d) Static cc = 16 Test$ = "Hello" ProcedureReturn OpenWindow(#PB_Any, 10, 10, 200, 200, "Test") EndProcedure ProcedureDLL MyMax2(a, b) ; version 2, 3, 4 .... allow to create optional parameter functions (PureBasic default values are not accepted) ProcedureReturn MyMax3(a, b, 0, 0) EndProcedure ProcedureDLL MyMax(a) ProcedureReturn MyMax2(15, 20) EndProcedure ; QuickHelp GetTest() - Returns the test content ProcedureDLL.s GetTest() ProcedureReturn Test$+Right(" World", 4) EndProcedure ProcedureDLL.s GetFloat(a.f, b.i, c.d) ProcedureReturn StrF(a) + ", "+ Str(b)+ ", "+StrD(c) EndProcedure ProcedureDLL.s GetString(a$, b$, c.d, d$) ; MessageRequester(a$ + b$ + c + d$, "") ProcedureReturn a$ + b$ + " " + c +" " + d$ EndProcedure ProcedureDLL GetArray(Array myArray(1)) ReDim myArray(20) a = myArray(3) ProcedureReturn ArraySize(myArray()) EndProcedure ProcedureDLL GetList(List myList()) AddElement(myList()) AddElement(myList()) ProcedureReturn ListSize(myList()) EndProcedure ProcedureDLL GetMap(Map myMap()) AddMapElement(myMap(), "Test") AddMapElement(myMap(), "Test2") AddMapElement(myMap(), "Test3") ProcedureReturn MapSize(myMap()) EndProcedure ProcedureDLL.d GetDouble(a.d, b.d) b$ = "World" a$ = GetString("aaa", "bbb"+b$, 4545, b$+b$) ProcedureReturn a*b EndProcedure
На данный момент его можно скомпилировать только с помощью командной строки с бэкэндом C.
В Windows откройте PureBasic-CLI.cmd (в Windows arm64 используйте 'pbcompiler' вместо 'pbcompilerc'):
pbcompilerc LibTest.pb --purelibrary --output Тест
В Linux/OSX/Raspberry задайте переменную PUREBASIC_HOME для вашей корневой установки PureBasic и добавьте $PUREBASIC_HOME/compilers в PATH. В Linux x86 или Linux x64 используйте 'pbcompilerc' вместо 'pbcompiler'.
pbcompiler LibTest.pb --purelibrary --output Тест
Если все пойдет хорошо, у вас должна быть установлена новая библиотека, и после перезапуска компилятора вы сможете ее протестировать.
Для PureBasic purelibrary есть некоторые ограничения:
- Нет поддержки отладчика (в процессе)
- Все функции компилируются в один и тот же объект, что означает, что библиотека всегда будет включать все функции в конечном исполняемом файле.