mIRC Changelog

 mIRC Changelog

17/11/2019 - mIRC v7.58

1.Fixed $+ not correctly reporting string too long errors.
2.Changed installer setting to make it DPI aware.
3.Changed $findfile() to preserve multiple spaces inside a wildcard
4.Fixed /reload interacting incorrectly with Script Editor when a new,
  unedited file is created.
5.Fixed $parms returning incorrect values in some contexts.
6.Fixed DCC trust user list bug that prevented autoget from working
  correctly for trusted users.
7.Optimized SendMessage() processing to use less memory.
8.Fixed SendMessage() gpf bug where recursive calls result in a stack
9.Updated several features to be DPI aware.
10.Fixed incorrect default location for alias, popup, and remote
   scripts when no files are present.
11.Fixed /exit -nr not restarting mIRC.
12.Added /run -a switch to request running as administrator.
13.Fixed script editor bug that was wrapping excessively long lines,
   resulting in script errors, instead of truncating them.
14.Fixed SendMesage() handling of negative indexes.
15.Fixed richedit control handling bug that may have caused some
   editbox-related code to behave incorrectly if the richedit control
   failed to load.
16.Fixed a number of issues identfied by CppCheck relating to range
   checking, memory initializations, optimizations, portability, and
   pointer dereferences.
17.Fixed script #group parsing bug for invalid group definitions.
18.Fixed $decode() gpf buf.
19.Updated more routines to use 32/64-bit compatible types as step in
   preparing for a 64bit version of mIRC.
20.Fixed text file writing bug that could have caused the UTF-8 BOM to
   be set incorrectly.
21.Fixed $url not working with newer versions of Chrome.
22.Changed /msg to no longer check for channel/nick prefixes due to some
   networks using identical prefixes for both.
23.Changed all &binvar supporting features to allow single character &
   as a binvar name for consistency.
24.Fixed $findfile() not freeing handles in some contexts. This also
   affected other features that retrieve file lists.
25.Fixed /ignore/protect/aop/avoice gpf bugs.
26.Fixed 64bit time calculations in several features.
27.Fixed memory HDC allocation error check in line marker.
28.Fixed $did().csel potential gpf bug when freeing memory.
29.Changed compiler settings to disable string pooling and enable whole
   program optimization.
30.Added /logview -nN switch to scroll view to line number.
31.Changed /play to improve handling of window/file names.
32.Updated OpenSSL library to v1.1.1d.
33.Added 421 numeric check for server disabled LIST command.
34.Changed server list and favorites list listboxes to use full line
35.Updated channel mode parsing and display based on CHANMODES token.
36.Fixed /window -r not restoring a hidden non-min/max window.
37.Changed $ctime() to return $null for invalid input and to handle
   commas as separators.
38.Added support for IRCv3 message-tags token and msgid feature.
39.Fixed $N parameter bug that caused inconsistent handling of text
   appended to the $N parameter, such as text that contained numbers
   or dashes.
40.Fixed handling of channel nickname mode 'q' in some contexts.
41.Added $isadmin identifier that returns current elevation status.
42.Updated error handling for a number of APIs to use consistent methods
   across all features.
43.Updated CA root certificates cacert.pem file.
44.Added auto-color nickname option to nick color list.
45.Updated servers.ini list. Around forty networks now use valid SSL
   certficates. These networks are now listed with only port +6697 to
   ensure secure connections.
46.Changed SSL hostname validation method when matching against
   certificate CN and SAN. Multi-label wildcards are now allowed.
47.Added $sslcertvalid that returns $true/$false if the SSL certificate
   is valid or not for the current SSL connection.
48.Changed /dns to show all resolved IP addresses for a hostname, not
   just the first IP address.
49.Optimized $bfind().text search method.
50.Added $bfind().textcs property for case-sensitive search.
51.Optimized SSL support.

25/07/2019 - mIRC v7.57

1.Updated OpenSSL library to v1.1.1c.
2.Changed OpenSSL support so that, by default, mIRC no longer checks for
  a newer external version of the OpenSSL library. This should resolve
  the R6034 Windows error reported by some users.
3.Changed /url, /run, and other features to use alternative method to
  open links to resolve issues with asynchronous window messages.
