PureBasic 5.40 beta 1 est disponible sur votre compte
Le 2015-08-31 16:24:56, par comtois, Responsable Purebasic
La version 5.40 beta 1 est disponible sur votre compte. Je mettrai la liste des nouveautés traduites en français pour la version finale.
Hello folks,
It has been a while since the last PureBasic update, but it's now ready to roll ! It brings some important changes, but also a lot of new features:
The english documentation is up-to-date, and please check the new "Migration from and older PureBasic version" doc page to see all changes needed to update easily. This version introduce a new "import" resident file format, which uses an Import/EndImport block and create a file from it. It replaces the old ".pbl" format which is no more supported, and allow imported function arguments to be typed with pseudotype and more. We also published all the API imports file on the same SVN than the documention (available for all in read-only), so if you want to help to improve them (by putting the right type where needed, or changing the argument names to be more explicits) you can check out it and publish the patches: svn://svn.purebasic.fr/home/svn/Documentation/v5.40
This will be the last version supporting the ASCII mode, and will be maintained until 1 september 2017.
Have fun with PureBasic !
The Fantaisie Software Team
It has been a while since the last PureBasic update, but it's now ready to roll ! It brings some important changes, but also a lot of new features:
- - Added new Vector 2D library
- - Added new CGI library with standard and FastCGI support
- - Added Literal string escape support with the '~' operator (ex: a$ = ~"Hello\nWorld\n"
- - Added EscapeString()/UnescapeString() function to allow escaping operation on any strings (variables etc.)
- - Added EnumerationBinary to create bitmask enumeration automatically
- - Added database parameter binding to ease request construction
- - Added SetDatabaseBlob(), SetDatabaseFloat(), SetDatabaseDouble(), SetDatabaseLong()
- - Added SetDatabaseQuad(), SetDatabaseString(), SetDatabaseNull()
- - Added SHA2 and SHA3 (224/256/384/512-bit) support to Cipher library
- - Added StringFingerprint()
- - Added CRC32 support for StartFingerprint()
- - Added ReceiveHTTPMemory(), IsJoint()
- - Added RefreshDialog() to recalc dimension after a text change or similar
- - Added "group" XML attribute for 'option' dialog gadget, to specify explicitly a group
- - Added HTTPS and simple auth support for ReceiveHTTPFile() and GetHTTPHeaders()
- - Added Auto redirect support for ReceiveHTTPFile() and ReceiveHTTPMemory()
- - Added ASynchronous mode for ReceiveHTTPFile() and ReceiveHTTPMemory()
- - Added HTTPProgress(), AbortHTTP() and FinishHTTP() to control async mode
- - Added HTTPS/TLS support for SendMail()
- - Added FlushPreferenceBuffers()
- - Added CopyDebugOutput() to copy the debug output to the clipboard from code
- - Added 7z archive creation
- - Added tar (gz and bzip2) archive support for creation and decompression
- - Added Full path in IDE recent files menu
- - Added #PB_ProgressBar_Unknown for SetGadgetState() to indicate unknown progress
- - Added #PB_UTF8/Ascii/Unicode support to ReadCharacter() and WriteCharacter()
- - Added #PB_UTF8 support to URLEncoder() and URLDecoder (now the default mode)
- - Added Windows 8.1/10 and OS X 10.9/10/11 support to OSVersion()
- - Added #PB_Editor_xxx constants when using the 'Version' info on Windows
- - Added #PB_Program_Ascii/Unicode/UTF8 support to RunProgram()
- - Added linux/osx style flags for the commandline compiler on Windows to ease cross-platform scripts
- - Added: #PB_File_SharedWrite support to ReadFile() and CreateFile()
- - Added: 'IMPORTLIST' compiler interface to get all the predefined API functions
- - Added: #Null$ special string constant to affect a real null value to a string (to free it completely). It can be
- used as well for API function which sometimes accept NULL instead of a string address.
- - Updated the Linux printer lib to use native GtkPrint instead of GnomePrint
- - Updated the Windows compiler to VC++ 2013 for better code generation
- - Updated SQLite to 3.8.10.2
- - Fixed Zip archive support
- - Fixed send mail and http request issues
- - The default GTK version is now GTK3 on Linux. A gtk2 subsystem has been added for backward compatibility.
- - The default string format for RunProgram() read/writestring is not UTF8 instead of Unicode
- - Changed the Cipher lib to be modular (now UseMD5Fingerprint() and such commands needs to be used)
- - Renamed ExamineFingerprint() to StartFingerprint()
- - Renamed NextFingerprint() to AddFingerprintBuffer()
- - Removed RemovePackFile()
- - Changed: the SendMail() 'Asynchronous' parameter has been replaced by the #PB_Mail_Asynchronous flag.
- - Removed: #PB_Packer_CompressedSize support for ZIP and 7z archives with PackerEntrySize()
- - Removed: AvailableScreenMemory()
- - Fixed: 'CONSTANTLIST' compiler interface, now string constants are returned as escaped strings.
- - Changed: DLLImporter has been removed and .pbl files are no more supported. New 'import library' files can be
- created using the '/IMPORT' switch of the pbcompiler.
The english documentation is up-to-date, and please check the new "Migration from and older PureBasic version" doc page to see all changes needed to update easily. This version introduce a new "import" resident file format, which uses an Import/EndImport block and create a file from it. It replaces the old ".pbl" format which is no more supported, and allow imported function arguments to be typed with pseudotype and more. We also published all the API imports file on the same SVN than the documention (available for all in read-only), so if you want to help to improve them (by putting the right type where needed, or changing the argument names to be more explicits) you can check out it and publish the patches: svn://svn.purebasic.fr/home/svn/Documentation/v5.40
This will be the last version supporting the ASCII mode, and will be maintained until 1 september 2017.
Have fun with PureBasic !
The Fantaisie Software Team
-
comtoisResponsable PurebasicStarting with 5.40, we changed the way of importing API functions (now it's much more robust and flexible), so we need to have strong typing of every args (especially strings). If you encounter one API call which is incorrectly declared, just paste it here and we will fix it.
Source de l'informationle 01/09/2015 à 11:36 -
comtoisResponsable PurebasicExplications de Fred pour utiliser la biblio CGI :To test CGI on Windows, I installed "easyphp" http://www.easyphp.org/ , which install all needed tools, then added this to the apache conf file:
Code : ProxyPass /testfcgi/ fcgi://localhost:5600/
Code : 1
2
3LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
Then compile the example found in WaitFastCGIRequest() doc and it should work.
On linux, you need to do the same (installing apache and enabling mod proxy fastcgi)le 01/09/2015 à 12:46 -
comtoisResponsable PurebasicUn utilisateur a comparé les différents formats de compression disponibles avec la 5.40, voici son test et ses résultats :Purebasic spoils us with 5 different built-in compression codecs (6 if you count the uncompressed bundling of TAR, or 7 if you count the deprecated x86-only JCALG1)
These are: ZIP, LZMA, BriefLZ, TAR.GZip, and TAR.BZip2 (ps. Fred it would be nice if BZIP2 and GZIP were available on their own, rather than having to use TAR bundling! TAR is ewww but BZIP2 is awesome!)
So here's a simple test program to help find out which of Purebasic's built-in packers is best suited to the data we want to compress/decompress.
The variables are PACK TIME, UNPACK TIME, PACK SIZE/RATIO, and PB EXE SIZE. Each packer of course has its own strengths and weaknesses!
Here's the results of a 91 megabyte SQL dump (UTF8 textfile). Tested with Purebasic x86 5.40 LTS in Windows XP. I havent had a chance to do x64 test.
I ran each test twice and only recorded the 2nd result to ensure 'even caching':Code : 1
2
3
4
5
6
7ZIP LZMA BriefLZ TAR TAR.GZ TAR.BZ2 "Winning" order (TAR excluded): -------------------------------------------------------------- ---------------- PACK TIME 3175ms 67647ms 1653ms 1141ms 3325ms 9464ms BriefLZ, ZIP, TAR.GZ, TAR.BZ2, LZMA UNPACK TIME 1532ms 2254ms 2273ms 1252ms 1332ms 3145ms TAR.GZ, ZIP, LZMA, BriefLZ, TAR.BZ2 PACK SIZE 25218579 18887882 34247532 94030848 25218522 19782588 PACK RATIO 26.820% 20.087% 36.422% 100.002% 26.820% 21.039% LZMA, TAR.BZ2, TAR.GZ, ZIP, BriefLZ PB.EXE SIZE 207,872 291,328 15,872 219,648 219,648 219,648 BriefLZ, ZIP, TAR.GZ/TAR.BZ2, LZMA
ZIP: A great balance of compression and speed.
LZMA: Extremely slow compression, but thats the price you pay for the very best compression ratio.
BriefLZ: Extremely good performance in both packing & unpacking, and the resulting exe is still TINY unlike the others. 36% compression to ZIPs 26% means it's not great, but still pretty good.
TAR.GZ: On par with ZIP.
TAR.BZ2: Compression ratio so very close to LZMA yet compression speed is 7x faster. Decompression 1.4x slower than LZMA however.
Quite a nice menu to choose from, depending on ours projects individual needs
One of the nice surprises I found was that the BriefLZ codec only adds 10kb to the exe - thats with full compress + decompress support! And its speed of both is very good, especially compression but still respectable decompress speed. Its compression ratio is also quite respectable too, compressing my 91mb sample file to 36%. Compared to ZIPs 27% its not great but still pretty good, and overall I think it makes an excellent packer for executable resources!Code : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77#PACKER = 1 ;1=ZIP 2=LZMA 3=BriefLZ 4=TAR 5=TAR.GZ 6=TAR.BZ2 sFileToPack.s = "c:\temp\91mb.txt" ;Test file to compress. Ensure you have write access to c:\temp\ sFileToSave.s = "c:\temp\mytemparchive" ;Save to this archive file (minus extension) CompilerIf #PB_Compiler_Debugger = 1 MessageRequester("Disable the debugger first", "Error": End ;in future ill use CompilerError CompilerEndIf CompilerIf #PACKER = 1 UseZipPacker() sSaveFile.s = sFileToSave + ".zip" PackerId = #PB_PackerPlugin_Zip sResult.s = "Packer: ZIP" + #CRLF$ CompilerElseIf #PACKER = 2 UseLZMAPacker() sSaveFile.s = sFileToSave + ".lzma" PackerId = #PB_PackerPlugin_Lzma sResult.s = "Packer: LZMA" + #CRLF$ CompilerElseIf #PACKER = 3 UseBriefLZPacker() sSaveFile.s = sFileToSave + ".brieflz" PackerId = #PB_PackerPlugin_BriefLZ sResult.s = "Packer: BriefLZ" + #CRLF$ CompilerElseIf #PACKER = 4 UseTARPacker() sSaveFile.s = sFileToSave + ".tar" PackerId = #PB_PackerPlugin_Tar sResult.s = "Packer: TAR" + #CRLF$ CompilerElseIf #PACKER = 5 UseTARPacker() sSaveFile.s = sFileToSave + ".tar.gz" PackerId = #PB_PackerPlugin_Tar | #PB_Packer_Gzip sResult.s = "Packer: TAR.GZ" + #CRLF$ CompilerElseIf #PACKER = 6 UseTARPacker() sSaveFile.s = sFileToSave + ".tar.bz2" PackerId = #PB_PackerPlugin_Tar | #PB_Packer_Bzip2 sResult.s = "Packer: TAR.BZ2" + #CRLF$ CompilerElse MessageRequester("Invalid packer id","Error"): End CompilerEndIf DeleteFile(sSaveFile) OrigSize.i = FileSize(sFileToPack) hPack.i = CreatePack(#PB_Any, sSaveFile, PackerId) If hPack = 0 MessageRequester("Error","CreatePack failed") Else Time1.i = GetTickCount_() AddPackFile(hPack, sFileToPack, "packed.dat") TimePack.i = GetTickCount_() - Time1 ClosePack(hPack) hPack.i = OpenPack(#PB_Any, sSaveFile, PackerId) If hPack = 0 MessageRequester("Error","OpenPack failed") Else DeleteFile("c:\~extract.dat") Time1.i = GetTickCount_() Result = ExaminePack(hPack) NextPackEntry(hPack) Unpacked.i = UncompressPackFile(hPack, "c:\~extract.dat") TimeUnpack.i = GetTickCount_() - Time1 ClosePack(hPack) EndIf sResult = sResult + "Packed in " + Str(TimePack) + "ms" + #CRLF$ + "Unpacked in " + Str(TimeUnpack) + "ms" + #CRLF$ + "Packsize=" + Str(FileSize(sSaveFile)) + " (" + StrF((FileSize(sSaveFile)/ OrigSize) * 100,3) + "%)" + #CRLF$ + "Origsize=" + Str(OrigSize) + " Unpacked=" + Str(Unpacked) + #CRLF$ + "Executable size=" + Str(FileSize(ProgramFilename())) MessageRequester("Result", sResult) SetClipboardText(sResult) EndIf
le 01/09/2015 à 12:52 -
comtoisResponsable PurebasicFred vient de mettre en place un WebSVN pour consulter les fichiers de la doc sans Subversion.I just setup a WebSVN to browse the public PureBasic SVN:
http://svn.purebasic.fr:8080/websvn
You can find all the Windows API imports in Imports/WindowsCode : 1
2
3
4
5
6
7
8
9
10
11
12
13Import "Advapi32.lib" RegCloseKey_(hKey) RegConnectRegistry_(lpMachineName.s, hKey, *phkResult) RegCreateKey_(hKey, lpSubKey.s, *phkResult) RegCreateKeyEx_(hKey, lpSubKey.s, Reserved, lpClass.s, dwOptions, samDesired, lpSecurityAttributes.s, *phkResult, *lpdwDisposition) RegDeleteKey_(hKey, lpSubKey.s) RegDeleteValue_(hKey, lpValueName.s) RegEnumKey_(hKey, dwIndex, *lpName, cchName) RegEnumKeyEx_(hKey, dwIndex, *lpcName, lpReserved, *lpClass, *lpcClass, *lpftLastWriteTime) RegEnumValue_(hKey, dwIndex, *lpValueName, *lpcchValueName, lpReserved, *lpType, *lpData, *lpcbData) RegFlushKey_(hKey) RegGetKeySecurity_(hKey, SecurityInformation, *pSecurityDescriptor, *lpcbSecurityDescriptor) EndImport
le 01/09/2015 à 14:06 -
comtoisResponsable PurebasicUne nouvelle beta est disponible sur votre compte, elle corrige pas mal de bogues et comporte quelques nouvelles fonctions 3D.Beta 2 is out ! It should include all fixed bugs since beta 1 and add some 3D related commands:
- - Added: CreateCone(), CameraCustomParameter(), ResizeCamera()
- - Added: #PB_Entity_DisableContactResponse and #PB_Entity_EnableContactResponse for SetEntityAttribute()
- - Added: #PB_Entity_ConeBody, #PB_Entity_PlaneBody
- - Added: FreeEntityBody(), FreeTerrainBody()
- - Added: ApplyEntityTorque(), ApplyEntityTorqueImpulse()
- - Added: Added 'CollisionGroup' and 'CollisionMask' parameter for RayCollide()
- - Renamed: EntityPhysicBody() to CreateEntityBody()
- - Renamed: TerrainPhysicBody() to CreateTerrainBody()
le 03/09/2015 à 17:00 -
comtoisResponsable PurebasicUne nouvelle beta est disponible sur votre compte, elle corrige pas mal de bogues et comporte quelques nouveautés.Beta 3 is available ! It should include all fixed bugs since beta 2 and add a few stuffs:
- Added: #PB_Ascii, #PB_UTF8 and #PB_Unicode support to Create/Open/ReadFile() to set the default write/read mode
- Added: #PB_ByteLength flag for PeekS() and #PB_UTF8 (only)le 04/09/2015 à 16:54 -
comtoisResponsable PurebasicJ'ai laissé passer quelques bêtas, nous en sommes à la beta 7, elle est disponible sur votre compte.Hello folks,
Beta 7 is out and should bring more fixes, especially on OS X. Have fun !
OK, the quick fix was half baked, so hopefully beta 6 will solve it completely. Happy testing !
Beta 5 is out and only fix one bug with API and string concatenation (which could prevent further testing). On a side note, we have signed the OS X apps since the 5.40 beta, can OS X users tests if it works with gatekeeper activated ? The IDE should open after displaying a warning message without changing the default security features.
Beta 4 is available ! It should include many bug fixes since beta 3. Also some minor additions:
- Added: #Empty$ constant
- Added: #PB_ByteLength support to MemoryStringLength()
- Changed: The DotPath(), DashPath() & CustomDashPath() commands now have an optional 'StartOffset' parameter
- Changed: The 'Distance' parameter of DotPath() has been changed: It now refers to the distance between the center of each dot (not the space between the dots)le 22/09/2015 à 20:12 -
comtoisResponsable PurebasicLa beta 8 est disponible sur votre compte, la version finale ne devrait pas tarder.
Beta 8 is out and brings more fixes, especially on Linux and libcurl. Don't hesitate to test it with your projects, as we are getting closer to release, thanks !le 25/09/2015 à 17:30 -
comtoisResponsable PurebasicLa beta 10 est disponible sur votre compte, c'est le moment de tester à fond, la version finale ne devrait plus tarder.Beta 10 is out and should iron out the lastest important fixes before the release. Don't hesitate to test it with your projects, thanks !
Beta 9 is out and brings more fixes. Don't hesitate to test it with your projects, as we are getting closer to release, thanks !le 12/10/2015 à 18:00