• Welcome to Theos PowerBasic Museum 2017.

Purebasic x64 - A beginners guide for Powerbasic Users.

Started by Theo Gottwald, November 17, 2009, 06:28:06 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Pierre Bellisle

Theo,

I'm interested to explore the 64 bits world and I see that PureBasic is very interesting.

- Win 64 bit compiler
- Win 32 bit compiler
- Linux compiler
- Mac OS X compiler
- (Amiga compiler)

- Modern IDE editor
- Form designer included (Free PureForm form designer and PureVision form designer if needed at $27.95)
- Easy to use other editor like UltraEdit

- Windows and Console in same package

- Exe creation with no runtime
- DLL creation
- Services creation
- Lots and lots of Librarys are available
- Unicode OK

- Windows Api direct call
- Inline asm

- Great forum with great people (French-Deutsch-English)
- Current information about whats is in developpement is avaiable
- Downloadable beta release

- More than competitive price: €79.00  (USD$108.00) including all update for life.
- Should be easy to convert code I have.

Up to now, did you find any major inconvenient or had any serious deception using it ?

Pierre

Theo Gottwald

Pierre, there are more advantages, for example "code building".
The PureBasic IDE supports to build many versions automatically in one step.

From the "compiler construction", PureBasic does not have the perfection from PowerBasic in my personal opinion.
As a result "GOSUB" will not compile into a simple CALL like in PowerBasic.
The String processing is in my opinion not so easy like in PowerBasic.

On the other side, the way PureBasic as a compiler is done, has the advantage, that it supports multiple Platforms.
Even in one Build-Run.

From the x64 alternatives shown here, I would recommend you to take a look on Peles C, if you like the C-Coding style.
And PureBasic if you just don't like C.

To me PureBasic code looks more like C, compared with PowerBasic.
Thats my major reason why i do only use it if i need it.

While coding style is a subjective issue.

These are the two points:
- code style
- compiler architecture

Besides that i can recommend it from my standpoint.

Edwin Knoppert

#17
1) Form engine/behaviour sucks completely, for example you address controls on a form by setting the form current (it lacks the hWnd CtrlID logic, i may have missed the point here but i could not make head or tail of this kind of logic).
2) The PureBasic community is big but nearly all hobbyists, reflects directly on #3
3) Huge amount of static link libraries but an important one to you may get abandon'd and it happens that no code is available, using those without source reflects the hobby status imo.

To be clear:
1) The basis of the compiler is that good that i could use it to make my own form engine which appropriate but it can not be shared since no one uses it of course.
2) There are a few very good programmers over there, but they tend to lack professionalism, bit difficult to explain but i left the board due to lack of 'sense' for this.
3) You can't say the developers of PureBasic are lazy, they often bring a new release.
4) License, couldn't be better, it's for life(!)

Personally..? i dislike the language but that's not really relevant but don't expect ordinary BASIC.

Theo Gottwald

Yes, I would also agree to that.
The overall "discussion culture" in the PB Forums and also here in "Jose's Forum" is better then in the PureBasic Forums.
I believe that it has to do with the fact that anybody has to give a real name here but not there.

Patrice Terrier

#19
I agree with Edwin,

The PureBasic community is mostly hobbyist programmers, no way for a third party addons provider to make a living from it.

Look at their screenshots, and compare this with WinDev applications, and look at the name of the companies using WD, then you will see what professionnal means.

See the testimonials here

now try to find testimonials for PureBasic.

...
Patrice Terrier
GDImage (advanced graphic addon)
http://www.zapsolution.com

Aslan Babakhanov

PureBasic is good, but not the best. it's syntax is weird. really weird.
Look at variable/data decalaration (GLOBAL x.l etc...) or absence of SUB MAIN (and other stuff) - they're coming from FASM.

Do not forget that PureBasic is translator (from Pure dialect to Fasm), but not the compiler.
That explaining how small "compiler" may support different OS platforms.


Theo Gottwald

You are right Aslan. But as long as there is no PB x64 available, we will take any fish that swims around  ;D.
Besides that the surrounding of Purebasic has its advantages. The build process and auto-versioning for example is very  complete.

