Bump all Math::BigInt $VERSIONs as per 945313f0ae following a0732aaa4b
[perl.git] / pod / perldelta.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 [ this is a template for a new perldelta file.  Any text flagged as XXX needs
6 to be processed before release. ]
7
8 perldelta - what is new for perl v5.21.4
9
10 =head1 DESCRIPTION
11
12 This document describes differences between the 5.21.3 release and the 5.21.4
13 release.
14
15 If you are upgrading from an earlier release such as 5.21.2, first read
16 L<perl5213delta>, which describes differences between 5.21.2 and 5.21.3.
17
18 =head1 Notice
19
20 XXX Any important notices here
21
22 =head1 Core Enhancements
23
24 XXX New core language features go here.  Summarize user-visible core language
25 enhancements.  Particularly prominent performance optimisations could go
26 here, but most should go in the L</Performance Enhancements> section.
27
28 [ List each enhancement as a =head2 entry ]
29
30 =head2 Infinity and NaN (not-a-number) handling improved
31
32 Floating point values are able to hold the special values infinity
33 (also -infinity), and NaN (not-a-number).  Now we more robustly recognize
34 and propagate the value in computations, and on output normalize them
35 to C<Inf> and C<NaN>.
36
37 See also the L<POSIX> enhancements.
38
39 =head1 Security
40
41 XXX Any security-related notices go here.  In particular, any security
42 vulnerabilities closed should be noted here rather than in the
43 L</Selected Bug Fixes> section.
44
45 [ List each security issue as a =head2 entry ]
46
47 =head1 Incompatible Changes
48
49 XXX For a release on a stable branch, this section aspires to be:
50
51     There are no changes intentionally incompatible with 5.XXX.XXX
52     If any exist, they are bugs, and we request that you submit a
53     report.  See L</Reporting Bugs> below.
54
55 [ List each incompatible change as a =head2 entry ]
56
57 =head2 Changes to the C<*> prototype
58
59 The C<*> character in a subroutine's prototype used to allow barewords
60 to take precedence over most, but not all subroutines.  It was never
61 consistent and exhibited buggy behaviour.
62
63 Now it has been changed, so subroutines always take precedence over
64 barewords, which brings it into conformity with similarly prototyped
65 built-in functions:
66
67     sub splat($) { ... }
68     sub foo { ... }
69     splat(foo); # now always splat(foo())
70     splat(bar); # still splat('bar') as before
71     close(foo); # close(foo())
72     close(bar); # close('bar')
73
74 =head1 Deprecations
75
76 XXX Any deprecated features, syntax, modules etc. should be listed here.
77
78 =head2 Module removals
79
80 XXX Remove this section if inapplicable.
81
82 The following modules will be removed from the core distribution in a
83 future release, and will at that time need to be installed from CPAN.
84 Distributions on CPAN which require these modules will need to list them as
85 prerequisites.
86
87 The core versions of these modules will now issue C<"deprecated">-category
88 warnings to alert you to this fact.  To silence these deprecation warnings,
89 install the modules in question from CPAN.
90
91 Note that these are (with rare exceptions) fine modules that you are encouraged
92 to continue to use.  Their disinclusion from core primarily hinges on their
93 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
94 not usually on concerns over their design.
95
96 =over
97
98 =item XXX
99
100 XXX Note that deprecated modules should be listed here even if they are listed
101 as an updated module in the L</Modules and Pragmata> section.
102
103 =back
104
105 [ List each other deprecation as a =head2 entry ]
106
107 =head1 Performance Enhancements
108
109 XXX Changes which enhance performance without changing behaviour go here.
110 There may well be none in a stable release.
111
112 [ List each enhancement as a =item entry ]
113
114 =over 4
115
116 =item *
117
118 Subroutines with an empty prototype and bodies containing just C<undef> are
119 now eligible for inlining.
120 L<[perl #122728]|https://rt.perl.org/Ticket/Display.html?id=122728>
121
122 =item *
123
124 Subroutines in packages no longer need to carry typeglobs around with them.
125 Declaring a subroutine will now put a simple sub reference in the stash if
126 possible, saving memory.  The typeglobs still notionally exist, so
127 accessing them will cause the subroutine reference to be upgraded to a
128 typeglob.  This optimisation does not currently apply to XSUBs or exported
129 subroutines, and method calls will undo it, since they cache things in
130 typeglobs.
131 L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
132
133 =back
134
135 =head1 Modules and Pragmata
136
137 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
138 go here.  If Module::CoreList is updated, generate an initial draft of the
139 following sections using F<Porting/corelist-perldelta.pl>.  A paragraph summary
140 for important changes should then be added by hand.  In an ideal world,
141 dual-life modules would have a F<Changes> file that could be cribbed.
142
143 [ Within each section, list entries as a =item entry ]
144
145 =head2 New Modules and Pragmata
146
147 =over 4
148
149 =item *
150
151 XXX
152
153 =back
154
155 =head2 Updated Modules and Pragmata
156
157 =over 4
158
159 =item *
160
161 L<Archive::Tar> has been upgraded from version 2.00 to 2.02.
162
163 Tests can now be run in parallel.
164
165 =item *
166
167 L<Attribute::Handlers> has been upgraded from version 0.96 to 0.97.
168
169 =item *
170
171 L<attributes> has been upgraded from version 0.22 to 0.23.
172
173 =item *
174
175 L<B> has been upgraded from version 1.50 to 1.51.
176
177 It provides a new C<B::safename> function, based on the existing
178 C<< B::GV->SAFENAME >>, that converts "\cOPEN" to "^OPEN".
179
180 =item *
181
182 L<B::Concise> has been upgraded from version 0.992 to 0.993.
183
184 =item *
185
186 L<B::Deparse> has been upgraded from version 1.27 to 1.28.
187
188 It now deparses C<our(I<LIST>)> and typed lexical (C<my Dog $spot>) correctly.
189
190 =item *
191
192 L<bignum> has been upgraded from version 0.37 to 0.38.
193
194 =item *
195
196 L<constant> has been upgraded from version 1.31 to 1.32.
197
198 It now accepts fully-qualified constant names, allowing constants to be defined
199 in packages other than the caller.
200
201 =item *
202
203 L<CPAN::Meta::Requirements> has been upgraded from version 2.126 to 2.128.
204
205 =item *
206
207 L<experimental> has been upgraded from version 0.008 to 0.010.
208
209 =item *
210
211 L<ExtUtils::CBuilder> has been upgraded from version 0.280217 to 0.280219.
212 L<[perl #122675]|https://rt.perl.org/Ticket/Display.html?id=122675>
213
214 =item *
215
216 L<ExtUtils::Install> has been upgraded from version 1.68 to 2.04.
217
218 =item *
219
220 L<ExtUtils::Manifest> has been upgraded from version 1.65 to 1.68.
221 L<[perl #122415]|https://rt.perl.org/Ticket/Display.html?id=122415>
222
223 =item *
224
225 L<File::Find> has been upgraded from version 1.27 to 1.28.
226
227 C<find()> and C<finddepth()> will now warn if passed inappropriate or
228 misspelled options.
229
230 =item *
231
232 L<Getopt::Std> has been upgraded from version 1.10 to 1.11.
233
234 =item *
235
236 L<HTTP::Tiny> has been upgraded from version 0.047 to 0.049.
237
238 =item *
239
240 L<IO> has been upgraded from version 1.33 to 1.34.
241
242 =item *
243
244 L<IO::Socket::IP> has been upgraded from version 0.31 to 0.32.
245
246 =item *
247
248 L<Locale::Codes> has been upgraded from version 3.31 to 3.32.
249
250 =item *
251
252 L<Math::BigInt> has been upgraded from version 1.9996 to 1.9997.
253
254 =item *
255
256 L<Module::CoreList> has been upgraded from version 5.021003 to 5.20140915.
257
258 =item *
259
260 L<overload> has been upgraded from version 1.22 to 1.23.
261
262 =item *
263
264 PathTools has been upgraded from version 3.49 to 3.50.
265
266 =item *
267
268 L<Pod::Perldoc> has been upgraded from version 3.23 to 3.24.
269
270 =item *
271
272 L<POSIX> has been upgraded from version 1.42 to 1.43.
273
274 The C99 math functions and constants (for example acosh, round, M_E, M_PI) have
275 been added.
276
277 =item *
278
279 Scalar-List-Utils has been upgraded from version 1.39 to 1.41.
280
281 =item *
282
283 L<Term::ReadLine> has been upgraded from version 1.14 to 1.15.
284
285 =item *
286
287 L<Test::Harness> has been upgraded from version 3.32 to 3.33.
288
289 =item *
290
291 L<Test::Simple> has been upgraded from version 1.001003 to 1.001006.
292
293 =item *
294
295 L<threads> has been upgraded from version 1.95 to 1.96.
296
297 =item *
298
299 L<Time::Piece> has been upgraded from version 1.27 to 1.29.
300
301 =item *
302
303 L<version> has been upgraded from version 0.9908 to 0.9909.
304
305 =back
306
307 =head2 Removed Modules and Pragmata
308
309 =over 4
310
311 =item *
312
313 XXX
314
315 =back
316
317 =head1 Documentation
318
319 XXX Changes to files in F<pod/> go here.  Consider grouping entries by
320 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
321
322 =head2 New Documentation
323
324 XXX Changes which create B<new> files in F<pod/> go here.
325
326 =head3 L<XXX>
327
328 XXX Description of the purpose of the new file here
329
330 =head2 Changes to Existing Documentation
331
332 XXX Changes which significantly change existing files in F<pod/> go here.
333 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
334 section.
335
336 =head3 L<perlsyn>
337
338 =over 4
339
340 =item *
341
342 An ambiguity in the documentation of the Ellipsis statement has
343 been corrected.
344 L<[perl #122661]|https://rt.perl.org/Ticket/Display.html?id=122661>
345
346 =back
347
348 =head3 L<perlxs>
349
350 =over 4
351
352 =item *
353
354 Added a discussion of locale issues in XS code.
355
356 =back
357
358 =head1 Diagnostics
359
360 The following additions or changes have been made to diagnostic output,
361 including warnings and fatal error messages.  For the complete list of
362 diagnostic messages, see L<perldiag>.
363
364 XXX New or changed warnings emitted by the core's C<C> code go here.  Also
365 include any changes in L<perldiag> that reconcile it to the C<C> code.
366
367 =head2 New Diagnostics
368
369 XXX Newly added diagnostic messages go under here, separated into New Errors
370 and New Warnings
371
372 =head3 New Errors
373
374 =over 4
375
376 =item *
377
378 XXX L<message|perldiag/"message">
379
380 =back
381
382 =head3 New Warnings
383
384 =over 4
385
386 =item *
387
388 XXX L<message|perldiag/"message">
389
390 =back
391
392 =head2 Changes to Existing Diagnostics
393
394 XXX Changes (i.e. rewording) of diagnostic messages go here
395
396 =over 4
397
398 =item *
399
400 L<Global symbol "%s" requires explicit package name|perldiag/Global symbol "%s" requires explicit package name (did you forget to declare "my %s"?)>
401
402 This message has had '(did you forget to declare "my %s"?)' appended to it,
403 to make it more helpful to new Perl programmers.  [perl #121638]
404
405 =back
406
407 =head2 Diagnostic Removals
408
409 =over 4
410
411 =item *
412
413 "Constant is not a FOO reference"
414
415 Compile-time checking of constant dereferencing (e.g.,
416 C<< my_constant->() >>) has been removed, since it was not taking
417 overloading into account.
418 L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456>
419 L<[perl #122607]|https://rt.perl.org/Ticket/Display.html?id=122607>
420
421 =item *
422
423 The warning "Ambiguous use of -foo resolved as -&foo()" has been removed.
424 There is actually no ambiguity here, and this impedes the use of negated
425 constants; e.g., C<-Inf>.
426
427 =item *
428
429 The little-known C<my Class $var> syntax (see L<fields> and L<attributes>)
430 could get confused in the scope of C<use utf8> if C<Class> were a constant
431 whose value contained Latin-1 characters.
432
433 =back
434
435 =head1 Utility Changes
436
437 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
438 Most of these are built within the directory F<utils>.
439
440 [ List utility changes as a =head2 entry for each utility and =item
441 entries for each change
442 Use L<XXX> with program names to get proper documentation linking. ]
443
444 =head2 L<XXX>
445
446 =over 4
447
448 =item *
449
450 XXX
451
452 =back
453
454 =head1 Configuration and Compilation
455
456 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
457 go here.  Any other changes to the Perl build process should be listed here.
458 However, any platform-specific changes should be listed in the
459 L</Platform Support> section, instead.
460
461 [ List changes as a =item entry ].
462
463 =over 4
464
465 =item *
466
467 XXX
468
469 =back
470
471 =head1 Testing
472
473 XXX Any significant changes to the testing of a freshly built perl should be
474 listed here.  Changes which create B<new> files in F<t/> go here as do any
475 large changes to the testing harness (e.g. when parallel testing was added).
476 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
477 that they represent may be covered elsewhere.
478
479 [ List each test improvement as a =item entry ]
480
481 =over 4
482
483 =item *
484
485 XXX
486
487 =back
488
489 =head1 Platform Support
490
491 XXX Any changes to platform support should be listed in the sections below.
492
493 [ Within the sections, list each platform as a =item entry with specific
494 changes as paragraphs below it. ]
495
496 =head2 New Platforms
497
498 XXX List any platforms that this version of perl compiles on, that previous
499 versions did not.  These will either be enabled by new files in the F<hints/>
500 directories, or new subdirectories and F<README> files at the top level of the
501 source tree.
502
503 =over 4
504
505 =item XXX-some-platform
506
507 XXX
508
509 =back
510
511 =head2 Discontinued Platforms
512
513 XXX List any platforms that this version of perl no longer compiles on.
514
515 =over 4
516
517 =item XXX-some-platform
518
519 XXX
520
521 =back
522
523 =head2 Platform-Specific Notes
524
525 XXX List any changes for specific platforms.  This could include configuration
526 and compilation changes or changes in portability/compatibility.  However,
527 changes within modules for platforms should generally be listed in the
528 L</Modules and Pragmata> section.
529
530 =over 4
531
532 =item XXX-some-platform
533
534 XXX
535
536 =back
537
538 =head1 Internal Changes
539
540 XXX Changes which affect the interface available to C<XS> code go here.  Other
541 significant internal changes for future core maintainers should be noted as
542 well.
543
544 [ List each change as a =item entry ]
545
546 =over 4
547
548 =item *
549
550 C<save_re_context> no longer does anything and has been moved to
551 F<mathoms.c>.
552
553 =item *
554
555 C<cv_name> is a new API function that can be passed a CV or GV.  It returns
556 an SV containing the name of the subroutine for use in diagnostics.
557 L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735>
558 L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
559
560 =item *
561
562 C<cv_set_call_checker_flags> is a new API function that works like
563 C<cv_set_call_checker>, except that it allows the caller to specify whether
564 the call checker requires a full GV for reporting the subroutine's name, or
565 whether it could be passed a CV instead.  Whatever value is passed will be
566 acceptable to C<cv_name>.  C<cv_set_call_checker> guarantees there will be
567 a GV, but it may have to create one on the fly, which is inefficient.
568 L<[perl #116735]|https://rt.perl.org/Ticket/Display.html?id=116735>
569
570 =item *
571
572 C<CvGV> (which is not part of the API) is now a more complex macro, which
573 may call a function and reify a GV.  For those cases where is has been used
574 as a boolean, C<CvHASGV> has been added, which will return true for CVs
575 that notionally have GVs, but without reifying the GV.  C<CvGV> also
576 returns a GV now for lexical subs.
577 L<[perl #120441]|https://rt.perl.org/Ticket/Display.html?id=120441>
578
579 =item *
580
581 Added L<perlapi/sync_locale>.
582 Changing the program's locale should be avoided by XS code.  Nevertheless,
583 certain non-Perl libraries called from XS, such as C<Gtk> do so.  When this
584 happens, Perl needs to be told that the locale has changed.  Use this function
585 to do so, before returning to Perl.
586
587 =back
588
589 =head1 Selected Bug Fixes
590
591 XXX Important bug fixes in the core language are summarized here.  Bug fixes in
592 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
593
594 [ List each fix as a =item entry ]
595
596 =over 4
597
598 =item *
599
600 XXX
601
602 =item *
603
604 Constant dereferencing now works correctly for typeglob constants.
605 Previously the glob was stringified and its name looked up.  Now the glob
606 itself is used.
607 L<[perl #69456]|https://rt.perl.org/Ticket/Display.html?id=69456>
608
609 =item *
610
611 When parsing a funny character ($ @ % &) followed by braces, the parser no
612 longer tries to guess whether it is a block or a hash constructor (causing
613 a syntax error when it guesses the latter), since it can only be a block.
614
615 =item *
616
617 C<undef $reference> now frees the referent immediately, instead of hanging
618 on to it until the next statement.
619 L<[perl #122556]|https://rt.perl.org/Ticket/Display.html?id=122556>
620
621 =item *
622
623 Various cases where the name of a sub is used (autoload, overloading, error
624 messages) used to crash for lexical subs, but have been fixed.
625
626 =item *
627
628 Bareword lookup now tries to avoid vivifying packages if it turns out the
629 bareword is not going to be a subroutine name.
630
631 =item *
632
633 Compilation of anonymous constants (e.g., C<sub () { 3 }>) no longer
634 deletes any subroutine named C<__ANON__> in the current package.  Not only
635 was C<*__ANON__{CODE}> cleared, but there was a memory leak, too.  This bug
636 goes back to perl 5.8.0.
637
638 =item *
639
640 Stub declarations like C<sub f;> and C<sub f ();> no longer wipe out
641 constants of the same name declared by C<use constant>.  This bug was
642 introduced in perl 5.10.0.
643
644 =item *
645
646 Under some conditions a warning raised in compilation of regular
647 expression patterns could be displayed multiple times.  This is now
648 fixed.
649
650 =item *
651
652 C<qr/[\N{named sequence}]/> now works properly in many instances.  Some
653 names known to C<\N{...}> refer to a sequence of multiple characters,
654 instead of the usual single character.  Bracketed character classes
655 generally only match single characters, but now special handling has
656 been added so that they can match named sequences, but not if the class
657 is inverted or the sequence is specified as the beginning or end of a
658 range.  In these cases, the only behavior change from before is a slight
659 rewording of the fatal error message given when this class is part of a
660 C<?[...])> construct.  When the C<[...]> stands alone, the same
661 non-fatal warning as before is raised, and only the first character in
662 the sequence is used, again just as before.
663
664 =item *
665
666 Tainted constants evaluated at compile time no longer cause unrelated
667 statements to become tainted.
668 L<[perl #122669]|https://rt.perl.org/Ticket/Display.html?id=122669>
669
670 =item *
671
672 C<open $$fh, ...>, which vivifies a handle with a name like "main::_GEN_0",
673 was not giving the handle the right reference count, so a double free could
674 happen.
675
676 =item *
677
678 When deciding that a bareword was a method name, the parser would get
679 confused if an "our" sub with the same name existed, and look up the method
680 in the package of the "our" sub, instead of the package of the invocant.
681
682 =item *
683
684 The parser no longer gets confused by C<\U=> within a double-quoted string.
685 It used to produce a syntax error, but now compiles it correctly.
686 L<[perl #80368]|https://rt.perl.org/Ticket/Display.html?id=80368>
687
688 =item *
689
690 It has always been the intention for the C<-B> and C<-T> file test
691 operators to treat UTF-8 encoded files as text.
692 (L<perlfunc|perlfunc/-X FILEHANDLE> has been updated to say this.)
693 Previously, it was possible for some files to be considered UTF-8 that
694 actually weren't valid UTF-8.  This is now fixed.  The operators now
695 work on EBCDIC platforms as well.
696
697 =item *
698
699 Under some conditions warning messages raised during regular expression
700 pattern compilation were being output more than once.  This has now been
701 fixed.
702
703 =item *
704
705 A regression has been fixed that was introduced in v5.20.0 (fixed in
706 v5.20.1 as well as here) in which a UTF-8 encoded regular expression
707 pattern that contains a single ASCII lowercase letter does not match its
708 uppercase counterpart.
709 L<[perl #122655]|https://rt.perl.org/Ticket/Display.html?id=122655>
710
711 =item *
712
713 Constant folding could incorrectly suppress warnings if lexical warnings
714 (C<use warnings> or C<no warnings>) were not in effect and C<$^W> were
715 false at compile time and true at run time.
716
717 =item *
718
719 Loading UTF8 tables during a regular expression match could cause assertion
720 failures under debugging builds if the previous match used the very same
721 regular expression.
722 L<[perl #122747]|https://rt.perl.org/Ticket/Display.html?id=122747>
723
724 =item *
725
726 Thread cloning used to work incorrectly for lexical subs, possibly causing
727 crashes or double frees on exit.
728
729 =item *
730
731 Since perl 5.14.0, deleting C<$SomePackage::{__ANON__}> and then undefining
732 an anonymous subroutine could corrupt things internally, resulting in
733 L<Devel::Peek> crashing or L<B.pm|B> giving nonsensical data.  This has
734 been fixed.
735
736 =item *
737
738 C<(caller $n)[3]> now reports names of lexical subs, instead of treating
739 them as "(unknown)".
740
741 =item *
742
743 C<sort subname LIST> now supports lexical subs for the comparison routine.
744
745 =item *
746
747 Aliasing (e.g., via C<*x = *y>) could confuse list assignments that mention
748 the two names for the same variable on either side, causing wrong values to
749 be assigned.  [perl #15667]
750
751 =item *
752
753 Long here-doc terminators could cause a bad read on short lines of input.
754 This has been fixed.  It is doubtful that any crash could have occurred.
755 This bug goes back to when here-docs were introduced in perl 3.000
756 twenty-five years ago.
757
758 =back
759
760 =head1 Known Problems
761
762 XXX Descriptions of platform agnostic bugs we know we can't fix go here.  Any
763 tests that had to be C<TODO>ed for the release would be noted here.  Unfixed
764 platform specific bugs also go here.
765
766 [ List each fix as a =item entry ]
767
768 =over 4
769
770 =item *
771
772 XXX
773
774 =back
775
776 =head1 Errata From Previous Releases
777
778 =over 4
779
780 =item *
781
782 XXX Add anything here that we forgot to add, or were mistaken about, in
783 the perldelta of a previous release.
784
785 =back
786
787 =head1 Obituary
788
789 XXX If any significant core contributor has died, we've added a short obituary
790 here.
791
792 =head1 Acknowledgements
793
794 XXX Generate this with:
795
796   perl Porting/acknowledgements.pl v5.21.3..HEAD
797
798 =head1 Reporting Bugs
799
800 If you find what you think is a bug, you might check the articles recently
801 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
802 https://rt.perl.org/ .  There may also be information at
803 http://www.perl.org/ , the Perl Home Page.
804
805 If you believe you have an unreported bug, please run the L<perlbug> program
806 included with your release.  Be sure to trim your bug down to a tiny but
807 sufficient test case.  Your bug report, along with the output of C<perl -V>,
808 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
809
810 If the bug you are reporting has security implications, which make it
811 inappropriate to send to a publicly archived mailing list, then please send it
812 to perl5-security-report@perl.org.  This points to a closed subscription
813 unarchived mailing list, which includes all the core committers, who will be
814 able to help assess the impact of issues, figure out a resolution, and help
815 co-ordinate the release of patches to mitigate or fix the problem across all
816 platforms on which Perl is supported.  Please only use this address for
817 security issues in the Perl core, not for modules independently distributed on
818 CPAN.
819
820 =head1 SEE ALSO
821
822 The F<Changes> file for an explanation of how to view exhaustive details on
823 what changed.
824
825 The F<INSTALL> file for how to build Perl.
826
827 The F<README> file for general stuff.
828
829 The F<Artistic> and F<Copying> files for copyright information.
830
831 =cut