WinSnap 歷史版本列表
WinSnap 是一個快速的用戶友好的工具,用於採取和編輯截圖。它可以很容易地捕捉包括 Aero Glass 在內的透明背景的非矩形窗口,並立即增加具有專業外觀的陰影,反射,高光,輪廓,水印和色彩效果的屏幕截圖。此外,它允許您快速編輯和註釋後的屏幕截圖.隨著少數的屏幕捕獲和圖像編輯功能,WinSnap 派上用場,無論你需要偶爾的截圖或您的工作需要用戶手冊,演示文稿,博客或專業截圖網站.WinSna... WinSnap 軟體介紹更新時間:2022-03-19
更新細節:
What's new in this version:
- The usual round of package updates
更新時間:2022-01-29
更新細節:
What's new in this version:
- Fix empty ca-bundle.crt when using the .tar.xz or the .sfx and not using a login shell
更新時間:2022-01-18
更新細節:
What's new in this version:
- 8MB smaller installer by splitting out the perl documentation
- The usual round of package updates
更新時間:2021-11-30
更新細節:
更新時間:2021-10-30
更新細節:
What's new in this version:
- WinSnap now captures shadows and rounded corners of windows, menus and dialogs on Windows 11. It also recognizes windows in snap layouts which are displayed with square corners.
- Added official support for Windows 11
- Added rounded corners and shadow detection for Windows 11
- WinSnap recognizes square corners of windows in layouts
- Improved object selection for some .Net GUI applications
- Removed an extra folder and URL from Startup menu
- Some other minor improvements and bug fixes
更新時間:2020-09-22
更新細節:
What's new in this version:
- Updated language files: Czech
- Added X shortcut for Exit command in tray menu
- Some other minor improvements and bug fixes
更新時間:2020-07-16
更新細節:
What's new in this version:
- Fixed menu capture in MS Office applications
- Some other minor improvements and bug fixes
更新時間:2020-07-16
更新細節:
What's new in this version:
- New: Added the support for some new Java protections
更新時間:2020-07-16
更新細節:
What's new in this version:
dotConnect for SQLite Professional 5.15.1686
- The sqlite3.dll library that is included into the installation package is updated to version 3.32.3
- LinqConnect (formerly known as LINQ to SQLite)
- The "Could not find element type in model" bug when loading XML mapping in .NET Standard LinqConnect assemblies is fixed
- The bug with using enums via .NET Standard compliant assemblies is fixed
Entity Framework support:
- The bug with incorrect SQL generation when using .Substring() in a .Select() statement in EF Core 2 is fixed
dotConnect for SQLite Professional 5.15.1666
- Visual Studio 2019 version 16.7 Preview is supported
- The sqlite3.dll library that is included into the installation package is updated to version 3.32.2
Entity Developer:
- .NET 5 is added to the list of available Target Framework versions in Create Model Wizard and Model Settings in EF6, EF Core, LinqConnect models
- The new option "Execute procedures for result set detection" is added to Model Settings of EF Core Model to control obtaining metadata of a procedure or function result set
- The new option "Use NULL parameter values" is added to Model Settings of EF Core Model to specify whether NULL parameter values are used for stored procedure execution
- The new option "Add complex types to diagram" is added to Model Settings of EF Core Model to control behavior of Create Model Wizard and Update Model From Database Wizard
- The new option "Add new complex types to the current diagram" is added to Update Model From Database Wizard of EF Core Model
- The new Primitive Default Value Generation property is added to EF, EF Core templates to determine whether to generate initialization for a primitive property based on database DEFAULT column value
- The new property Collection Property Type is added to EF template "DbContext" and EF Core template "EF Core" to determine .NET type used as a property type for the Many end of associations
- The new property Collection Initialization Type is added to EF template "DbContext" and EF Core template "EF Core" to determine .NET type used for initialization of the Many end of association; if it is set to None, then no initialization is generated
- The new property "Nullable Reference Types" is added to C# templates of EF, EF Core models to specify whether C# 8 nullable reference types and non-nullable reference types must be generated
- The new partial method is added to the OnModelCreating(DbModelBuilder modelBuilder) method generated by DbContext template of EF model
- The EF Core model deserialization is improved: Entity Developer shows the full list of detected errors and tries to load the model with invalid elements or ignores such elements if their deserialization is not possible
Console Entity Developer improvements:
- Import of stored procedures and functions via Create-Model command is supported
- The new options --Procedures and --Functions are added to Create-Model command for filtering stored procedures and functions; by default all procedures/functions are imported
- The new option --Execute is added to Create-Model command for executing procedures/functions to get metadata from result set
- The asterisk symbol (*) is supported in --Tables and --Views parameters of Create-Model to include all objects
- The bug with opening connection via some supported providers is fixed
- The bug with enumerating values separated with comma and without whitespace in --Templates, --Schemas, --Tables parameters is fixed
- The DbProviderFactories registration is implemented in Create Model Wizard for EF6 models and .NET Framework provider assemblies
- The new property Target Framework is added to Create Model Wizard and Model Settings of EF6 models
- The compatibility issue with JetBrains ReSharper is fixed
- The behavior is changed: the definition of auto-implemented property is put now on the single line with
- C# DbContext template of Devart Entity Model when ImplementINotifyPropertyChanging=False and ImplementINotifyPropertyChanged=False and PropertyChangePartialMethods=False
- C# EF Core template of Devart EF Core Model when PropertyChangeNotifiers=False and PropertyChangePartialMethods=False
- The behavior for the new EF, EF Core models is changed: Primitive Default Value Generation is set to Literal now instead of LiteralOrExpression
- The behavior is changed: the names of system types are generated without "System." prefix now in EF Core models; for example, it is DateTime instead of System.DateTime
- The behavior is changed: only one confirmation for executing stored procedure is requested by Entity Developer when drag&drop-ing procedure from Database Explorer to Model Explorer or diagram surface
- The behavior is changed: now the EF Core template generates an additional partial class for the context class when "File Per Class" and "Generate Partial Class" are set to True
- The bug with detecting strings, being expressions, as string literals when generating initialization of string properties basing on database columns' default values in EF, EF Core models is fixed
- The bug with missing default value in the generated code basing on DEFAULT value in a database, when any of ImplementINotifyPropertyChanging, ImplementINotifyPropertyChanged, PropertyChangePartialMethods options of DbContext template in EF is turned on, is fixed
- The bug with code generation for zero-or-one to zero-or-one association in the EF6 model with the DbContext template (Fluent Mapping=True) is fixed
- The bug with generating .HasMany end of one-to-many association in EF Core Model is fixed
- The bug with generating TPH mapping in EF Core 3 model is fixed
- The bug with false appearing the "Table or view '...' has no primary key columns, and the entity key for the corresponding storage entity was calculated automatically from other fields." warning in the Error List window is fixed
- The bug with generating new Guid() with Primitive Default Value Generation=Literal in EF, EF Core models is fixed
LinqConnect (formerly known as LINQ to SQLite):
- The bug with materializing elements, the types of which are explicitly converted from non-nullable to nullable on the client side, is fixed
- The bug with incorrect detection of altered column comment in a many-to-many association join table by Update From Database Wizard is fixed
Entity Framework support:
- Entity Framework 6.4.4 is supported
- The translation of the DateTime.AddMinutes() method in LINQ query into SQL statement in EF Core is supported
- The bug with adding / subtracting DateTime and TimeSpan, DateTimeOffset and TimeSpan values in LINQ query in EF Core 3 is fixed
- The bug with SQL generation in EF Core 3, when enum values are used in CASE and COALESCE statements, is fixed
- The EF6 provider registration used with .NET Standard compliant assemblies is improved: the [DbConfigurationType(typeof(SQLiteEntityProviderServicesConfiguration))] attribute set for DbContext descendant allows now calling the DbContext constructor, that accepts a connection string, with no need to register a custom IDbConnectionFactory implementation
dotConnect for SQLite Professional 5.15.1612
LinqConnect (formerly known as LINQ to SQLite):
- The insert of the object, the type of which is an unmapped class inherited from a mapped class, is supported
- The bug with throwing System.NullReferenceException, when constructing the error saying that unmapped class is not supported, is fixed
Entity Developer:
- Command-line interface is implemented in a standalone Entity Developer
- The new property Context Name is added to Model Properties in EF Core Model
- The new property Target Framework is added to Model Properties in EF Core Model
- The provider registration is improved: requirement to put provider registration entry in the config file is not obligatory anymore
- Create Model Wizard is improved: now it allows installing multiple NuGet packages on the final step
- Model file tree in .NET Core / .NET Standard projects is improved: all generated code files and model files are nested under the same node in Solution Explorer
Entity Framework support:
- Entity Framework Core 3.1.3 is supported
- The .ToString() call for numbers, DateTime/DateTimeOffset properties and values in LINQ queries in EF Core is supported
- The call of Convert.ToString(value) in LINQ queries in EF Core is supported
- The bug with comparing milliseconds of DateTime properties is fixed
dotConnect for SQLite Professional 5.15.1583
- The SQLiteDataTable and SQLiteDataSet classes are supported in .NET Standard 2.0
- The behavior is changed: pool is automatically cleared when AppDomain is being closed
Entity Developer:
- The bug with returning multiple result sets in code generated by the EF Core template is fixed
Entity Framework support:
- Entity Framework Core 3.1.1 is supported
- The bug with using nullable enum properties with default mapping to integers in LINQ query in EF Core 3.1 is fixed
- The bug with using value converters detected automatically by .HasConversion() in EF Core 3 is fixed
- The bug with using NULL constant values in EF Core 3 is fixed
- The bug with using binary operators AND, OR in EF Core 3 is fixed
- The bug with setting a default value for DateTime and TimeSpan properties via EF Core Code-First Migrations is fixed
dotConnect for SQLite Professional 5.15.1541
- Visual Studio 2019 version 16.5 Preview is supported
- The bug with using Toolbox component SQLiteDataSource in web projects of Visual Studio 2013, 2015, 2017, 2019 is fixed
- The bug with enabling Devart DataSet Editor in Visual Studio 2017 and Visual Studio 2019 is fixed
- LinqConnect (formerly known as LINQ to SQLite)
- The bug with using Toolbox component DbLinqDataSource in web projects of Visual Studio 2013, 2015, 2017, 2019 is fixed
Entity Developer
- The bug with creating one-to-one association basing on an optional FK in EF Core Model is fixed
- The bug with code generation for oneOrZero-to-one and one-to-many associations based on an optional FK in EF Core Model is fixed
- The bug with generating a mapping for a unique constraint specified in owned type property of EF Core Model is fixed
Entity Framework support:
- Entity Framework 6.4 is supported
- Entity Framework Core 3.1 is supported
- The new EntityEFCore3Devart.Data.Oracle.Entity.EFCore.dll assembly compiled with EF Core 3.1 and .NET Framework 4.6.1 is added
- The config.DatabaseScript.ForeignKey.IndexCreation configuration option is supported in EF Core 1/EF Core 2/EF Core 3
- The bug with creating a unique constraint in the database via EF Core Code-First Migrations is fixed
- The bug with applying .ValueGeneratedOnAdd() to the string, guid, byte[] properties with .Key() and without .HasDefaultValueSql() in EF Core is fixed
- The bug with using bitwise operators And, Or, Xor with Int64 arguments in LINQ query is fixed
- The bug with detecting implicit database column type, when model mapping and migration mapping are different, via EF Core Code-First Migrations is fixed
- The bug with generating SQL when using explicit cast in LINQ queries in EF Core 1/EF Core 2 is fixed
- The bug with throwing the "Null TypeMapping in Sql Tree" error by methods in LINQ query in EF Core 3 is fixed
dotConnect for SQLite Professional 5.14.1519
- The "Optimize rendering for screens with different pixel densities" feature of Visual Studio 2019 is supported by Devart DataSet Editor
Entity Developer:
- The Self-Contained Entity Configuration property is added to VB.NET version of EF Core template
- The Entities Configuration Output property is added to VB.NET version of EF Core template
- The code generation for the class properties with Alternate Key=True by VB.NET version of EF Core template is supported in EF Core model
- The bug with code generation, when Raw SQL Query is initialized in class properties, in EF Core 3 model is fixed
- The bug with generating .HasNoKey(), when Self-Contained Entity Configuration is set to True in properties of EF Core template, in EF Core 3 model is fixed
- The bug with generating alternate keys, when Self-Contained Entity Configuration is set to True in C# version of EF Core template, in EF Core model is fixed
Entity Framework support:
- The SQL generation in case of config.QueryOptions.UseCSharpNullComparisonBehavior=true in EF1/EF4/EF5/EF6 is improved
- The bug with using Scaffold-DbContext in EF Core 3 is fixed
- The bug with the redundant empty ORDER BY clause in a subquery, when paging is used, in EF Core 3 is fixed
- The bug with using .Contains within .Select of LINQ query in EF Core 2 is fixed
- The bug with generating invalid SQL when calling members of owned type in EF Core 2 is fixed
dotConnect for SQLite Professional 5.14.1504
Entity Developer:
- The DbContext template is improved: precision and scale for database types are generated now in EF4/EF5/EF6 models when Fluent Mapping=True and Mapping Generation Strategy=UseAttributes
- The bug with throwing the EntityFrameworkCoreVersion error in Create Model Wizard in a standalone Entity Developer is fixed
Entity Framework support:
- Entity Framework Core 2.2.6 is supported
dotConnect for SQLite Professional 5.14.1499
- The sqlite3.dll library that is included into the installation package is updated to version 3.30.1
- The "Optimize rendering for screens with different pixel densities" feature of Visual Studio 2019 is supported by Devart DataSet Manager
Entity Developer:
The DbContext template is improved for using Entity Framework 6.3:
- The "Configuration Type Name" property, which specifies the descendant of DbConfiguration class that should be used for code-based configuration, is added
- The "Use DbConfigurationType Attribute" property, which determines whether to register the configuration type specified in the ConfigurationTypeName property of the DbConfigurationType attribute, is added
- The DbProviderFactories.RegisterFactory method is generated when UseDbConfigurationTypeAttribute=true and ConfigurationTypeName='%Default%'
- With UseDbConfigurationTypeAttribute=false, the static constructor for registering factory and the new partial method OnStaticConfigured are generated
- The "Optimize rendering for screens with different pixel densities" feature of Visual Studio 2019 is supported
- The compatibility issue with JetBrains ReSharper is fixed
Entity Framework support:
- Entity Framework Core 3.0 is supported
- Entity Framework 6.3 is supported
- The lock for Microsoft.EntityFrameworkCore dependency is added to the NuGet package Devart.Data.SQLite.EFCore
dotConnect for SQLite Professional 5.13.1470
Entity Developer:
- Entity Framework 6.3 Preview 9 is supported for projects with target framework .NET Core 3 or .NET Standard 2.1
- The behaviour is changed: a plural form of names ending with "s" now has a longer version (for example, status -> statuses)
- The bug with applying the new Foreign Key's Delete Rule values SET DEFAULT and SET NULL by the Update Database From Model and Update Model From Database wizards is fixed (Entity Framework)
- The bug with copying a property with Primary Key=True / Entity Key=True to a complex type is fixed (Entity Framework)
- The bug with naming of a composing unique key by Create Model Wizard / Update From Database Wizard in EF Core is fixed (Entity Framework)
- The bug with invalid attempt to cast unsupported Visual Studio project to type 'VSLangProj.VSProject' is fixed
Entity Framework support:
- Entity Framework 6.3 Preview 9 is supported
- A new NuGet package Devart.Data.SQLite.EF6 with a .NET Standard 2.1 assembly, compatible with .NET Core 3, is added
- The bug with using the same database connection in several EF Core contexts is fixed
- The bug with applying a value converter to .Where expression with .Contains on nullable enum in EF Core 2 is fixed
dotConnect for SQLite Professional 5.12.1437
- The bug with throwing System.IndexOutOfRangeException when OracleParameter.Size=-1 is fixed
Entity Framework support:
- The bug with applying a value converter to a nullable column in EF Core 2 is fixed
- The bug with using the binary operator Add for the types 'System.String' and 'System.String' within LINQ query in EF Core 2 is fixed
dotConnect for SQLite Professional 5.12.1422
- The bug with throwing "Operation is not supported" by web providers, when the cookie is used, is fixed
Entity Developer:
- The ability to disable generation of the byte order mark (BOM) in the beginning of code files in a standalone Entity Developer is implemented
- The bug with design time copy/cut/paste functionality for entities is fixed
- The bug with invalid integer to enum conversion by a generated method, which is based on SQL query and returns a collection of entities, in EF Core 2 is fixed
Entity Framework support:
- The bug with applying a filter to the nullable property with implicit EnumToStringConverter via LINQ queries in EF Core 2 is fixed
- The bug with missing brackets around SELECT inside the generated CASE statement in EF Core 2 is fixed
- The bug with nullable parameters in EF Core 2 is fixed
- The bug with reopening connections in EF Core 2 is fixed
- The bug with incorrect exception message on opening connection, when ConnectionString is not set, by .NET Standard compliant assemblies is fixed
dotConnect for SQLite Professional 5.12.1402
- The sqlite3.dll library that is included into the installation package is updated to version 3.28.0
- Deprecated design-time Synchronous API calls are no longer used with Visual Studio 2019 and Visual Studio 2017
LinqConnect (formerly known as LINQ to MySQL):
- The bug with executing incorrect SQL request (cached during one of the previous calls), when a variable initialized with an empty collection participates in LINQ query, is fixed
Entity Framework support:
- Entity Framework Core 2.2.4 is supported
- The bug with closing database connection by context.Dispose() in the scope of a distributed transaction in EF Core 2 is fixed
- The bug with using a value converter, when the .NET data type remains the same, within the WHERE clause in EF Core 2 is fixed
dotConnect for SQLite Professional 5.12.1366
- Visual Studio 2019 is supported
- Entity Developer: the bug with processing DBNull returned by the function in EF Core is fixed
- Entity Framework support: the bug with using the "Generate Database from Model" wizard when working with Entity Framework 6 Tools is fixed
dotConnect for SQLite Professional 5.11.1357
- Visual Studio 2019 Release Candidate 4 is supported
- The sqlite3.dll library that is included into the installation package is updated to version 3.27.2
- The behavior is changed: reader.GetValue("text_column_with_nonstandard_typename") returns now the System.String object
- The bug with loss of changes, applied in different concurrent transactions, when journaling is not in the WAL mode, is fixed
LinqConnect (formerly known as LINQ to SQLite):
- The bug with using the System.Char argument as literal or variable in LINQ query is fixed
Entity Framework support:
- Entity Framework Core 2.2.3 is supported
- The SQL translation of the following method overloads, that accept the StringComparison argument and return bool, in the System.String class is supported in EF Core 2: Contains, StartsWith, EndsWith, Equals
- The bug with generating the COALESCE expression in EF Core is fixed
dotConnect for SQLite Professional 5.11.1328
- The sqlite3.dll library that is included into the installation package is updated to version 3.27.1
LinqConnect (formerly known as LINQ to SQLite):
- The bug with executing incorrect SQL request (cached during one of the previous calls), when .Contains() is invoked in the multithreaded application, is fixed
Entity Developer:
- The bug with generating fluent mapping for the one-to-one association by the DbContext template in EF4/EF5/EF6 is fixed
Entity Framework support:
- The translation of single-char literal into SQL statement in EF Core is supported
- The bug with throwing Devart.Common.LicenseException when using config.Workarounds.ProviderManifestToken in EF Core is fixed
- The bug with using a value converter for the property used in .Contains() in EF Core 2 is fixed
- The bug with translating String.IndexOf() into SQL statement in EF Core is fixed
- The bug with updating a null value of the concurrency check column with some non-null value in EF Core is fixed
dotConnect for Professional SQLite 5.11.1307
- The sqlite3.dll library that is included into the installation package is updated to version 3.26.0
- The bug with connecting to database with .NET Standard 1.3 compatible assemblies on .NET Framework 4.6.0 run-time is fixed
LinqConnect (formerly known as LINQ to SQLite):
- The new overload DataContext.Refresh(bool ignoreErrors, RefreshMode mode, object entity) is added for ignoring errors during refresh
- The existing overload DataContext.Refresh(RefreshMode mode, object entity) is improved: its check avoids the try to refresh the entity that is added to the context but not submitted to the database
- The type and text of the error generated by the DataContext.Refresh(RefreshMode mode, object entity) method, when the passed entity doesn't exist in database, is fixed
Entity Developer:
- The multiple select functionality in EF Core Model is improved: now it allows setting PrimaryKey, ValueGenerated, Concurrency for several properties simultaneously
- The bug with detecting order of columns in composite primary key with two or more columns by Update To Database and by Update From Database wizards in EF Core is fixed
- The bug with using ASP.NET Core Web Application (.NET Framework) and Azure Functions v1 (.NET Framework) projects in Visual Studio 2017 is fixed
Entity Framework support:
- Entity Framework Core 2.2.1 is supported
- The new extension method Database.IsSQLite() in EF Core 2 is implemented
- The bug with applying config.Workarounds.IgnoreSchemaName=true to the .ToTable() functionality in EF Core 2 is fixed
- The bugs with using the GuidToStringConverter, EnumToStringConverter, ValueConverter classes in EF Core 2 are fixed
- The bug with constructing the LIKE clause in EF Core 2 is fixed
- The bug with generating a subselect within the SELECT list in EF Core 2 is fixed
- The bug with applying an aggregate function to the result of a subselect in EF Core 2 is fixed
更新時間:2020-07-16
更新細節:
What's new in this version:
Rust 1.45.0
Language:
- Out of range float to int conversions using as has been defined as a saturating conversion. This was previously undefined behaviour, but you can use the {f64, f32}::to_int_unchecked methods to continue using the current behaviour, which may be desirable in rare performance sensitive situations.
- mem::Discriminant<T> now uses T's discriminant type instead of always using u64
- Function like procedural macros can now be used in expression, pattern, and statement positions. This means you can now use a function-like procedural macro anywhere you can use a declarative (macro_rules!) macro.
Compiler:
- You can now override individual target features through the target-feature flag. E.g. -C target-feature=+avx2 -C target-feature=+fma is now equivalent to -C target-feature=+avx2,+fma
- Added the force-unwind-tables flag. This option allows rustc to always generate unwind tables regardless of panic strategy
- Added the embed-bitcode flag. This codegen flag allows rustc to include LLVM bitcode into generated rlibs (this is on by default)
- Added the tiny value to the code-model codegen flag
- Added tier 3 support* for the mipsel-sony-psp target
- Added tier 3 support for the thumbv7a-uwp-windows-msvc target
- Refer to Rust's platform support page for more information on Rust's tiered platform support
Libraries:
- net::{SocketAddr, SocketAddrV4, SocketAddrV6} now implements PartialOrd and Ord
- proc_macro::TokenStream now implements Default
- You can now use char with ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo} to iterate over a range of codepoints. E.g. you can now write the following
- OsString now implements FromStr
- The saturating_neg method as been added to all signed integer primitive types, and the saturating_abs method has been added for all integer primitive types
- Arc<T>, Rc<T> now implement From<Cow<'_, T>>, and Box now implements From<Cow> when T is [T: Copy], str, CStr, OsStr, or Path
- Box<[T]> now implements From<[T; N]>
- BitOr and BitOrAssign are implemented for all NonZero integer types
- The fetch_min, and fetch_max methods have been added to all atomic integer types
- The fetch_update method has been added to all atomic integer types
Rust 1.44.1
- rustfmt accepts rustfmt_skip in cfg_attr again
- Don't hash executable filenames on apple platforms, fixing backtraces
- Fix crashes when finding backtrace on macOS
- Clippy applies lint levels into different files
Rust 1.44.0
Language:
- You can now use async/.await with #[no_std] enabled
- Added the unused_braces lint
Syntax-only changes:
- Expansion-driven outline module parsing
- These are still rejected semantically, so you will likely receive an error but these changes can be seen and parsed by macros and conditional compilation
Compiler:
- Rustc now respects the -C codegen-units flag in incremental mode. Additionally when in incremental mode rustc defaults to 256 codegen units
- Refactored catch_unwind, to have zero-cost unless unwinding is enabled and a panic is thrown
- Added tier 3* support for the aarch64-unknown-none and aarch64-unknown-none-softfloat targets
- Added tier 3 support for arm64-apple-tvos and x86_64-apple-tvos targets
Libraries:
- Special cased vec![] to map directly to Vec::new(). This allows vec![] to be able to be used in const contexts
- convert::Infallible now implements Hash
- OsString now implements DerefMut and IndexMut returning a &mut OsStr
- Unicode 13 is now supported
- String now implements From<&mut str>
- IoSlice now implements Copy
- Vec now implements From<[T; N]>. Where N is at most 32
- proc_macro::LexError now implements fmt::Display and Error
- from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes, and to_ne_bytes methods are now const for all integer types
Stabilized APIs:
- PathBuf::with_capacity
- PathBuf::capacity
- PathBuf::clear
- PathBuf::reserve
- PathBuf::reserve_exact
- PathBuf::shrink_to_fit
- f32::to_int_unchecked
- f64::to_int_unchecked
- Layout::align_to
- Layout::pad_to_align
- Layout::array
- Layout::extend
Cargo:
- Added the cargo tree command which will print a tree graph of your dependencies
- You can also display dependencies on multiple versions of the same crate with cargo tree -d (short for cargo tree --duplicates)
- Misc
- Rustdoc now allows you to specify --crate-version to have rustdoc include the version in the sidebar
Compatibility Notes:
- Rustc now correctly generates static libraries on Windows GNU targets with the .a extension, rather than the previous .lib
- Removed the -C no_integrated_as flag from rustc
- The file_name property in JSON output of macro errors now points the actual source file rather than the previous format of . Note: this may not point a file that actually exists on the user's system.
- The minimum required external LLVM version has been bumped to LLVM 8
- mem::{zeroed, uninitialised} will now panic when used with types that do not allow zero initialization such as NonZeroU8. This was previously a warning
- In 1.45.0 (the next release) converting a f64 to u32 using the as operator has been defined as a saturating operation. This was previously undefined behaviour, you can use the {f64, f32}::to_int_unchecked methods to continue using the current behaviour which may desirable in rare performance sensitive situations.
Internal Only:
- These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools
- dep_graph Avoid allocating a set on when the number reads are small
- Replace big JS dict with JSON parsing
Rust 1.43.1
- Updated openssl-src to 1.1.1g for CVE-2020-1967
- Fixed the stabilization of AVX-512 features
- Fixed cargo package --list not working with unpublished dependencies
Rust 1.43.0
Language:
- Fixed using binary operations with &{number} (e.g. &1.0) not having the type inferred correctly
- Attributes such as #[cfg()] can now be used on if expressions
Syntax only changes:
- Allow type Foo: Ord syntactically
- Fuse associated and extern items up to defaultness
- Syntactically allow self in all fn contexts
- Merge fn syntax + cleanup item parsing
- item macro fragments can be interpolated into traits, impls, and extern blocks
- These are still rejected semantically, so you will likely receive an error but these changes can be seen and parsed by macros and conditional compilation
Compiler:
- You can now pass multiple lint flags to rustc to override the previous flags. For example; rustc -D unused -A unused-variables denies everything in the unused lint group except unused-variables which is explicitly allowed. However, passing rustc -A unused-variables -D unused denies everything in the unused lint group including unused-variables since the allow flag is specified before the deny flag (and therefore overridden).
- rustc will now prefer your system MinGW libraries over its bundled libraries if they are available on windows-gnu
- rustc now buffers errors/warnings printed in JSON
Libraries:
- Arc<[T; N]>, Box<[T; N]>, and Rc<[T; N]>, now implement TryFrom<Arc<[T]>>,TryFrom<Box<[T]>>, and TryFrom<Rc<[T]>> respectively. Note These conversions are only available when N is 0..=32.
- You can now use associated constants on floats and integers directly, rather than having to import the module. e.g. You can now write u32::MAX or f32::NAN with no imports.
- u8::is_ascii is now const.
- String now implements AsMut.
- Added the primitive module to std and core. This module reexports Rust's primitive types. This is mainly useful in macros where you want avoid these types being shadowed.
- Relaxed some of the trait bounds on HashMap and HashSet.
- string::FromUtf8Error now implements Clone + Eq.
Stabilized APIs:
- Once::is_completed
- f32::LOG10_2
- f32::LOG2_10
- f64::LOG10_2
- f64::LOG2_10
- iter::once_with
Cargo:
- You can now set config [profile]s in your .cargo/config, or through your environment
- Cargo will now set CARGO_BIN_EXE_ pointing to a binary's executable path when running integration tests or benchmarks. is the name of your binary as-is e.g. If you wanted the executable path for a binary named my-programyou would use env!("CARGO_BIN_EXE_my-program").
Misc:
- Certain checks in the const_err lint were deemed unrelated to const evaluation, and have been moved to the unconditional_panic and arithmetic_overflow lints
Compatibility Notes:
- Having trailing syntax in the assert! macro is now a hard error. This has been a warning since 1.36.0
- Fixed Self not having the correctly inferred type. This incorrectly led to some instances being accepted, and now correctly emits a hard error
Internal Only:
- These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools.
- All components are now built with opt-level=3 instead of 2
- Improved how rustc generates drop code
- Improved performance from #[inline]-ing certain hot functions
- traits: preallocate 2 Vecs of known initial size
- Avoid exponential behaviour when relating types
- Skip Drop terminators for enum variants without drop glue
- Improve performance of coherence checks
- Deduplicate types in the generator witness
- Invert control in struct_lint_level
Rust 1.41.0
Language:
- You can now pass type parameters to foreign items when implementing traits. E.g. You can now write impl From for Vec {}
- You can now arbitrarily nest receiver types in the self position. E.g. you can now write fn foo(self: Box) {}. Previously only Self, &Self, &mut Self, Arc, Rc, and Box were allowed.
- You can now use any valid identifier in a format_args macro. Previously identifiers starting with an underscore were not allowed
- Visibility modifiers (e.g. pub) are now syntactically allowed on trait items and enum variants. These are still rejected semantically, but can be seen and parsed by procedural macros and conditional compilation
Compiler:
- Rustc will now warn if you have unused loop 'labels
- Removed support for the i686-unknown-dragonfly target
- Added tier 3 support* for the riscv64gc-unknown-linux-gnu target
You can now pass an arguments file passing the @path syntax to rustc. Note that the format differs somewhat from what is found in other tooling; - please see the documentation for more information
- You can now provide --extern flag without a path, indicating that it is available from the search path or specified with an -L flag
- Refer to Rust's platform support page for more information on Rust's tiered platform support
Libraries:
- The core::panic module is now stable. It was already stable through std
- NonZero* numerics now implement From<NonZero*> if it's a smaller integer width. E.g. NonZeroU16 now implements From
- MaybeUninit now implements fmt::Debug
Stabilized APIs:
- Result::map_or
- Result::map_or_else
- std::rc::Weak::weak_count
- std::rc::Weak::strong_count
- std::sync::Weak::weak_count
- std::sync::Weak::strong_count
Cargo:
- Cargo will now document all the private items for binary crates by default
- cargo-install will now reinstall the package if it detects that it is out of date
- Cargo.lock now uses a more git friendly format that should help to reduce merge conflicts
- You can now override specific dependencies's build settings E.g. [profile.dev.package.image] opt-level = 2 sets the image crate's optimisation level to 2 for debug builds. You can also use [profile..build-override] to override build scripts and their dependencies
Misc:
- You can now specify edition in documentation code blocks to compile the block for that edition. E.g. edition2018 tells rustdoc that the code sample should be compiled the 2018 edition of Rust
- You can now provide custom themes to rustdoc with --theme, and check the current theme with --check-theme
- You can use #[cfg(doc)] to compile an item when building documentation
Rust 1.40.0
Language:
- You can now use tuple structs and tuple enum variant's constructors in const contexts. e.g.
pub struct Point(i32, i32);
const ORIGIN: Point = {
let constructor = Point;
constructor(0, 0)
- You can now mark structs, enums, and enum variants with the #[non_exhaustive] attribute to indicate that there may be variants or fields added in the future. For example this requires adding a wild-card branch (_ => {}) to any match statements on a non-exhaustive enum. (RFC 2008)
- You can now use function-like procedural macros in extern blocks and in type positions. e.g. type Generated = macro!()
- Function-like and attribute procedural macros can now emit macro_rules! items, so you can now have your macros generate macros
- The meta pattern matcher in macro_rules! now correctly matches the modern attribute syntax. For example (#[$m:meta]) now matches #[attr], #[attr{tokens}], #[attr[tokens]], and #[attr(tokens)]
Compiler:
- Added tier 3 support* for the thumbv7neon-unknown-linux-musleabihf target
- Added tier 3 support for the aarch64-unknown-none-softfloat target
- Added tier 3 support for the mips64-unknown-linux-muslabi64, and mips64el-unknown-linux-muslabi64 targets
- Refer to Rust's platform support page for more information on Rust's tiered platform support
Libraries:
- The is_power_of_two method on unsigned numeric types is now a const function
Stabilized APIs:
- BTreeMap::get_key_value
- HashMap::get_key_value
- Option::as_deref_mut
- Option::as_deref
- Option::flatten
- UdpSocket::peer_addr
- f32::to_be_bytes
- f32::to_le_bytes
- f32::to_ne_bytes
- f64::to_be_bytes
- f64::to_le_bytes
- f64::to_ne_bytes
- f32::from_be_bytes
- f32::from_le_bytes
- f32::from_ne_bytes
- f64::from_be_bytes
- f64::from_le_bytes
- f64::from_ne_bytes
- mem::take
- slice::repeat
- todo!
Cargo:
- Cargo will now always display warnings, rather than only on fresh builds
- Feature flags (except --all-features) passed to a virtual workspace will now produce an error. Previously these flags were ignored
- You can now publish dev-dependencies without including a version.
Misc:
- You can now specify the #[cfg(doctest)] attribute to include an item only when running documentation tests with rustdoc
Compatibility Notes:
- As previously announced, any previous NLL warnings in the 2015 edition are now hard errors
- The include! macro will now warn if it failed to include the entire file. The include! macro unintentionally only includes the first expression in a file, and this can be unintuitive. This will become either a hard error in a future release, or the behavior may be fixed to include all expressions as expected.
- Using #[inline] on function prototypes and consts now emits a warning under unused_attribute lint. Using #[inline] anywhere else inside traits or extern blocks now correctly emits a hard error
Rust 1.39.0
Language:
- You can now create async functions and blocks with async fn, async move {}, and async {} respectively, and you can now call .await on async expressions.
- You can now use certain attributes on function, closure, and function pointer parameters. These attributes include cfg, cfg_attr, allow, warn, deny, forbid as well as inert helper attributes used by procedural macro attributes applied to items. e.g.
- fn len(
- #[cfg(windows)] slice: &[u16],
- #[cfg(not(windows))] slice: &[u8],
- ) -> usize {
- slice.len()
- You can now take shared references to bind-by-move patterns in the if guards of match arms. e.g.
- fn main() {
- let array: Box<[u8; 4]> = Box::new([1, 2, 3, 4]);
- match array {
- nums
- // ---- `nums` is bound by move.
- if nums.iter().sum::() == 10
- // ^------ `.iter()` implicitly takes a reference to `nums`.
- => {
- drop(nums);
- // ----------- Legal as `nums` was bound by move and so we have ownership.
- _ => unreachable!(),
Compiler:
- Added tier 3* support for the i686-unknown-uefi target
- Added tier 3 support for the sparc64-unknown-openbsd target
- rustc will now trim code snippets in diagnostics to fit in your terminal. Note Cargo currently doesn't use this feature. Refer to cargo#7315 to track this feature's progress
- You can now pass --show-output argument to test binaries to print the output of successful tests
- * Refer to Rust's platform support page for more information on Rust's tiered platform support
Libraries:
- Vec::new and String::new are now const functions
- LinkedList::new is now a const function
- str::len, [T]::len and str::as_bytes are now const functions
- The abs, wrapping_abs, and overflowing_abs numeric functions are now const
Stabilized APIs:
- Pin::into_inner
- Instant::checked_duration_since
- Instant::saturating_duration_since
Cargo:
- You can now publish git dependencies if supplied with a version
- The --all flag has been renamed to --workspace. Using --all is now deprecated
Misc:
- You can now pass -Clinker to rustdoc to control the linker used for compiling doctests
Compatibility Notes:
- Code that was previously accepted by the old borrow checker, but rejected by the NLL borrow checker is now a hard error in Rust 2018. This was previously a warning, and will also become a hard error in the Rust 2015 edition in the 1.40.0 release
- rustdoc now requires rustc to be installed and in the same directory to run tests. This should improve performance when running a large amount of doctests
- The try! macro will now issue a deprecation warning. It is recommended to use the ? operator instead
- asinh(-0.0) now correctly returns -0.0. Previously this returned 0.0
Rust 1.38.0
Language:
- The #[global_allocator] attribute can now be used in submodules
- The #[deprecated] attribute can now be used on macros
Compiler:
- Added pipelined compilation support to rustc. This will improve compilation times in some cases. For further information please refer to the "Evaluating pipelined rustc compilation" thread
- Added tier 3 support for the aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, and x86_64-uwp-windows-msvc targets
- Added tier 3 support for the armv7-unknown-linux-gnueabi and armv7-unknown-linux-musleabi targets
- Added tier 3 support for the hexagon-unknown-linux-musl target
- Added tier 3 support for the riscv32i-unknown-none-elf target
Libraries:
- ascii::EscapeDefault now implements Clone and Display
- Derive macros for prelude traits (e.g. Clone, Debug, Hash) are now available at the same path as the trait. (e.g. The Clone derive macro is available at std::clone::Clone). This also makes all built-in macros available in std/core root. e.g. std::include_bytes!
- str::Chars now implements Debug
- slice::{concat, connect, join} now accepts &[T] in addition to &T
- *const T and *mut T now implement marker::Unpin
- Arc<[T]> and Rc<[T]> now implement FromIterator.
- Added euclidean remainder and division operations (div_euclid, rem_euclid) to all numeric primitives. Additionally checked, overflowing, and wrapping versions are available for all integer primitives
- thread::AccessError now implements Clone, Copy, Eq, Error, and PartialEq
- iter::{StepBy, Peekable, Take} now implement DoubleEndedIterator
Stabilized APIs:
- <*const T>::cast
- <*mut T>::cast
- Duration::as_secs_f32
- Duration::as_secs_f64
- Duration::div_duration_f32
- Duration::div_duration_f64
- Duration::div_f32
- Duration::div_f64
- Duration::from_secs_f32
- Duration::from_secs_f64
- Duration::mul_f32
- Duration::mul_f64
- any::type_name
Cargo:
- Added pipelined compilation support to cargo
- You can now pass the --features option multiple times to enable multiple features
Misc:
- rustc will now warn about some incorrect uses of mem::{uninitialized, zeroed} that are known to cause undefined behaviour
Compatibility Notes:
- The x86_64-unknown-uefi platform can not be built with rustc 1.38.0
- The armv7-unknown-linux-gnueabihf platform is known to have issues with certain crates such as libc
Rust 1.37.0
Language:
- #[must_use] will now warn if the type is contained in a tuple, Box, or an array and unused.
- You can now use the cfg and cfg_attr attributes on generic parameters.
- You can now use enum variants through type alias. e.g. You can write the following:
- type MyOption = Option;
- fn increment_or_zero(x: MyOption) -> u8 {
- match x {
- MyOption::Some(y) => y + 1,
- MyOption::None => 0,
- You can now use _ as an identifier for consts. e.g. You can write const _: u32 = 5;.
- You can now use #[repr(align(X)] on enums.
- The ? Kleene macro operator is now available in the 2015 edition.
Compiler:
You can now enable Profile-Guided Optimization with the -C profile-generate and -C profile-use flags. For more information on how to use profile - guided optimization, please refer to the rustc book.
- The rust-lldb wrapper script should now work again.
Libraries:
- mem::MaybeUninit is now ABI-compatible with T.
- Stabilized APIs:
- BufReader::buffer
- BufWriter::buffer
- Cell::from_mut
- Cell<[T]>::as_slice_of_cells
- DoubleEndedIterator::nth_back
- Option::xor
- Wrapping::reverse_bits
- i128::reverse_bits
- i16::reverse_bits
- i32::reverse_bits
- i64::reverse_bits
- i8::reverse_bits
- isize::reverse_bits
- slice::copy_within
- u128::reverse_bits
- u16::reverse_bits
- u32::reverse_bits
- u64::reverse_bits
- u8::reverse_bits
- usize::reverse_bits
Cargo:
- Cargo.lock files are now included by default when publishing executable crates with executables.
- You can now specify default-run="foo" in [package] to specify the default executable to use for cargo run.