mIRC Home    About    Download    Register    News    Help

Active Threads | Unanswered Past 24 hours | Past 48 hours | Past Week | Past Month | Past Year
Bug Reports Jump to new posts
mIRC beta Khaled 19/10/25 06:43 PM
The latest beta can be downloaded here and includes the following changes:

Quote
Beta v7.81.3191 changes:
1.Reviewed all code changes since v7.81, performed more static code
analysis, applied some fixes and reverted several minor but
unnecessary changes.

Beta v7.81.2687 changes:
1.Item 17 changed the address parser slightly to improve how it
handles malformd addresses and ports.
2.Item 14, changed to use the username in SCRAM and ECDSA as
well. If no username is specified, PLAIN, SCRAM, and ECDSA will
use your nickname, as before. Note that EXTERNAL has also been
changed so that it also always sends a username or a nickname
like the other options. It was previously not sending a
nickname. Always sending your nickname with EXTERNAL seems
fine on the networks I tested.
3.Item 18, fixed. When scrolling, touchpads, like mice, send
WM_MOUSEWHEEL messages but with much smaller counts, so these need
to be accumulated before reaching a scroll threshold. The same code
handles both mouse and touchpad scrolling. As far as I can tell,
touchpad scolling is now working as expected, allowing both slow and
fast scrolling depending on how quickly you swipe the touchpad.
4.Item 14, changed the way this is stored in servers.ini. It is now
saved as a distinct parameter. This took more work but preserves
backward compatibility.
5.Item 19, added. This is a bit of a tricky one. If you have set up
a server to login with SASL, how do we determine if an SASL login
has failed? If this option is enabled, mIRC will disconnect in these
contexts:

1) If SASL has been initiated and we receive numeric 904 (SASL
authentication failed) or 905 (SASL message too long).
2) If SASL has been initiated and we receive numeric 906 (SASL
authentication aborted).
3) If numeric 001 is received but we have not yet received numeric
900 (You are now logged in) or 903 (SASL authentication
successful) or 907 (You have already authenticated using SASL).

The above cover various contexts, eg. you have enabled SASL login
for a server but on connect the server does not actually support
SASL logins.

6.Item 20, added. I could have extended /server -l to handle both a
username and password but this would have broken backward
compatibility for users who use passwords with spaces.
7.This has been a difficult and time-consuming beta cycle. I have
decided not to release a 64bit at this time. I will be performing a
code review of changes (to 180+ files, which includes 64bit-related
changes), so this will take some time. There are no more changes
planned for this beta cycle before the next release.

Beta v7.81.2429 changes:
1.Item 14, changed SASL External to base64-encode the username to
match Undernet's IRCv3 SASL External requirement.
2.Item 15, fixed.
3.Item 9, updated to OpenSSL 3.54 and LunaSVG 3.4.0.
4.Item 17, updated. This affects features such as typing in an
IPv6 address for a server in the servers dialog, when using
the /server, /dcc, or /firewall commands, on the mirc.exe command
line, irc/ircs links, and so on.

Beta v7.81.2405 changes:
1.Item 8, more testing. The next beta release after this one will
likely include a 64-bit version as well.
2.Item 14, added. Note that this required extending the format
for the per server settings in server.ini. Support for specifying
"username:password" as the password for SASL is still supported.
3.Item 15, changed.

Beta v7.81.2295 changes:
1.Item 8, experimented with ARM64, which needs a newer toolset and SDK
version than the one I am currently using to maintain compatibility
with XP. If I am to maintain a consistent/tested release/debug codebase,
this will likely require dropping support for XP.
2.Item 13, updated. The number of deprecated OpenSSL API calls in mIRC's
SSL code has been increasing with each migration to newer versions of
OpenSSL. Updating these is not as simple as replacing an API call.
Almost all of the deprecated APIs require a complete rewrite of
long-tested / critical code. Documentation is sparse and finding
code examples online is difficult, especially since deprecated APIs
are in wide use and most codebases have not been updated, requiring
signficant research. All new APIs also need to be enabled for
dynamic loading from a DLL if the static library is not being used.

This update replaces 30+ deprecated OpenSSL APIs, affecting a
number of features, such as connecting to servers, signing/signature
verification, certificate creation/parsing/display, ECDSA login/public
key extraction, and so on.

Beta v7.81.1739 changes:
1.Item 9, updated to LunaSVG 3.4.0.
2.Item 10, updated.
3.Item 9, updated to OpenSSL 3.5.2.
4.Item 11, fixed. Some features, eg. Switchbar, were using the
older Microsoft Sans Serif font on Windows 10 onwards when they
should have been using Segoe UI to match the rest of the
interface.
5.Item 12, fixed.

