This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for fa0789a790
[perl5.git] / pod / perldelta.pod
CommitLineData
4e9d771a
FC
1=for todo
2b47a847f62 win32/win32sck.c: dont close() a freed socket os handle
8ea7af8c 335e037e846 Commit 1735f6f started to escape all...
389422f1 4ff4a442c79 [perl #75156] fix the return value and bits for removing a...
6dc3be8c 59b4bdfd44e fix chop formats with non PV vars
4e9d771a 6
44691e6f
AB
7=encoding utf8
8
9=head1 NAME
10
28ee95bc
SH
11[ this is a template for a new perldelta file. Any text flagged as XXX needs
12to be processed before release. ]
13
14perldelta - what is new for perl v5.19.6
e128ab2c 15
4eabcf70 16=head1 DESCRIPTION
6db9054f 17
28ee95bc 18This document describes differences between the 5.19.5 release and the 5.19.6
e08634c5 19release.
6db9054f 20
28ee95bc
SH
21If you are upgrading from an earlier release such as 5.19.4, first read
22L<perl5195delta>, which describes differences between 5.19.4 and 5.19.5.
a9c9e371 23
28ee95bc 24=head1 Notice
12ea29d9 25
28ee95bc 26XXX Any important notices here
12ea29d9 27
28ee95bc 28=head1 Core Enhancements
12ea29d9 29
28ee95bc
SH
30XXX New core language features go here. Summarize user-visible core language
31enhancements. Particularly prominent performance optimisations could go
32here, but most should go in the L</Performance Enhancements> section.
12ea29d9 33
28ee95bc 34[ List each enhancement as a =head2 entry ]
12ea29d9 35
05d9825a
FC
36=head2 $a and $b warnings exemption
37
38The special variables $a and $b, used in C<sort>, are now exempt from "used
39once" warnings, even where C<sort> is not used. This makes it easier for
40CPAN modules to provide functions using $a and $b for similar purposes.
41[perl #120462]
42
28ee95bc 43=head1 Security
eedb00fa 44
28ee95bc
SH
45XXX Any security-related notices go here. In particular, any security
46vulnerabilities closed should be noted here rather than in the
47L</Selected Bug Fixes> section.
eedb00fa 48
28ee95bc 49[ List each security issue as a =head2 entry ]
eedb00fa 50
ba03bc34 51=head1 Incompatible Changes
a3fb66a4 52
28ee95bc 53XXX For a release on a stable branch, this section aspires to be:
29b43da2 54
28ee95bc
SH
55 There are no changes intentionally incompatible with 5.XXX.XXX
56 If any exist, they are bugs, and we request that you submit a
57 report. See L</Reporting Bugs> below.
8c24c1f7 58
28ee95bc 59[ List each incompatible change as a =head2 entry ]
6ffbec2c 60
28ee95bc 61=head1 Deprecations
6ffbec2c 62
28ee95bc 63XXX Any deprecated features, syntax, modules etc. should be listed here.
d5dcec3a 64
28ee95bc 65=head2 Module removals
6ffbec2c 66
28ee95bc 67XXX Remove this section if inapplicable.
5565c738 68
28ee95bc
SH
69The following modules will be removed from the core distribution in a
70future release, and will at that time need to be installed from CPAN.
71Distributions on CPAN which require these modules will need to list them as
72prerequisites.
1944fb52 73
28ee95bc
SH
74The core versions of these modules will now issue C<"deprecated">-category
75warnings to alert you to this fact. To silence these deprecation warnings,
76install the modules in question from CPAN.
1944fb52 77
28ee95bc
SH
78Note that these are (with rare exceptions) fine modules that you are encouraged
79to continue to use. Their disinclusion from core primarily hinges on their
80necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
81not usually on concerns over their design.
1944fb52 82
28ee95bc 83=over
1981f814 84
23b56f29 85=item L<Package::Constants>
1981f814 86
28ee95bc 87=back
229563a9 88
28ee95bc 89[ List each other deprecation as a =head2 entry ]
82107948 90
28ee95bc 91=head1 Performance Enhancements
f90332ac 92
28ee95bc
SH
93XXX Changes which enhance performance without changing behaviour go here.
94There may well be none in a stable release.
f90332ac 95
28ee95bc 96[ List each enhancement as a =item entry ]
f90332ac 97
28ee95bc 98=over 4
f90332ac
SH
99
100=item *
101
3a4b75f8
FC
102Constant hash key lookups (C<$hash{key}> as opposed to C<$hash{$key}>) have
103long had the internal hash value computed at compile time, to speed up
104lookup. This optimisation has only now been applied to hash slices as
105well.
f90332ac 106
28ee95bc 107=back
f90332ac 108
28ee95bc 109=head1 Modules and Pragmata
f90332ac 110
28ee95bc
SH
111XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
112go here. If Module::CoreList is updated, generate an initial draft of the
113following sections using F<Porting/corelist-perldelta.pl>, which prints stub
114entries to STDOUT. Results can be pasted in place of the '=head2' entries
115below. A paragraph summary for important changes should then be added by hand.
116In an ideal world, dual-life modules would have a F<Changes> file that could be
117cribbed.
f90332ac 118
28ee95bc 119[ Within each section, list entries as a =item entry ]
f90332ac 120
28ee95bc 121=head2 New Modules and Pragmata
f90332ac 122
28ee95bc 123=over 4
f90332ac
SH
124
125=item *
126
28ee95bc 127XXX
f90332ac 128
28ee95bc 129=back
f90332ac 130
28ee95bc 131=head2 Updated Modules and Pragmata
f90332ac 132
28ee95bc 133=over 4
f90332ac
SH
134
135=item *
136
033960a1
FC
137L<B> has been upgraded from version 1.46 to 1.47.
138
139C<< B::PMOP->precomp >> now preserves the internal UTF8 flag correctly, so
140chr 256 remains chr 256, instead of turning into "\xc4\x80". This allows
141L<B::Deparse> to deparse Unicode regular expression correctly.
142[perl #120182]
143
ea3da4ad
TC
144C<< B::HV->ARRAY >> now preserves the UTF8 flag on returned hash keys.
145[perl #120535]
146
033960a1
FC
147=item *
148
23d5aa59
FC
149L<B::Concise> has been upgraded from version 0.99 to 0.991.
150
151B<-debug> output now includes C<op_other> pointers.
152
153=item *
154
3b5f976f
FC
155L<B::Deparse> has been upgraded from version 1.23 to 1.24.
156
157C<s//\(3)/e> is now deparsed in a way that does not issue warnings when
158parsed again. [perl #119807]
159
58731871
FC
160C<glob(my $x)> is now deparsed correctly, rather than as C<< <my $x> >> or
161similar.
162
163C<CORE::glob> is now deparsed correctly with the CORE:: prefix when there
164is a subroutine named "glob".
165
3b5f976f
FC
166=item *
167
494bd897
SH
168L<Module::CoreList> has been upgraded from version 3.00 to 3.01.
169
170The list of Perl versions covered has been updated.
f90332ac 171
22f9c36a
FC
172=item *
173
f63abf92
FC
174L<PerlIO::scalar> has been upgraded from version 0.17 to 0.18.
175
176A bug fix in 0.17 caused references to be stringified as soon as a handle
177to it was opened, even if it was opened only for reading. It also croaked
178on read-only references. This has been fixed. [perl #119529]
179
180=item *
181
22f9c36a
FC
182L<Tie::StdHandle> has been upgraded from version 4.3 to 4.4.
183
184It no longer prints C<$\> twice. [perl #120202]
185
e61cab1a
FC
186It no longer ignores the offset passed to C<syswrite>.
187
28ee95bc 188=back
f90332ac 189
28ee95bc 190=head2 Removed Modules and Pragmata
f90332ac 191
28ee95bc 192=over 4
f90332ac
SH
193
194=item *
195
28ee95bc 196XXX
f90332ac 197
28ee95bc 198=back
f90332ac 199
28ee95bc 200=head1 Documentation
f90332ac 201
28ee95bc
SH
202XXX Changes to files in F<pod/> go here. Consider grouping entries by
203file and be sure to link to the appropriate page, e.g. L<perlfunc>.
f90332ac 204
28ee95bc 205=head2 New Documentation
82107948 206
28ee95bc 207XXX Changes which create B<new> files in F<pod/> go here.
82107948 208
28ee95bc 209=head3 L<XXX>
d05bf821 210
28ee95bc 211XXX Description of the purpose of the new file here
d05bf821 212
28ee95bc 213=head2 Changes to Existing Documentation
be08498a 214
28ee95bc
SH
215XXX Changes which significantly change existing files in F<pod/> go here.
216However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
217section.
be08498a 218
28ee95bc 219=head3 L<XXX>
be08498a 220
28ee95bc 221=over 4
52102bb4
SH
222
223=item *
224
28ee95bc 225XXX Description of the change here
b7c730ff 226
28ee95bc 227=back
d477c82b 228
28ee95bc 229=head1 Diagnostics
d477c82b 230
28ee95bc
SH
231The following additions or changes have been made to diagnostic output,
232including warnings and fatal error messages. For the complete list of
233diagnostic messages, see L<perldiag>.
d477c82b 234
28ee95bc
SH
235XXX New or changed warnings emitted by the core's C<C> code go here. Also
236include any changes in L<perldiag> that reconcile it to the C<C> code.
f90332ac 237
28ee95bc 238=head2 New Diagnostics
f90332ac 239
28ee95bc
SH
240XXX Newly added diagnostic messages go under here, separated into New Errors
241and New Warnings
f90332ac 242
28ee95bc 243=head3 New Errors
f90332ac 244
28ee95bc 245=over 4
f90332ac
SH
246
247=item *
248
28ee95bc 249XXX L<message|perldiag/"message">
2e0c8515 250
28ee95bc 251=back
2e0c8515 252
28ee95bc 253=head3 New Warnings
b7c730ff 254
28ee95bc 255=over 4
b7c730ff 256
befb5359
SH
257=item *
258
28ee95bc 259XXX L<message|perldiag/"message">
befb5359 260
28ee95bc 261=back
befb5359 262
28ee95bc 263=head2 Changes to Existing Diagnostics
f90332ac 264
28ee95bc 265XXX Changes (i.e. rewording) of diagnostic messages go here
411e93ce 266
28ee95bc 267=over 4
411e93ce
SH
268
269=item *
270
c7a31d00
FC
271L<%%s[%s] in scalar context better written as $%s[%s]|perldiag/"%%s[%s] in scalar context better written as $%s[%s]">:
272
273This warning now occurs for any C<%array[$index]> or C<%hash{key}> known to
274be in scalar context at compile time. Previously it was worded "Scalar
275value %%s[%s] better written as $%s[%s]".
f90332ac 276
28ee95bc 277=back
f90332ac 278
28ee95bc 279=head1 Utility Changes
f90332ac 280
28ee95bc
SH
281XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
282Most of these are built within the directories F<utils> and F<x2p>.
f90332ac 283
28ee95bc
SH
284[ List utility changes as a =head3 entry for each utility and =item
285entries for each change
286Use L<XXX> with program names to get proper documentation linking. ]
f90332ac 287
28ee95bc 288=head3 L<XXX>
8adfd064 289
28ee95bc 290=over 4
8adfd064
SH
291
292=item *
293
28ee95bc 294XXX
f90332ac 295
2d8e8368
SH
296=back
297
28ee95bc 298=head1 Configuration and Compilation
1944fb52 299
28ee95bc
SH
300XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
301go here. Any other changes to the Perl build process should be listed here.
302However, any platform-specific changes should be listed in the
303L</Platform Support> section, instead.
a3fb66a4 304
28ee95bc 305[ List changes as a =item entry ].
7c90aec3
SH
306
307=over 4
308
309=item *
310
28ee95bc 311XXX
7c90aec3
SH
312
313=back
314
28ee95bc 315=head1 Testing
7c90aec3 316
28ee95bc
SH
317XXX Any significant changes to the testing of a freshly built perl should be
318listed here. Changes which create B<new> files in F<t/> go here as do any
319large changes to the testing harness (e.g. when parallel testing was added).
320Changes to existing files in F<t/> aren't worth summarizing, although the bugs
321that they represent may be covered elsewhere.
7c90aec3 322
28ee95bc 323[ List each test improvement as a =item entry ]
2d8e8368
SH
324
325=over 4
326
327=item *
328
768cd72c 329F<ext/File-Find/t/find.t> has been converted from manual C<print>
eca6f539
JK
330statements to Test::More functions. Each test now has a description.
331[perl #120503]
2d8e8368
SH
332
333=back
334
28ee95bc 335=head1 Platform Support
1981f814 336
28ee95bc 337=head2 New Platforms
2b6950bd 338
28ee95bc 339=over 4
1981f814 340
79a18634 341=item Synology
1981f814 342
79a18634
MB
343Synology ships its NAS boxes with a lean Linux distribution (DSM) on relative
344cheap CPU's (like the Marvell Kirkwood mv6282 - ARMv5tel or Freescale QorIQ
345P1022 ppc - e500v2) not meant for workstations or development. These boxes
346should build now. The basic problems are the non-standard location for tools.
1981f814 347
12dcbffb 348=back
1310e590 349
28ee95bc 350=head2 Discontinued Platforms
a34da6c4 351
28ee95bc 352XXX List any platforms that this version of perl no longer compiles on.
ef947715 353
12dcbffb 354=over 4
21c01741 355
28ee95bc 356=item XXX-some-platform
467582e8 357
28ee95bc 358XXX
467582e8 359
ba03bc34 360=back
64da853d 361
28ee95bc 362=head2 Platform-Specific Notes
40d779aa 363
28ee95bc
SH
364XXX List any changes for specific platforms. This could include configuration
365and compilation changes or changes in portability/compatibility. However,
366changes within modules for platforms should generally be listed in the
367L</Modules and Pragmata> section.
40d779aa 368
28ee95bc 369=over 4
40d779aa 370
3e7c2d43
SH
371=item Windows
372
373Support for building with Visual C++ 2013 has been added. There are currently
374two possible test failures (see L<perlwin32/"Testing Perl on Windows">) which
375will hopefully be resolved soon.
376
f4a01e9c 377=item WinCE
40d779aa 378
f4a01e9c
SH
379Perl can now be built in one shot with no user intervention on WinCE by running
380C<nmake -f Makefile.ce all>.
381
382Support for building with EVC (Embedded Visual C++) 4 has been restored. Perl
383can also be built using Smart Devices for Visual C++ 2005 or 2008.
eaed284b 384
ba03bc34 385=back
0335212c 386
28ee95bc 387=head1 Internal Changes
0335212c 388
28ee95bc
SH
389XXX Changes which affect the interface available to C<XS> code go here. Other
390significant internal changes for future core maintainers should be noted as
391well.
392
393[ List each change as a =item entry ]
ee818f56 394
09f4604f 395=over 4
efcbb8b2 396
28ee95bc 397=item *
846aaad8 398
3895ffc7
FC
399Compiling with C<-Accflags=-PERL_BOOL_AS_CHAR> now allows C99 and C++
400compilers to emulate the aliasing of C<bool> to C<char> that perl does for
401C89 compilers. [perl #120314]
846aaad8 402
ba03bc34 403=back
efcbb8b2 404
ba03bc34 405=head1 Selected Bug Fixes
912a9a8f 406
28ee95bc
SH
407XXX Important bug fixes in the core language are summarized here. Bug fixes in
408files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
1144b44d 409
28ee95bc 410[ List each fix as a =item entry ]
1144b44d 411
28ee95bc 412=over 4
04380912
SH
413
414=item *
415
894b53fb
FC
416Perl 5.18.0 accidentally disallowed C<-bareword> under C<use strict> and
417C<use integer>. This has been fixed. [perl #120288]
508c1ff6 418
10513103
FC
419=item *
420
421C<-a> at the start of a line (or a hyphen with any single letter that is
422not a filetest operator) no longer produces an erroneous 'Use of "-a"
423without parentheses is ambiguous' warning. [perl #120288]
424
7269fba0
FC
425=item *
426
427Lvalue context is now properly propagated into bare blocks and C<if> and
428C<else> blocks in lvalue subroutines. Previously, arrays and hashes would
429sometimes incorrectly be flattened when returned in lvalue list context, or
430"Bizarre copy" errors could occur. [perl #119797]
431
9deee734
FC
432=item *
433
434Lvalue context is now propagated to the branches of C<||> and C<&&> (and
435their alphabetic equivalents, C<or> and C<and>). This means
436C<foreach (pos $x || pos $y) {...}> now allows C<pos> to be modified
437through $_.
438
9b3f1466
FC
439=item *
440
441C<*DB::DB = sub {} if 0> no longer stops Perl's debugging mode from finding
442C<DB::DB> subs declared thereafter.
443
fafe36c8
FC
444=item *
445
a766e67d
FC
446C<stat> and C<readline> remember the last handle used; the former
447for the special C<_> filehandle, the latter for C<${^LAST_FH}>.
448C<eval "*foo if 0"> where *foo was the last handle passed to C<stat>
449or C<readline> could cause that handle to be forgotten if the
fafe36c8
FC
450handle were not opened yet. This has been fixed.
451
326cf246
FC
452=item *
453
454Various cases of C<delete $::{a}>, C<delete $::{ENV}> etc. causing a crash
455have been fixed. [perl #54044]
456
336b9946
FC
457=item *
458
459Assigning another typeglob to C<*^R> no longer makes the regular expression
460engine crash.
461
e4e776a2
FC
462=item *
463
464C<%{'_<...'}> hashes now set breakpoints on the corresponding C<@{'_<...'}>
465rather than whichever array C<@DB::dbline> is aliased to. [perl #119799]
466
d4fec79a
FC
467=item *
468
469Setting C<$!> to EACCESS before calling C<require> could affect
470C<require>'s behaviour. This has been fixed.
471
b34b8721
FC
472=item *
473
474The "Can't use \1 to mean $1 in expression" warning message now only occurs
475on the right-hand (replacement) part of a substitution. Formerly it could
476happen in code embedded in the left-hand side, or in any other quote-like
477operator.
478
73f74d29
FC
479=item *
480
481The C<\N> regular expression escape, when used without the curly braces (to
482mean C<[^\n]>), was ignoring a following C<*> if followed by whitespace
483under /x. It had been this way since C<\N> to mean C<[^\n]> was introduced
484in 5.12.0.
485
49c74b45
FC
486=item *
487
488Blessing into a reference (C<bless $thisref, $thatref>) has long been
489disallowed, but magical scalars for the second like C<$/> and those tied
490were exempt. They no longer are. [perl #119809]
491
3db3aac2
FC
492=item *
493
494Blessing into a reference was accidentally allowed in 5.18 if the class
495argument were a blessed reference with stale method caches (i.e., whose
496class had had subs defined since the last method call). They are
497disallowed once more, as in 5.16.
498
1859dc90
FC
499=item *
500
501An undefined lexical sub used as an inherited method no longer crashes.
502
ed935cbf
FC
503=item *
504
505C<< $x->{key} >> where $x was declared as C<my Class $x> no longer crashes
506if a Class::FIELDS subroutine stub has been declared.
507
62ab5032
FC
508=item *
509
510C<@$obj{'key'}> and C<${$obj}{key}> used to be exempt from compile-time
511field checking ("No such class field"; see L<fields>) but no longer are.
512
ec52a187
FC
513=item *
514
79b30ab2
FC
515That compile-time field checking also applies now to the C<%$obj{'key'}>
516syntax, added recently in Perl 5.19.4.
517
518=item *
519
ec52a187
FC
520A nonexistent array element with a large index passed to a subroutine that
521ties the array and then tries to access the element no longer results in a
522crash.
523
d84b9c6a
FC
524=item *
525
526Declaring a subroutine stub named NEGATIVE_INDICES no longer makes negative
527array indices crash when the current package is a tied array class.
528
c9a5c63e
FC
529=item *
530
531Declaring a C<require>, C<glob>, or C<do> subroutine stub in the
532CORE::GLOBAL:: package no longer makes compilation of calls to the
533corresponding functions crash.
534
4105c9c0
FC
535=item *
536
537Aliasing CORE::GLOBAL:: functions to constants stopped working in Perl 5.10
538but has now been fixed.
539
ec636b69
FC
540=item *
541
542When C<`...`> or C<qx/.../> calls a C<readpipe> override, double-quotish
543interpolation now happens, as is the case when there is no override.
544Previously, the presence of an override would make these quote-like
545operators act like C<q{}>, suppressing interpolation. [perl #115330]
546
547=item *
548
549C<<<`...`> here-docs (with backticks as the delimiters) now call
550C<readpipe> overrides. [perl #119827]
551
a7b82b2f
FC
552=item *
553
554The presence of a lexical sub named "CORE" no longer stops the CORE::
555prefix from working.
556
03b7e81e
FC
557=item *
558
559C<&CORE::exit()> and C<&CORE::die()> now respect L<vmsish> hints.
560
d0fcfa00
FC
561=item *
562
563Undefining a glob that triggers a DESTROY method that undefines the same
564glob is now safe. It used to produce "Attempt to free unreferenced glob
565pointer" warnings and leak memory.
566
424623a2
FC
567=item *
568
569If subroutine redefinition (C<eval 'sub foo{}'> or C<newXS> for XS code)
570triggers a DESTROY method on the sub that is being redefined, and that
571method assigns a subroutine to the same slot (C<*foo = sub {}>), C<$_[0]>
e2aa288a
FC
572is no longer left pointing to a freed scalar. Now DESTROY is delayed until
573the new subroutine has been installed.
424623a2 574
812998f1
FC
575=item *
576
577C<s///>, C<tr///> and C<y///> now work when a wide character is used as the
578delimiter. [perl #120463]
579
28ee95bc 580=back
508c1ff6 581
28ee95bc 582=head1 Known Problems
7492c6c5 583
28ee95bc
SH
584XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
585tests that had to be C<TODO>ed for the release would be noted here. Unfixed
586platform specific bugs also go here.
254a1e67 587
28ee95bc 588[ List each fix as a =item entry ]
254a1e67 589
28ee95bc 590=over 4
254a1e67
SH
591
592=item *
593
a7b82b2f
FC
594C<do CORE()> used to call a sub named "CORE" and treat its return value as
595a file name to execute. A bug fix inadvertently caused it to be
596interpreted as the deprecated "do-SUB" construct. (Yes, C<do
597I<bareword>()> is inconsistent.) This will likely be changed back.
7492c6c5 598
09f4604f 599=back
cfbe45f9 600
28ee95bc 601=head1 Obituary
c84b5497 602
28ee95bc
SH
603XXX If any significant core contributor has died, we've added a short obituary
604here.
c84b5497 605
28ee95bc 606=head1 Acknowledgements
c84b5497 607
28ee95bc 608XXX Generate this with:
c84b5497 609
28ee95bc 610 perl Porting/acknowledgements.pl v5.19.5..HEAD
f5b73711 611
44691e6f
AB
612=head1 Reporting Bugs
613
e08634c5
SH
614If you find what you think is a bug, you might check the articles recently
615posted to the comp.lang.perl.misc newsgroup and the perl bug database at
616http://rt.perl.org/perlbug/ . There may also be information at
617http://www.perl.org/ , the Perl Home Page.
44691e6f 618
e08634c5
SH
619If you believe you have an unreported bug, please run the L<perlbug> program
620included with your release. Be sure to trim your bug down to a tiny but
621sufficient test case. Your bug report, along with the output of C<perl -V>,
622will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
44691e6f
AB
623
624If the bug you are reporting has security implications, which make it
e08634c5
SH
625inappropriate to send to a publicly archived mailing list, then please send it
626to perl5-security-report@perl.org. This points to a closed subscription
627unarchived mailing list, which includes all the core committers, who will be
628able to help assess the impact of issues, figure out a resolution, and help
f9001595 629co-ordinate the release of patches to mitigate or fix the problem across all
e08634c5
SH
630platforms on which Perl is supported. Please only use this address for
631security issues in the Perl core, not for modules independently distributed on
632CPAN.
44691e6f
AB
633
634=head1 SEE ALSO
635
e08634c5
SH
636The F<Changes> file for an explanation of how to view exhaustive details on
637what changed.
44691e6f
AB
638
639The F<INSTALL> file for how to build Perl.
640
641The F<README> file for general stuff.
642
643The F<Artistic> and F<Copying> files for copyright information.
644
645=cut