4.Fixed STS/SSL server/port parsing bug.
5.Fixed handling of 64bit timestamp value for several features.
6.Changed $crc() to use larger read buffer with files to improve speed.
7.Fixed script parser bug that caused binary variables to be unset in
  scripts that call external DLLS that SendMessage() mIRC many times.

06/07/2019 - mIRC v7.56

1.Added $urlget() identifier that downloads content from http/https
  addresses. Returns id number. Calls alias with id number when transfer

  $id = $urlget(url,hgpuadfbrtic,target,alias,headers,body)

  $urlget(N/id) used with properties:
    url, redirect, method, type, target, alias, id, state, size,
    resume, rcvd, time, reply

  url = http/https://user:pass@address:port/file?parameters
  options =
    hgpuad = head, get, post, put, patch, or delete
    fb = file or &binvar
    r = resume
    t = use .part file
    i = ignore SSL errors
    c = cancel
  target = file or &binvar
  alias = called on completion
  headers = &binvar
  body = &binvar

2.Fixed $regml().pos bug with multibyte characters.
3.Changed $dll() to require filename .dll extension. If filename does
  not have an extension, .dll is appended.
4.Updated OpenSSL library to v1.1.1b. Required code changes due to to
  changes in OpenSSL 1.1.x. Older OpenSSL versions are no longer
  supported. Compiled to work on XP. Dynamic loading of OpenSSL DLLs
  still supported as libcrypto-1_1.dll and libssl-1_1.dll.
5.Updated TagLib library to latest fixes.
6.Updated LibZip library to v1.5.2.
7.Reverted changes to $gmt(N) and $gmt(format).
8.Changed a number of features to use tick counts instead of system
  time for time measurement.
9.Fixed $astime() and other time/date features applying DST incorrectly
  in some situations.
10.Changed time/date features to use threadsafe versions of CRT time
11.Changed $encode()/$decode() to allow non-literal keys longer than 56
12.Changed $encode()/$decode() to not allow salts/IVs that contain
   codepoints 256+.
13.Fixed "try next server in group" option being incorrectly applied in
   some situations.
14.Changed action message processing so that it is integrated into
   the privmsg routines.
15.Changed time/date routines to use Windows APIs, allowing extended
   date range 1601 to 9999.
16.Changed $encode()/$decode() to zero-pad salt strings shorter than
   eight bytes.
17.Changed /msg -switches support to enable backwards compatibility with
   BNCs that use - as an invalid nickname prefix, such as -sBNC and
18.Changed DCC Folders dialog so that when a new item is added, it
   uses the default get path by default.
19.Fixed script error not showing line number for single-line event
20.Added /server [-key filename] to set private key file to use for
   an SSL connection.
21.Changed nickserv logon method to increase delay after last nickserv
   notice is received before triggering perform.
22.Changed status window connection state icons.  Now show a green
   lock icon for a valid SSL connection and an orange icon for an SSL
   connection with an invalid certificate.
23.Fixed $com()/$comcall() not scanning the local alias/script file
   first for a matching command/identifier.
24.Updated PCRE regex library to v8.43.
25.Fixed $$ prefix not working for remote identifiers.
26.Fixed connect retry count and port number not changing when try next
    server in group option is not enabled.
27.Changed flashing tray icon feature so that icon is dimmed instead of
28.Changed $sha1/$sha256/$sha384/$sha512/$hmac() to use larger read
   buffer with files to improve speed.

08/02/2019 - mIRC v7.55

1.Fixed /onotice and related commands not working correctly in some
2.Fixed Clear History log files option not deleting empty nested
  folders in logs folder.
3.Fixed $sha1()/$hmac() bug that caused &binvar data to be overwritten.
4.Added support for AES encrypted ZIP files using the LibZip library.


  Where the switches are: c = create, e = extract, t = test, l = list,
  p = password, o = overwrite existing file/dir.

  The N parameter is used with the list option, where 0 = return number
  of items, otherwise return Nth item, with properties: size.

5.Extended $rand() to allow negative number values.
6.Changed $rand() RNG algorithm to Bob Jenkins's JSF64.
7.Added $rands() identifier that returns a cryptographically secure
  random number using Microsoft's RtlGenRandom() API.
8.Changed all features that previously used the standard CRT rand() to
  use the new RNG algorithm.
9.Fixed $hfind() not reporting an error when the called alias returns
  an error.
10.Fixed $asctime() 'z' bug that returned whole numbers for timezones
   with 15/30/45 minute offsets.
