PureBasic 5.40 beta 1 est disponible sur votre compte

Le , 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:

  • - 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



Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de comtois comtois - Responsable Purebasic https://www.developpez.com
le 01/09/2015 à 11:36
Starting 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.

La façon d'importer les fonctions de l'API change à partir de la 5.40. Le typage est plus strict que dans les versions précédentes, aussi si vous constatez que la déclaration d'une fonction n'est pas correcte, n'hésitez pas à signaler le problème ici pour qu'il soit corrigé.

Source de l'information
Avatar de comtois comtois - Responsable Purebasic https://www.developpez.com
le 01/09/2015 à 12:46
Explications 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 : Sélectionner tout
ProxyPass /testfcgi/ fcgi://localhost:5600/
and uncommented the lines:

Code : Sélectionner tout
1
2
3
 
LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
Once restarted, apache should redirect the url http://localhost/testfcgi to the port 5600

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)

Source de l'information
Avatar de comtois comtois - Responsable Purebasic https://www.developpez.com
le 01/09/2015 à 12:52
Un 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 : Sélectionner tout
1
2
3
4
5
6
7
                ZIP        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
So, from this one test with this dataset, we can summarize:
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 : Sélectionner tout
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
Avatar de comtois comtois - Responsable Purebasic https://www.developpez.com
le 01/09/2015 à 14:06
Fred 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/Windows

C'est utile pour ceux qui veulent contribuer à l'amélioration des déclarations des fonctions API, voir l'exemple de ts-soft ci-dessous :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
Import "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
Source de l'information
Avatar de comtois comtois - Responsable Purebasic https://www.developpez.com
le 03/09/2015 à 17:00
Une 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()

Avatar de comtois comtois - Responsable Purebasic https://www.developpez.com
le 04/09/2015 à 16:54
Une 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)

Avatar de comtois comtois - Responsable Purebasic https://www.developpez.com
le 22/09/2015 à 20:12
J'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)

Avatar de comtois comtois - Responsable Purebasic https://www.developpez.com
le 25/09/2015 à 17:30
La 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 !

Avatar de comtois comtois - Responsable Purebasic https://www.developpez.com
le 12/10/2015 à 18:00
La 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 !

Offres d'emploi IT
Architecte électronique de puissance expérimenté H/F
Safran - Ile de France - Villaroche - Réau
Responsable technique java/jee H/F
Capgemini - Midi Pyrénées - Toulouse (31000)
Architecte et intégrateur scade/simulink H/F
Safran - Ile de France - Vélizy-Villacoublay (78140)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique PureBasic : comtois -