Beta v7.81.1533 changes:
1.Fixed https://forums.mirc.com/ubbthreads.php/topics/273507
Reverted changes to /drawsave.
2.Fixed https://forums.mirc.com/ubbthreads.php/topics/273514
Fixed PCRE configuration file.

Beta v7.81.1502 changes:
1.Item 1, updated. This looks like it is working correctly on XP
and onwards.
2.Item 2, added. The tray tip implementation is based on tips expiring
within a delay period and a maximum queue size. For this feature, the
way tips are ordered/expired had to be changed. For non-permanent
tips, the behaviour should still be identical to previous versions.
3.Item 3, updated. mIRC currently limits itself to the 7.0 SDK for
XP compatibility. But I occasionally test with newer SDKs which can
introduce changes to APIs/structs/etc.
4.Item 4, fixed https://forums.mirc.com/ubbthreads.php/topics/273408
5.Item 5, changed https://forums.mirc.com/ubbthreads.php/topics/273429
6.Item 6, fixed https://forums.mirc.com/ubbthreads.php/topics/273456
7.Item 7, changed. Previously, mIRC was loading the entire dialog from
the language DLL and using it as is. This allowed translators to
size/position controls to fit translated text. Unfortunately, this
lead to issues, eg. where a control style/size/position changes in
a subsequent version, and a translator would need to propagate all
of these changes to their language DLL, and re-test them for newer
releases. This makes updating language DLLs far more difficult.
8.Item 8, significant progress towards a 64bit version.

Note: this beta release is the standard 32bit mIRC that includes
the changes described below. A 64bit mIRC is not being released yet.

All external libraries have been updated to compile as both 32bit
and 64bit. This took some work as the existing solutions were created
and customized over many years for just 32bit builds. As multiple
builds are now needed for the external libraries that mIRC uses,
ie. debug/release 32bit/64bit/ARM64, I did not want to go through
the process of re-applying custom build changes every time
a new library is released. So I re-installed all libraries from
original sources and used their default configs, naming conventions,
paths, and other settings, where possible, and compared all of
these to the older configurations to ensure there were no critical
differences in build options. Most of the Cmake build files still
require tweaks, eg. for XP compatibility, so these have now been
documented per library and automated where possible. This setup
also makes it easier to add ARM64 builds at a later date.

I was then able to compile and test a full 64bit mIRC under Visual
Studio 2017/2022 and different SDK versions for testing. Reviewed
reports from Visual Studio 2022 static code analysis and cppcheck.
Most warnings were false positives but some related to pointers being
stored in INTs which required code changes. Mostly minor cast warning
changes to 180+ files. Repeated and reviewed the above process
several times, focusing on common 32/64 bit porting issues, with
the aim of minimizing code changes and hardening code.

Compiled 32bit/64bit mIRC with Address Sanitizer for testing.

Also tested 32bit mIRC with /largeaddressaware enabled, giving it
access to 4GB memory, and tested on Windows with top down memory
allocation enabled. This feature requires that all external 32bit
libraries, including custom DLLs, are capable of handling the full
32bit pointer range for shared memory, so it will not be enabled
in the 32bit version of mIRC as this could break backward
compatibility. The /largeaddressaware setting is just being used
for local testing.

No crashes or issues so far with various units tests.

Notes:
1) Although mIRC can now run as a 64bit application, it is still
internally limited by INT variables for most features, ie. limited to
two billion users in your notify list, lines in a window, etc. There
are no plans to change this as this limit is far beyond what mIRC
can practically handle in these contexts anyway.
2) For the scripting language, features that store binary data, such
as &binvars, are also limited to INT bytes. This means that the 64bit
is limited to, at most, 2 GB per &binvar. Changing this to an INT64
would require significant code changes, so has been left as it is for
now as I would like a stable 64bit that can be tested against a stable
32bit.
3) The way floating point errors are handled had to be changed
since the 64bit uses SSE2, whereas the 32bit was using IA32-specific
code that had been stable for decades. The code for both 32bit and
64bit has been standardized to SSE2 and to use a platform independent
method of checking for floating point errors for x86, x64, and ARM64
platforms.
4) Custom 32bit DLLs that currently work with the 32bit mIRC will
need to be updated to 64bit to work with the 64bit mIRC.
5) Performed more tests with mimalloc and the 64bit version. This may
be enabled in the 64bit for testing in the future.

9.Item 9, updated. The OpenSSL v3.0.17 branch is LTS to September 2026,
however, I tested OpenSSL v3.5.1 and this seemed to work without any
issues, and did not require code changes, so have decided to change
to it for LTS to 2030.
10.Switched from Windows 10 to 11 for development machine, so all of my
testing now takes place on Windows 11, with limited testing on VMs
for other Windows versions.

