Вышла бета версия 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 есть некоторые ограничения:
- Нет поддержки отладчика (в процессе)
- Все функции компилируются в один и тот же объект, что означает, что библиотека всегда будет включать все функции в конечном исполняемом файле.


Посмотрим что будет дальше после исправления ошибок.
GCC тоже нет. Вместо него шланг.