Topic: Writing 'WB Compatible Builder', questions about WinBuilder language  (Read 2055 times)

0 Members and 1 Guest are viewing this topic.

Re: Writing 'WB Compatible Builder', questions about WinBuilder language
« Reply #20 on: April 26, 2017, 09:26:47 PM »


  • Code Baker
  • Jr. Chef
  • **
  • Date Registered: Apr 2017
  • Posts: 59
If you choose to implement another syntax, I have two more suggestions:
1. make it possible to set enabled/disabled states of controls depending of some another control, e.g. if I tick on/off one check box then all other related controls would be enabled/disabled; that could mean that you need to use some language which has support for events;

2. make the plugin code separated from its settings; e.g. put the user settings into the INI file.

Re: Writing 'WB Compatible Builder', questions about WinBuilder language
« Reply #21 on: May 09, 2017, 10:52:56 AM »


  • Chef
  • ***
  • Location: South Korea
  • Date Registered: Dec 2013
  • Posts: 117
Thank you for all advices.
I had been busy these days, sorry for late reply.

Deciding future syntax cannot be done by few people, and I have no exact answer, just ideas.
Hopefully, we have times and opinions to talk about future syntaxes.

Here are some factors which I am concerned:

1. Case of using other language syntax

1-1) Logging / Debugging
WB082 currently depends on logging for debugging.
(Of course, it has limitations, obviously)
If we borrow other language, how can we integrate debugging functionaility to PEBakery?
If newcomers (who are not familiar with debugger and programming) encounter bugs while buliding PE (without logging), how can they get help?
So logging and debugging should be provided at same place.

1-2) Modules / Library
The more library the language has, the better.
I think this part is VBScript's weakness - langs like python has lots of mature libraries and package manager.

1-3) Huddle for newcomers
Nature of WB082 syntax is 'batch', so understanding the syntax was not that so hard.
(Of course, with the expense of limited power and messy syntax.)
Which lang will provide least huddle to newcomers?

1-4) Converting WB082's command model to function model
We have to think about compability with WB082 syntax, like providing some 'shims'.
For example, python does not have native api to read/write registry.
Can be done with FFI, so PEBakery should provide its own library to access registry.

2. Case of inventing new syntax

2-1) Reinvent of wheel?
Contemporary programming languages already have some clear design.
Which means if we invent new syntax, time is spent to reinvent wheel.

2-2) Batch-like syntax vs Programming lang-like syntax
As I said before, nature of WB082 syntax is 'batch'.
Which syntax should we orient?

Plugin container format is another thing we should improve too, like slore indicated.
I think it can be done indepentally with syntax, so let's talk ideas about it too.

PS. Current stage of implementation
Test Build (20170510) : * PEBakery_TestBuild_20170510.7z (2654.66 kB - downloaded 21 times.)

- Plugin Cache
Serialize plugin into database, and take it back when loading.
PEBakery's raw load time is very slow at first time.
(Win10PESE with Download folder has 1000+ plugins, PEBakery takes 30sec to load even with i7-7700HQ, multithreaded.)
But starting from second load, it takes only 3sec, thanks to caching.

Cons of caching is the posibillity of database's corruption.
PEBakery works with admin privileges, so it can cause security breach.
If internal plugin instance is changed in next version of PEBakery, it can also cause corruptions.

- Build Engine
Variable and Macro (aka API) system implemented.
PEBakery now supports tirivial subset of WB082 commands, you can try with clicking buttons.
Simple works like viewing messages, writing to text, etc. is now supported.
However, important commands like file and registry operation is not implemented yet.

- Code Optimizer
Remember stuttering at 7-zip's 'More Options' button?
It is due to repeated file I/O, which can be done at one time.
PEBakery now optimizes continued Visible, TXTAddLine experimentally.

- Log Viewer
Experimental log viewer is supported.
Try runing some button with build log viewer open - you will see logs are updated simultaneously.
I prefer to use 'Export to TXT' functionability when debugging, though.

- Setting
Several options are now supported.


Powered by EzPortal