Changes:
1.Updated local host look up method to use a non-deprecated API.
2.Added $tip() support for delay of -1 to indicate a permanent tip
that does not expire until manually closed.
3.Updated $input() to size dialog correctly in newer versions of the
Windows SDK.
4.Fixed $urlget() crash bug when credentials are passed in URL.
5.Changed numeric 650/651 support to handle InspIRCd not sending 651
End of Services Messages numeric.
6.Fixed handling of swapped mouse buttons in different contexts.
7.Changed the way that dialogs are loaded from language DLLs. Only
the text in a dialog is now used, as opposed to loading and using
the entire dialog.
8.Updated all external libraries to support compilation as both 32bit
and 64bit, in preparation for a future 64bit release and possible
ARM64 support. Updated all routines to use 32bit/64bit compatible
types, performed static code analysis, compilation and testing under
different Visual Studio versions, SDKs, and platform toolsets,
focusing on common 32/64 bit porting issues, with the aim of
minimizing code changes and hardening code.
9.Updated libraries to LibZip v1.11.4, LunaSVG v3.5.0, and TagLib
v2.1.1. Also updated from the OpenSSL v3.0.x branch to v3.5.x.
10.Updated CA root certificates cacert.pem file.
11.Fixed features that were using the wrong default GUI font under
Windows 10/11.
12.Fixed various Aero theme bugs relating to Windows display scale
and text size options.
13.Updated OpenSSL support to remove use of deprecated APIs / use
newer/recommended APIs/methods for OpenSSL v3.5.x.
14.Added support for specifying a username for use with the server
Login methods for SASL. If a username is specified, it will be
used during SASL authentication for PLAIN, EXTERNAL, ECDSA, and
SCRAM. Otherwise your nickname will be used as before.
15.Fixed percent encoding/decoding memory bug that would have caused
intermittent crashes in some contexts.
16.Changed support for numeric 263 to display the command that
triggered the numeric.
17.Updated various features to parse bracket-enclosed IPv6 addresses
with appended port number.
18.Fixed touchpad speed/sensitivity when scrolling in different types
of windows.
19.Added server option to disconnect on SASL login error.
20.Added /server command -lname <name> and -lerror [0|1] to set the
SASL username and disconnect option for a server. Also added
$server() .methodname and .methoderror properties.
1 446,478 Read More
Scripts & Popups Jump to new posts
Re: Choose var equally Simo 16/10/25 11:27 AM
Thanks wims, i used original as well but was hoping your shorter version could be made to work but from what i understand from you is it can't be made to work, if i understood well.


BTW these are the aliases for it :

Code
 

alias cloakjhtyafvdl { return $regsubex($str(x,$r(4,5)),/./g,$iif($r(0,1) == 1,$r(a,z),$iif($r(0,1) == 1,$r(a,z),$r(0,9)))) }

alias cloakjhtyafvdXX { return $regsubex($str(x,$r(2,3)),/./g,$iif($r(0,1) == 1,$r(0,9),$iif($r(0,1) == 1,$r(0,9),$r(0,9)))) }


Much appreciated,

Simo.
9 331 Read More
Feature Suggestions Jump to new posts
Re: Editable Language Files WarPigs 14/10/25 06:08 AM
I fixed some errors in the dll, there now no warnings.
Originally Posted by WarPigs
So, iv'e created a new german language DLL for mIRC 7.81 (Partly translated with an AI) that can downloaded here. I'll optimize that now with an further review of the dll.
25 26,537 Read More
Bug Reports Jump to new posts
Re: Laptop trackpad scrolling way too fast Khaled 06/10/25 01:38 PM
Thanks for your bug report. I was able to reproduce this issue on a touchpad here. Excessively fast/sensitive two finger scrolling on touchpads seems to be a common issue with applications. In this case, mIRC was not handling how a touchpad sends WM_MOUSEWHEEL delta values in small increments, that need to be accumulated, which is different to how a mouse sends the same message. I have made a change to the next beta that should hopefully resolve the issue.
1 137 Read More
General Discussion Jump to new posts
Anyone Here? Zmodem 05/10/25 03:18 AM
Figured I would use the General Discussion forum to shamelessly look for anyone, even old timers, still residing within this playground smile How is everyone?
0 58 Read More
mIRC Help Jump to new posts
Re: server.ini Khaled 03/10/25 09:53 AM
You can find the scripts editor in the Tools menu in the mIRC menubar.

Once you open the scripts editor, you will need to click on the Aliases tab, then click View in the menubar to see which files are loaded.

You will then need to do the same thing with the Popups, Remote, Users, and Variables tabs.

If you see a servers.ini files listed in the View menu, you will need to select it, then click the File menu in the menubar and click on Unload.
3 500 Read More