11.Extended IRCv3 support for CAP NEW so that if a token is normally
   requested by mIRC on connect, it will be automatically requested on
   receipt of CAP NEW as well.
12.Fixed RCE vulnerability affecting all versions of mIRC (CVE-2019-6453).
13.Added $notify().sound2 property to return offline sound.
14.Updated CA root certificates cacert.pem file.
15.Fixed "Show nicks on join" option not working correctly.

21/12/2018 - mIRC v7.54

1.Fixed script editor editbox horizontal scrollbar sensitivity.
2.Fixed /hadd -mN parsing bug.
3.Fixed $decode() parsing of N parameter when N = 0 to ensure that it
  always returns a line count of one.
4.Fixed API call that prevented mIRC from running on Windows XP.
5.Fixed /timer -p switch not counting down correctly when more than one
  repetition is specified.
6.Added /timer -P switch that pauses the count down for a timer.
7.Updated OpenSSL library to v1.0.2q.
8.Optimized while loop parameter parsing in scripts.
9.Fixed $hmac() bug when using sha384/sha512 with keys longer than 64
10.Fixed /onotice and related commands not working in some contexts.
11.Fixed Log Files dialog sort by date column bug.
12.Updated CA root certificates cacert.pem file.

29/11/2018 - mIRC v7.53

1.Added /set -g switch that makes /set change a global variable.
2.Added /unset -gl switches that make /unset change a global or local
3.Changed udpate check/other features to avoid insecure SSL protocols in
  HTTP requests under Windows XP.
4.Changed all time-related features to use 64bit time values.
5.Fixed hotlink parsing of mailto: and similar.
6.Added hotlink parsing of xmpp:, teamspeak:, ssh:, and sftp:.
7.Extended /drawpic -o [N] to refer to frames in a GIF file.
8.Added /drawpic -f switch that works with -o to specify the Nth icon
  and the Mth frame in that icon by using /drawpic -of [N] [M].
9.Extended $pic() to support properties .icons, .frames, .delay and
  to allow specifying N and M parameters.
10.Added voice selection to speech options.
11.Fixed $onpoly() not handling zero area polygons correctly.
12.Changed $onpoly()/$inpoly() implementations from regions to maths.
13.Updated PCRE regex library to v8.42.
14.Fixed script parser bug that caused mIRC to process Windows messages
   while a script was running.
15.Changed $encode() base32 to use 72 character chunks.
16.Fixed /ialfill not displaying channel name when fill completes.
17.Updated CA root certificates cacert.pem file.
18.Fixed $ctime() returning incorrect result at midnight before a new
   year begins.
19.Changed the way maximum server line lengths are applied to various
   commands and features.
20.Added /privmsg command.
21.Added support for CPRIVMSG and CNOTICE. If listed in numeric 005,
   PRIVMSG and NOTICE will be automatically upgraded for most
   outgoing messages if you are an op/voice on a channel and message
   a user on the same channel.
22.Added support for numeric 005 STATUSMSG=@+ and WALLVOICES and added
  commands /vmsg, /vnotice, and /wallvoices. If server does not support
  STATUSMSG, WALLCHOPS, or WALLVOICES, mIRC uses own method to send to
  multiple targets.
23.Changed line splitting method for long messages when:
   1) Sending message through editbox of a channel/query window.
   2) Using commands /ame /amsg /describe /me /msg /omsg /privmsg /qme
   /qmsg /query /sound /vmsg /wallchops.

   Note: when line splitting, the /sound command switches to an ACTION
   message for the second line onwards.

   Note: line splitting is not performed on NOTICEs, so is not applied
   to /notice /onotice /vnotice /wallvoices.

24.Changed multiple target handling in PRIVMSG and NOTICE so that if
   TARGMAX or MAXTARGETS are not specified in numeric 005, mIRC assumes
   the maximum is one target per message.
25.Changed channel favorites dialog drag-resize method.
26.Changed channel mode parsing in numeric 324 and MODE events to handle
   channel keys hidden from non-ops only on the Undernet ircd. As there
   is no numeric 005 token for this, this is based on the Undernet ircd
   version number in numeric 004.

   Note: Added support for numeric 005 HIDDENKEY token. When specified,
   this means that non-ops on a channel receive the * character as the
   channel key in numeric 324 and MODE events. Clients should treat the
   * character (or whatever character/string is sent) as a non-key if
   they are not ops. If the user is then opped, their client can issue
   a MODE to retrieve the real key.