Aslan Babakhanov

PureBasic' Compiler Options is complete for BASIC compiler. It's really nice.
Couple of weeks ago I had a project for MacOS.
Started to look at different solutions and found that PureBasic is one that can apply to my project.
Tons of features, but lacks with little, but good things that PowerBasic have in its garage. Say, i was unable to produce correct unicode dialog under MacOS X10.4 using standard features. No way to use CHR(&h0234) or CHR(&H02) + CHR(&H34). Only strange workarounds.

Pure's form designer doesn't exist under Mac!
So, you have to code dialogs without designer and in addition the autocomplete mechanism is annoying and doesn't complete the commands properly with keyboard - only with mouse.

Good thing, that you can call any COCOA/XCODE functions, therefore importing of Objective C codes is possible with medium transformation.

Theo Gottwald

#23
PureBasic is now availabe in version 5.11 (Beta as for today).
Its getting better and better with each new release.


Quote
14th February 2013


PureBasic 5.10 (all OS)

- Added: Form designer is now integrated to the IDE !
- Added: Fully reworked Packer library with ZIP, BriefLZ, 7z (unpacker only), LZMA and JCALG1.
- Added: full IPv6 support to the network library.
- Added: System library: ComputerName(), UserName(), MemoryStatus(), CountCPUs()
- Added: Line continuation feature, with the following operands: ',' '|' '+' And Or Xor
- Added: Constant string comparisons are now handled at compile time, allowing use in CompilerIf for example.
- Added: CocoaMessage() for OS X
- Added: 'Check syntax' to only compile the code without build/running an executable
- Added: Array/List/Map parameter support to Interface methods
- Added: Support for dynamic array/list/map support in structure/interface in Residents.
- Added: #PB_Character, #PB_Unicode, #PB_Ascii and #PB_Integer flag support to FillMemory()
- Added: #PB_RegularExpression_NoCase support to CreateRegularExpression()
- Added: EncodeImage() with PNG, JPEG and JPEG2000 support
- Added: #PB_Memory_NoClear support to Re/AllocateMemory()
- Added: ImageFormat()
- Added: #PB_Editor_WordWrap to EditorGadget()
- Added: Multicharacter comparison in StringField()
- Added: NbOccurrences parameter for ReplaceString()
- Added: PostEvent(), EventData()
- Added: return value to SetCurrentDirectory()
- Added: #PB_String_NoCase mode parameter to FindString()
- Added: #PB_Preference_NoSpace and #PB_Preference_GroupSeparator flags for preferences
- Added: DatabaseColumnIndex()
- Added: #PB_Cipher_URL and #PB_Cipher_NoPadding for Base64Encoder()
- Added: URL compatibility to Base64Decoder()
- Added: SetGadgetItemImage() for all gadget supporting item gadget image
- Added: #PB_Gadget_ScreenCoordinate and #PB_Gadget_WindowCoordinate flag for GadgetX/Y()
- Added: #PB_File_SharedRead (no effect on Linux/OSX), #PB_File_SharedWrite (no effect on Linux/OSX)
- Added: #PB_File_Append and #PB_File_NoBuffering for OpenFile(), ReadFile() and CreateFile()
- Added: #PB_Event_RightClick, #PB_Event_LeftClick and #PB_Event_LeftDoubleClick events
- Added: Optional title parameter to OpenConsole()
- Added: #PB_ScrollArea_ScrollStep added for ScrollAreaGadget()
- Added: #PB_Ignore for ResizeImage()
- Added: Bind a specific IP to CreateNetworkServer()
- Added: Timeout, LocalIP$ and LocalPort parameter to OpenNetworkConnection()
- Added: #PB_NetworkEvent_Disconnect support for NetworkClientEvent()
- Added: #PB_Unicode, #PB_Ascii and #PB_UTF8 support to SendNetworkString()
- Added: #PB_String_MaximumLength attribute for StringGadget()
- Added: #PB_Event_DeactivateWindow support
- Added: #PB_EventType_Change support for EditorGadget()
- Added: #PB_Relative/#PB_Absolute flag for FileSeek()
- Added: 'Offset' and 'Length' parameters to SHA1/MD5/CRC32FileFingerprint()
- Added: GetSoundPosition(), SetSoundPosition(), SoundLength(), PauseSound(), ResumeSound()
- Added: SoundStatus(), GetSoundFrequency()
- Added: #PB_All support for SoundVolume()
- Added: SetGadgetItemState() support for ExplorerListGadget()
- Added: InputRequester add close
- Added: InputRequester() added #PB_InputRequester_Password flag
- Added: Random() added optional minimum value
- Added: SetGadgetItemText() for ListIconGadget(): handling of chr(10) as in AddGadgetItem()
- Added: made OpenWindowedScreen() stretch parameters optional
- Added: ScreenWidth(), ScreenHeight(), ScreenDepth()
- Added: SMTP AUTH support to mail library
- Added: optional parameters to RemoveMailRecipient(), ability to remove all recipients
- Added: ReadString(#File [, Flags [, Length]]) : length and #PB_File_IgnoreEOL support
- Added: #PB_Window_InnerCoordinate support to WindowX/Y()
- Added: #PB_Window_FrameCoordinate support to WindowWidth()/Height()
- Added: #PB_Image_Raised support to ImageGadget()
- Added: Support for FreeXXX(#PB_All) for all free commands
- Added: #PB_Compiler_LineNumbering, #PB_Compiler_InlineAssembly, #PB_Compiler_EnableExplicit
- Added: #PB_Compiler_ExecutableFormat, #PB_Compiler_IsIncludeFile
- Added: #PB_Compiler_IsMainFile, #PB_Compiler_Filename
- Added: Bool() compiler operator. Boolean operations are now forbidden without Bool().
- Added: MacroExpandedCount internal keyword
- Added: UndefineMacro
- Added: Now XIncludeFile also take in account the main file, to avoid double inclusion
- Added: TypeOf() for variable, structure and fields
- Added: Defined(Label, #PB_Label) support
- Added: CompilerElseIf
- Added: Local labels
- Added: Define now behave like Global and accept Dim(), NewMap() and NewList() on the same line
- Added: 'Align' keyword support for structure, with a special #PB_Structure_AlignC value
- Added: autocast of numeric values when string are involved, allowing to concatenate string and numeric in constants
- Added: 'CONSTANTLIST' to Compiler interface
- Added: editing history recording in the IDE to recover previous code states and for crash recovery
- Added: AffectedDatabaseRows(), CheckDatabaseNull() to database library
- Added: new Text3D library
- Added: 'Mode' optional parameter to all ...Yaw/Roll/Pitch() functions
- Added: 'Type' and 'Mode' optional parameter to CreateMesh()
- Added: RayCast(), MouseRayCast(), NormalX(), NormalY(), NormalZ(), ScaleNode()
- Added: UpdateMesh(), EnableManualEntityBoneControl(), MoveEntityBone(), RotateEntityBone(), MeshIndex()
- Added: 'Type' optional parameter to AddSubMesh()
- Added: 'Type' parameter to FinishMesh()
- Added: GetMaterialColor(), GetMaterialAttribute(), ConvertLocalToWorldPosition(), ConvertWorldToLocalPosition()
- Added: MaterialCullingMode(), FetchOrientation(), SetOrientation(), GetX(), GetY(), GetZ(), GetW(), GetLightColor()
- Added: AttachEntityObject(): bone name can be empty, so the object is added directly to the entity

- Changed: renamed SoundFrequency() to SetSoundFrequency()
- Changed: renamed AddMeshVertex() to MeshVertexPosition()
- Changed: renamed LightColor() to SetLightColor()
- Changed: removed all MaterialXXXXColor() replaced by SetMaterialColor()
- Changed: removed all XXXXLocate() replaced by #PB_Absolute flag for MoveXXXX() commands
- Changed: removed ResizeEntity(), replaced by #PB_Absolute flag for ScaleEntity() command, same for ScaleNode()
- Changed: replaced #PB_Sort_ with #PB_ to avoid possible errors
- Changed: disallow native type for pointers
- Changed: StrF/D(), trailing zeros are now automatically removed if no decimals are specified

- Updated: OGRE core has been updated to 1.8.2
- Updated: SQLite updated to 3.7.15.2
- Updated: User-guide: new chapters about dynamic numbering and handling multiple windows added by spikey

- Removed: SendNetworkFile(), ReceiveNetworkFile(), #PB_NetworkEvent_File to avoid possible security hole
- Removed: DirectX7 and NT4 subsystem on Windows
- Removed: SDL subsystem on Linux
- Removed: PowerPC version for OS X

- Optimized: FindString() is up to twice as fast

- Fixed: Many bugs
Quote
14. Februar 2013


PureBasic 5.10 (alle OS)

- Hinzugefügt: Form-Designer ist jetzt in die IDE integriert !
- Hinzugefügt: komplett überarbeitete Packer Bibliothek mit ZIP, BriefLZ, 7z (nur Entpacken), LZMA und JCALG1 (Windows x86 und nur UncompressMemory()) Unterstützung. JCALG1 Unterstützung wurde eingestellt. Archiv-Formate für BriefLZ wurden geändert.
- Hinzugefügt: IPv6 Unterstützung bei der Network Bibliothek. Aktualisierte IPString(), MakeIPAddress(), GetClientIP(), IPAddressField(), ExamineIPAddress() und NextIPAddress(). #PB_Network_IPv6 Flag bei OpenConnection und CreateServer() hinzugefügt. FreeIP() für v6 IP hinzugefügt.
- Hinzugefügt: System-Bibliothek: ComputerName(), UserName(), MemoryStatus(), CountCPUs()
- Hinzugefügt: Zeilenfortsetzungs-Funktion, mit folgenden Operanden: ',' '|' '+' And Or XOr
- Hinzugefügt: Vergleiche mit konstanten Strings werden jetzt zum Zeitpunkt des Kompilierens verarbeitet, was die Verwendung z.B. in CompilerIf ermöglicht.
- Hinzugefügt: CocoaMessage() für OS X
- Hinzugefügt: 'Syntax überprüfen' um den Code nur zu kompilieren, ohne ein Executable zu erstellen/zu starten (/CHECK Switch oder im IDE Compiler Menü)
- Hinzugefügt: Array/List/Map Parameter Unterstützung bei Interface Methoden
- Hinzugefügt: Unterstützung für dynamische Array/List/Map in Strukturen/Interfaces in Residents.
- Hinzugefügt: Unterstützung für #PB_Character, #PB_Unicode, #PB_Ascii und #PB_Integer Flags bei FillMemory()
- Hinzugefügt: #PB_RegularExpression_NoCase Unterstützung bei CreateRegularExpression()
- Hinzugefügt: EncodeImage() mit PNG, JPEG und JPEG2000 Unterstützung
- Hinzugefügt: #PB_Memory_NoClear Unterstützung bei Re/AllocateMemory()
- Hinzugefügt: ImageFormat()
- Hinzugefügt: #PB_Editor_WordWrap beim EditorGadget()
- Hinzugefügt: Vergleich mit mehreren Zeichen bei StringField()
- Hinzugefügt: AnzahlVorkommen Parameter bei ReplaceString()
- Hinzugefügt: PostEvent(), EventData()
- Hinzugefügt: Rückgabewert bei SetCurrentDirectory()
- Hinzugefügt: #PB_String_NoCase Modus Parameter bei FindString()
- Hinzugefügt: #PB_Preference_NoSpace und #PB_Preference_GroupSeparator Flags bei OpenPreferences() und CreatePreferences()
- Hinzugefügt: DatabaseColumnIndex()
- Hinzugefügt: #PB_Cipher_URL und #PB_Cipher_NoPadding bei Base64Encoder(), URL-Kompatibilität bei Base64Decoder() hinzugefügt
- Hinzugefügt: SetGadgetItemImage() bei allen Gadgets, welche Bilder bei den Einträgen unterstützen
- Hinzugefügt: #PB_Gadget_ScreenCoordinate und #PB_Gadget_WindowCoordinate Flag bei GadgetX/Y()
- Hinzugefügt: #PB_File_SharedRead (kein Effekt auf Linux/OSX), #PB_File_SharedWrite (kein Effekt auf Linux/OSX), #PB_File_Append und #PB_File_NoBuffering bei OpenFile(), ReadFile() und CreateFile()
- Hinzugefügt: #PB_Event_RightClick, #PB_Event_LeftClick und #PB_Event_LeftDoubleClick Ereignisse
- Hinzugefügt: optionaler Titel-Parameter bei OpenConsole()
- Hinzugefügt: #PB_ScrollArea_ScrollStep beim ScrollAreaGadget()
- Hinzugefügt: #PB_Ignore bei ResizeImage()
- Hinzugefügt: eine bestimmte IP an CreateNetworkServer() binden
- Hinzugefügt: Timeout, LokaleIP$ und LokalerPort Parameter bei OpenNetworkConnection()
- Hinzugefügt: #PB_NetworkEvent_Disconnect Unterstützung bei NetworkClientEvent()
- Hinzugefügt: #PB_Unicode, #PB_Ascii und #PB_UTF8 Unterstützung bei SendNetworkString()
- Hinzugefügt: #PB_String_MaximumLength Attribut bei StringGadget()
- Hinzugefügt: #PB_Event_DeactivateWindow Unterstützung
- Hinzugefügt: #PB_EventType_Change Unterstützung bei EditorGadget()
- Hinzugefügt: #PB_Relative/#PB_Absolute Flag bei FileSeek()
- Hinzugefügt: 'Offset' und 'Länge' Parameter bei SHA1/MD5/CRC32FileFingerprint()
- Hinzugefügt: GetSoundPosition(), SetSoundPosition(), SoundLength(), PauseSound(), ResumeSound(), SoundStatus(), GetSoundFrequency()
- Hinzugefügt: #PB_All Unterstützung bei SoundVolume()
- Hinzugefügt: SetGadgetItemState() Unterstützung bei ExplorerListGadget()
- Hinzugefügt: InputRequester schließen
- Hinzugefügt: #PB_InputRequester_Password Flag bei InputRequester()
- Hinzugefügt: optionaler Minimalwert bei Random()
- Hinzugefügt: SetGadgetItemText() bei ListIconGadget(): Verwendung von Chr(10) wie bei AddGadgetItem()
- Hinzugefügt: Stretch-Parameter bei OpenWindowedScreen() jetzt optional
- Hinzugefügt: ScreenWidth(), ScreenHeight(), ScreenDepth()
- Hinzugefügt: SMTP AUTH Unterstützung bei der Mail Bibliothek
- Hinzugefügt: optionale Parameter bei RemoveMailRecipient(), Möglichkeit zum Entfernen aller Empfänger
- Hinzugefügt: ReadString(#File [, Flags [, Länge]]) : Längen- und #PB_File_IgnoreEOL Unterstützung
- Hinzugefügt: #PB_Window_InnerCoordinate Unterstützung bei WindowX/Y()
- Hinzugefügt: #PB_Window_FrameCoordinate Unterstützung bei WindowWidth()/Height()
- Hinzugefügt: #PB_Image_Raised Unterstützung beim ImageGadget()
- Hinzugefügt: Unterstützung für FreeXXX(#PB_All) bei allen Freigeben-Befehlen
- Hinzugefügt: Compiler-Kontansten: #PB_Compiler_LineNumbering, #PB_Compiler_InlineAssembly, #PB_Compiler_EnableExplicit
- Hinzugefügt: Compiler-Kontansten: #PB_Compiler_ExecutableFormat (mit #PB_Compiler_DLL, #PB_Compiler_Console, #PB_Compiler_Executable)
- Hinzugefügt: Compiler-Kontansten: #PB_Compiler_IsIncludeFile, #PB_Compiler_IsMainFile, #PB_Compiler_Filename (Dateiname ohne Pfad)
- Hinzugefügt: Bool() Compiler-Operator. Boolesche Operationen ohne Bool() sind jetzt verboten.
- Hinzugefügt: MacroExpandedCount internes Schlüsselwort
- Hinzugefügt: UndefineMacro
- Hinzugefügt: XIncludeFile berücksichtigt jetzt auch die Haupt-Datei, um doppeltes Einfügen zu vermeiden, wenn die Haupt-Datei von einer anderen Datei eingefügt ("included") wird
- Hinzugefügt: TypeOf() für Variablen, Strukturen und Felder
- Hinzugefügt: Defined(Sprungmarke, #PB_Label) Unterstützung
- Hinzugefügt: CompilerElseIf
- Hinzugefügt: lokale Sprungmarken
- Hinzugefügt: Define verhält sich jetzt wie Global und akzeptiert Dim(), NewMap() und NewList() auf der gleichen Zeile
- Hinzugefügt: Unterstützung des 'Align' Schlüsselworts bei Strukturen, mit einem speziellen #PB_Structure_AlignC Wert um das 'Padding' bei C-Strukturen zu imitieren
- Hinzugefügt: Auto-Casting von numerischen Werten, wenn Strings beteiligt sind - erlaubt das Verketten von Strings und numerischen Konstanten
- Hinzugefügt: 'CONSTANTLIST' beim Compiler Interface
- Hinzugefügt: Aufzeichnen der Bearbeitungs-/Versionsgeschichte in der IDE um frühere Code-Zustände wiederherstellen zu können und zur Wiederherstellung nach einem Systemabsturz (siehe Datei -> Sitzungsgeschichte)
- Hinzugefügt: AffectedDatabaseRows(), CheckDatabaseNull() bei der Database Bibliothek
- Hinzugefügt: neue Text3D Bibliotheky
- Hinzugefügt: optionaler Parameter 'Modus' bei allen ...Yaw/Roll/Pitch() Funktionen
- Hinzugefügt: optionale 'Typ' und 'Modus' Parameter bei CreateMesh()
- Hinzugefügt: RayCast(), MouseRayCast(), NormalX(), NormalY(), NormalZ()
- Hinzugefügt: UpdateMesh(), EnableManualEntityBoneControl(), MoveEntityBone(), RotateEntityBone(), MeshIndex()
- Hinzugefügt: optionaler Paramter 'Typ' bei AddSubMesh()
- Hinzugefügt: 'Typ' Parameter bei FinishMesh()
- Hinzugefügt: ScaleNode(), GetMaterialColor(), GetMaterialAttribute(), ConvertLocalToWorldPosition(), ConvertWorldToLocalPosition()
- Hinzugefügt: MaterialCullingMode(), FetchOrientation(), SetOrientation(), GetX(), GetY(), GetZ(), GetW(), GetLightColor()
- Hinzugefügt: AttachEntityObject(): Name des 'Bone' (Knochen) kann leer bleiben, womit das Objekt direkt zum Entity hinzugefügt wird

- Geändert: SoundFrequency() in SetSoundFrequency() umbenannt
- Geändert: AddMeshVertex() in MeshVertexPosition() umbenannt
- Geändert: LightColor() in SetLightColor() umbenannt
- Geändert: alle MaterialXXXXColor() entfernt, ersetzt durch SetMaterialColor()
- Geändert: alle XXXXLocate() entfernt, ersetzt durch #PB_Absolute Flag bei den MoveXXXX() Befehlen
- Geändert: ResizeEntity() entfernt, ersetzt durch #PB_Absolute Flag beim ScaleEntity() Befehl, ebenso bei ScaleNode() und ScaleText3D()
- Geändert: #PB_Sort_ ersetzt durch #PB_, um mögliche Fehler zu vermeiden
- Geändert: Native Typen bei Zeigern (Pointern) sind nicht mehr erlaubt
- Geändert: StrF/D(), Nullen werden jetzt automatisch entfernt, wenn keine Dezimalstellen angegeben werden

- Aktualisiert: Update des OGRE Core auf 1.8.2
- Aktualisiert: SQLite Version (3.7.15.2)
- Aktualisiert: Einsteiger-Kapitel: neue Kapitel über dynamische Nummerierung und das Verwalten mehrerer Fensters hinzugefügt durch spikey

- Entfernt: SendNetworkFile(), RecieveNetworkFile(), #PB_NetworkEvent_File, um mögliche Sicherheitslücke zu vermeiden
- Entfernt: DirectX7 und NT4 Subsystem auf Windows
- Entfernt: SDL Subsystem auf Linux
- Entfernt: PowerPC Version auf OS X

- Optimiert: FindString() ist jetzt fast doppelt so schnell

- Repariert: viele Bugs

Theo Gottwald

#24
Purebasic 5.20 .... just need it for x64.

Quote
17th Sept. 2013


PureBasic 5.20 (all OS)

- Added: Module support for the compiler
- Added: Runtime library
- Added: Dialog library
- Added: GTK3 subsystem for Linux
- Added: DirectX11 subsystem for Windows (doesn't not support the 3D engine for now)
- Added: Named enumeration support to allow continuing a previous enumeration
- Added: JoystickName(), JoystickZ()
- Added: Optional #PB_Relative flag to JoystickX/Y/Z() to have more precise values
- Added: Optional pad number to JoystickX/Y/Z() to handle more complex gamepads
- Added: ZoomSprite() now accepts #PB_Default as Width/Height to reset to initial sprite size
- Added: 'Color' and 'Intensity' parameter to DisplayTransparentSprite()
- Added: ClipSprite() now support #PB_Default for individual parameter
- Added: #PB_Sprite_PixelCollision flag to CreateSprite(), LoadSprite() to enable pixel collision
- Added: Zoom support to SpritePixelCollision() and SpriteCollision()
- Added: OpenGL support for SpriteBlending() (warning, it just wraps OpenGL mode, so it can behave different than DirectX)
- Added: 32-bit support for SpriteOutput() for DX and OpenGL
- Added: #PB_EventType_Focus and #PB_EventType_LostFocus support to EditorGadget()
- Added: #PB_EventType_RightClick support to ListViewGadget()
- Added: #PB_EventType_Change support to PanelGadget() and DateGadget()
- Added: #PB_Prototype and #PB_Module support to Defined()
- Added: All Init() functions can be called more than once without issue (like InitSound(), InitNetwork() etc.)
- Added: #PB_FileSystem_Force support to DeleteFile()
- Added: #PB_FileSystem_NoExtension support to GetFilePart()
- Added: Back color parameter to CreateImage()
- Added: #PB_Entity_NbSubEntities to GetEntityAttribute()
- Added: MeshIndexCount(), SetRenderQueue(), FetchEntityMaterial(), GetMeshData(), SetMeshData()
- Added: CPUName(), Un/BindEvent(), Un/BindGadgetEvent(), Un/BindMenuEvent()
- Added: Previous location is displayed when declaring a structure, interface, prototype or procedure twice.
- Added: 2 license files to easy add the needed information when shipping PB programs (see reference documentation)
- Added: Bool() is now evaluated at compile time if the whole expression is constant
- Added: Debugger check for SortStructuredList() and SortList() to ensure the specified list is of correct type
- Added: Linux executables created on new distribution should still work on old linux.
- Added: #PB_EventType_FirstCustomValue for use with PostEvent()
- Added: CameraFollow(), ExamineWorldCollisions(), NextWorldCollision(), FirstWorldCollisionEntity(), SecondWorldCollisionEntity()
- Added: WorldCollisionContact(), WorldCollisionNormal(), WorldCollisionAppliedImpulse()
- Added: BuildMeshTangents(), MeshVertexTangent(), CopyTexture()
- Added: Pitch(), Roll(), Yaw()
- Added: #PB_Gadget_RequiredSize support for GadgetWidth/Height()
- Added: #PB_Entity_LinearSleeping, #PB_Entity_AngularSleeping, #PB_Entity_DeactivationTime, #PB_Entity_IsActive,
- Added: #PB_Entity_AngularVelocityX/Y/Z, #PB_Entity_ScaleX/Y/Z, #PB_Entity_AngularVelocity, #PB_Entity_HasContactResponse for Get/SetEntityAttribute()

- Optimized: Pixel sprite collision routines are now much faster with DirectX
- Optimized: More peephole optimizations on x64 assembler output
- Optimized: Faster compilation for big programs
- Optimized: Linux build server have been upgraded, now using a better GCC which produce better code.

- Changed: SpinGadget() EventType are now #PB_EventType_Up and #PB_EventType_Down instead of -1 and 1.
- Changed: renamed ZoomSprite3D() to ZoomSprite()
- Changed: renamed TransformSprite3D() to TransformSprite()
- Changed: renamed RotateSprite3D() to RotateSprite()
- Changed: renamed Sprite3DQuality() to SpriteQuality()
- Changed: renamed Sprite3DBlending() to SpriteBlending()
- Changed: renamed the whole 'Module' library to 'Music'
- Changed: renamed Frame3DGadget() to FrameGadget()
- Changed: renamed Frame3DGadget3D() to FrameGadget3D()
- Changed: renamed #PB_Shortcut_Prior to #PB_Shortcut_PageUp and #PB_Shortcut_Next to #PB_Shortcut_PageDown
- Changed: Packer plugin constant renamed to #PB_PackerPlugin_XXX
- Changed: RayCollide() now returns the colliding #Entity.

- Updated: WebGadget() on Windows doesn't needs ATL.dll anymore
- Updated: zlib to 1.2.8
- Updated: pqlib (PostgreSQL) to 9.2.4
- Updated: ziplib to 0.11.1
- Updated: SCNotification scintilla structure

- Removed: Mozilla ActiveX support for WebGadget() on Windows as the last ActiveX version is way too old (2005)
- Removed: Sprite3D library (merged with regular sprite library)
- Removed: Palette library (outdated)
- Removed: RenderMovieFrame() and #PB_Movie_Rendered (outdated)
- Removed: DisplayTranslucentSprite() -> replaced with 'Alpha' parameter for DisplayTransparentSprite()
- Removed: DisplaySolidSprite() -> replaced with 'Color' parameter for DisplayTransparentSprite()
- Removed: DisplayRGBFilter() -> can be replaced with a zoomed sprite with color
- Removed: DisplayShadowSprite() -> can be replaced with DisplayTransparentSprite() with color
- Removed: StartSpecialFX(), StopSpecialFX(), DisplayAlphaSprite(), ChangeAlphaIntensity(), UseBuffer()
- Removed: Carbon subsystem on OS X, it was too old be used with new libs

- Fixed: Many bugs

Commercial GUI Enhancement: Pro-GUI for PureBasic
Real Source
Pure-Area - lots of code snippets

Edwin Knoppert

Quote from: Aslan Babakhanov on March 27, 2012, 09:57:45 PM
PureBasic' Compiler Options is complete for BASIC compiler. It's really nice.

Note that you can still use the free PBDev tool from my site to get started more easily with purebasic.
Many purebasic fokes don't like it since it generates to much code, go figure..., it's clear that they are hobbyists otherwise they would not compare it based on a few kb.
However once you get the drift you can still move on to plain purebasic code.

Theo Gottwald

I am still a bit lost in PureBasic Code, also it does not allow GOSUB in Procedures, which i often use.
On the other side its amazing what they added lately about new features. AND if i need x64 its the thing that is somehow "nearest to Powerbasic"
as i see it.

Patrice Terrier

#27
Quotesomehow "nearest to Powerbasic"
Yes, tied to one single man, and full of gadgets :)
Patrice Terrier
GDImage (advanced graphic addon)
http://www.zapsolution.com

Theo Gottwald

A lot of "Gadgets" :-). Anyway ... even if Fred wins the Lotto tomorrow, i have a working Purebasic x64 here in my box.
Therefore the "tied to one man" does not look like a problem, as ist not with Powerbasic x32.
The only Problem with PowerBasic is that there is no PBx64. Its not that Bob decided to enter an elevated level.

Theo Gottwald

The Blog from Fred shgows interesting aspecrs of developement:

PureBasic Blog