8th May 2006
PureBasic V4.00 (Windows)
The now famous, hyped version 4.00 of PureBasic is here. Just judge by yourself, there
is quite a lot of new and sexy looking features. And there is quite a lot of changes as well,
as we took the opportunity to fix long time standing issues by reworking a bit the commandset,
all for the best. Don't be affraid, it can look a bit massive, but you will still feel at home
as absolutely nothing changed about the programming logic. To consult the changes done to the
libraries, click
here. Enjoy !
- Added: Native unicode support
- Added: Subsystems support
- Added: Unlimited length strings in both ascii and unicode mode
- Added: Thread safe commandset and strings
- Added: Character type (.c)
- Added: Double type (.d)
- Added: Quad type (.q)
- Added: 'XOr' and 'Not' logicals operators
- Added: Fixed string type (String${#Number})
- Added: Macro/EndMacro - single and complex mode
- Added: With/EndWith for cleaner code
- Added: Assign possibility to Static (quite important), Protected and Global: "Global a = 5"
- Added: It's now possible to create a linkedlist of pointer
- Added: Support for Global, Protected, Static and Shared arrays and linkedlist: "Global NewList MyList.l()".
NewList alone does not make the list global anymore
- Added: #PB_Compiler_File, #PB_Compiler_Line, #PB_Compiler_Version, #PB_Compiler_Home,
#PB_Compiler_Debugger, #PB_Compiler_ThreadSafe, #PB_Compiler_Unicode
- Added: CompilerError "Message" directive
- Added: @procedure()and ?Label support in Data.l directive
- Added: optional parameters for procedures, interfaces methods, and prototypes
- Added: /CONSTANT Test=Value switch to declare constants on the compiler line
- Added: Swap keyword to quickly swap 2 variables or elements (Swap a,b).
- Added: multiple 'Case' for Select/EndSelect: Case 1, 2, 6 To 20
- Added: 'Prototype' keyword to declare functions pointers easily
- Added: 'ProcedureC' keyword to declare cdecl procedure easily
- Added: Procedure parameters can now have the same name than a global variable
(automatically protected)
- Added: EnableExplicit/DisableExplicit: variables must be declared with Define, Global, Protected, Shared
or Static.
- Added: Defined(Name, Type) compiler function. Type can be #PB_Constant, #PB_Variable, #PB_Array,
#PB_LinkedList, #PB_Structure, #PB_Interface
- Added: ReDim for single and multi-dimensionned arrays
- Added: Import/ImportC/EndImport to import functions and variables from external .lib
- Added: LinkedList and Arrays can now be passed as procedure parameters
- Added: /LINKER flags to provide a command file directly to the linker
- Added: PseudoTypes: p-ascii, p-unicode and p-bstr to use with 'Prototype' and 'Interface'
- Added: Assembler and Linker errors for CLI compiler are now directly displayed
- Added: OpenGL subsystem for multimedia applications (can be combined with NT4 one)
- Added: full alphachannel support for Sprite3D library (trough PNG and TIFF)
- Added: Subsystem() compiler directive to check if a subsystem is in use
- Added: exponent form for constant float: 123.5e-20
- Added: local variables aliases are generated when using '!' raw assembly to ease their referencing (in
the form p.v_variable)
- Added: 'Step over' and 'Step out' features to the debugger
- Added: Process library
- Updated: NT4 support is now done trough a subsystem (DirectX 3)
- Updated: Resident files now supports quad, double, macros and prototypes
- Updated: Many library commands
- Updated: OGRE engine to 1.0.7 version
- Updated: The french documentation has been greatly enhanced
- Updated: File library supports 64 bits files
- Optimized: Smaller executable footprint: 1,5 kb instead of 2,5 kb for the smallest one
- Optimized: Faster float and litteral numeric mixing
- Optimized: File library completely rewritten and now handle a read/write cache for very fast performances.
- Optimized: Procedures are now as small as possible, which should give some speed increase
- Changed: Console library commands can now fully redirected (ie: to write CGI for example)
- Changed: When a numeric parameter is expected, it's not possible to pass a string anymore
- Changed: Temporary purebasic.exe name aren't random anymore, to comply with some firewalls
- Changed: 'DefType' renamed to 'Define'
- Fixed: Internal system functions no more trash reserved registers
- Fixed: Mouse is automatically released in windowed mode when the window loose focus
- Fixed: KeyboardInkey() now handle shift/alt modifiers correctly
- Fixed: IsScreenActive() works correctly for windowed mode as well
- Fixed: A lot of small/medium issues which have arosen since the last version