27.Changed STATUSMSG support to use only NOTICE on the Undernet ircd,
   which is the only method Undernet supports. On all other ircds,
   STATUSMSG implies NOTICE/PRIVMSG. As there is no numeric 005 token
   for this, this is based on the Undernet ircd version number in
   numeric 004.
28.Increased the size of short, medium, and long string lengths used
   throughout mIRC that affect features such as variables, window names,
   and so on.
29.Increased stack reserve size from 2 to 8 megabytes.
30.Added identifiers $maxlens $maxlenm $maxlenl that return the maximum
   string lengths for small, medium, and large strings.

   Note: although it is possible in some situations, eg. when assigning
   values to variables, to store slightly longer strings, the values
   returned by the above identifiers should be treated as maximums.

31.Changed CAP packet-size request to use mIRC's medium string length,
   as returned by $maxlenm. The previous version was requesting 1024. If
   a server replies with a different value, mIRC will use it, with a
   mimumum of 512 and a maximum of $maxlenm.
32.Changed base64 implementation for $decode() to handle invalid input
   lengths better.
33.Added $eventparms identifer that returns the event-specific parameters
   passed to an executed command in a script.
34.Changed /ialfill to not issue a WHO if it thinks the IAL list is
   already filled or currently filling.
35.Changed $base() to only remove the 0x prefix from base16 input.
36.Changed perform, and the joining of channels, on connect to trigger
   only after a short delay, if the server connection uses nickserv to
   identify a nickname. This ensures that you are able to join channels
   that only allow identified users.
37.Fixed while loop parsing bug when $& is used to separate comparison
38.Changed when the raw event for invite (as a channel notification)
   triggers to allow the /haltdef of default display text.
39.Fixed options/connect dialog new status window being opened with the
   current status window's SSL port/state.
40.Updated OpenSSL library to v1.0.2p.
41.Added support for IRCv3 nested batches. This goes beyond the basic
   batch support in previous versions and implements the full
   specification, which includes nested batches and delaying batch
   execution until end of batch is received. This includes support
   for draft/label and draft/labeled-response.
42.Extended $hfind() 'w' wildmatch and 'r' regular expression parameters
   to search entire length of binary variable data. Note that in the
   case of 'r', long results will be truncated in $regml() due to
   internal string length limits.
43.Fixed $hash() parsing bug that caused a break evaluation error.
44.Changed how mIRC manages its string pool memory to ensure that very
   large strings are freed immediately.
45.Changed $hfind() to allow $null text parameter.
46.Fixed on NOTIFY/UNOTIFY events not resetting print/halt state across
47.Changed the way long lines are displayed to get around ExtTextOut()
   timeout limitation.
48.Changed default hash table hash function to modified FNV-1A for
   improved distribution.
49.Added support for dynamic-resizing in hash tables for features like
   the IAL, nickname lists, INI files, etc. that start off with small
   hash tables and expand as necessary to improve performance.
50.Fixed $readini() reporting an evaluation error when reading a line
   that contains only empty spaces.
51.Changed the [dirs] section to always contain "getdir", refers to
   the default item in [extensions].
52.Updated TagLib library to latest fixes.
53.In preparation for language translation support, changes have been
   made to the way resources are loaded, the resources file has been
   changed to Unicode, and many string resources have been cleaned up
   and/or re-worded to improve context and make translation easier.
54.Fixed $cb() not delimiting different combinations of $cr, $lf, and
   $crlf correctly in the same text.
55.Fixed $var().secs for local variables returning global variable
56.Added /load -aN switch that loads alias file into Nth position.
57.Fixed $cb(0,u) not returning line count.
58.Extended /debug -t timestamp to apply to log files.
59.Changed how /clipboard and $cb() are called to mitigate clipboard
   being in use by other applications.
60.Fixed $isbit()/$biton()/$bitoff() allowing N outside range 1 to 32.
61.Changed /var to report an error if it is used outside a script.
62.Added /hload and /hsave -B switch that uses a larger index to allow
   longer binary data to be saved. This is not compatible with files
   created by the -b switch.
63.Changed script editor editbox to allow longer lines before it starts
64.Changed DCC Send file dialog to display some custom controls better
   under dark mode in Windows 10.
65.Fixed /ignore -l not showing items in ignore list.