Skip to content

Releases: ArcadeData/arcadedb

24.1.1

05 Feb 19:59
Compare
Choose a tag to compare

Download your version

If you're using ArcadeDB embedded, you can just update your Maven or Gradle dependencies. To download this version, pick your distribution:

  • arcadedb-24.1.1.tar.gz (99.4MB): full version all included
  • arcadedb-minimal-24.1.1.tar.gz (56.2MB): only ArcadeDB libs and Server + Studio (no support for Gremlin, Cypher, MongoDB, Redis and GraphQL)
  • arcadedb-headless-24.1.1.tar.gz (48.9MB): like the minimal, but without studio

What's New

  • New: support method Database.getNestedTransactions() to return the depth level of current transaction. #1414
  • Less warnings for expensive scans #1432
  • Introduce a constructor in RID class that takes only a String rid #1421

Bugs fixed & Misc

  • NPE on using remote vertices toMap() #1413
  • When restarting ArcadeDB embedded server: Error on loading schema. The schema will be reset #1412
  • Default Properties Top Most Document not Populating in Vertex if a Document <--Extends-- Document <--Extends-- Vertex #1423
  • Match Vertex parent types #1403
  • Edge Creation with RID as input to Parameterized Query Not Working as Expected #1430
  • INSTANCEOF Operator not Behaving as Expected #1433
  • Edge Creation - Mandatory Property Values Supplied are Not Being Considered and Validation Error is Generated #1436
  • Edge Creation - Second Mandatory Property Value Not Being Taken #1437
  • For Inhertance Chain of Three Types if the Last Type is Dropped the Bucket of the First type Is Not Found #1438
  • RID as paramer is not recognized in TRAVERSE query for vertex as well as edge #1445
  • vertex.getEdges(OUT/IN, ...) Returns the same edge for out edges #1454
  • Receive ArrayIndexOutOfBoundsException when inserting to type with full text index with multiple properties defined. #1435

Dependencies Updated

  • build(deps-dev): bump org.assertj:assertj-core from 3.25.0 to 3.25.1 by @dependabot in #1416
  • build(deps): bump org.apache.maven.plugins:maven-failsafe-plugin from 3.2.3 to 3.2.5 by @dependabot in #1425
  • build(deps-dev): bump org.apache.tomcat:tomcat-jdbc from 10.1.17 to 10.1.18 by @dependabot in #1428
  • build(deps): bump slf4j.version from 2.0.10 to 2.0.11 by @dependabot in #1427
  • build(deps): bump org.mockito:mockito-core from 5.8.0 to 5.9.0 by @dependabot in #1426
  • build(deps): bump org.apache.maven.plugins:maven-surefire-plugin from 3.2.3 to 3.2.5 by @dependabot in #1424
  • build(deps): bump mockito-core.version from 5.8.0 to 5.9.0 by @dependabot in #1442
  • build(deps-dev): bump org.assertj:assertj-core from 3.25.1 to 3.25.3 by @dependabot in #1452
  • build(deps): bump jline.version from 3.25.0 to 3.25.1 by @dependabot in #1448
  • build(deps-dev): bump testcontainers.version from 1.19.3 to 1.19.4 by @dependabot in #1450
  • build(deps): bump org.mockito:mockito-core from 5.9.0 to 5.10.0 by @dependabot in #1447
  • build(deps): bump junit.jupiter.version from 5.10.1 to 5.10.2 by @dependabot in #1453

Full Changelog: 23.12.2...24.1.1

23.12.2

05 Jan 22:56
Compare
Choose a tag to compare

This release is identical to 23.12.1: https://github.com/ArcadeData/arcadedb/releases/tag/23.12.1

Version 23.12.1 wasn't published to Maven Central because there was an outage at that time, then resolved by Sonatype in a few hours. After that, seems like Sonatype has mixed up the jars and doesn't allow us to proceed with the release, because it's registered as already released, but there are no jars online...

23.12.1

03 Jan 15:54
Compare
Choose a tag to compare

Download your version

If you're using ArcadeDB embedded, you can just update your Maven or Gradle dependencies. To download this version, pick your distribution:

  • arcadedb-23.12.1.tar.gz (99.4MB): full version all included
  • arcadedb-minimal-23.12.1.tar.gz (56.2MB): only ArcadeDB libs and Server + Studio (no support for Gremlin, Cypher, MongoDB, Redis and GraphQL)
  • arcadedb-headless-23.12.1.tar.gz (48.9MB): like the minimal, but without studio

What's New

  • Improved Studio Web Tool design #1393
  • New database pool support for ArcadeGraph Gremlin instances #1370
  • New console.log() command available in SQL Scripts #1377
  • Added server setting for providing root password by @gramian in #1392
  • New probeOnly setting for importer and import database by @gramian in #1401
  • New RemoteServer and Console create-user to assign group by @gramian in #1405

Performance Improvements

  • Performance: speeded up remote gremlin traversal #1373
  • Performance: speeded up gremlin count() step by using ArcadeDB fast counting #1372
  • Use StringBuilder instead of String in RemoteVertex by @gramian in #1374
    arcadedb/pull/1375

Bugs fixed & Misc

  • ArcadeDB Studio java.lang.ArrayIndexOutOfBoundsException #1165
  • Database locks up with ArrayIndexOutOfBoundsException (cannot switch between databases) #1341
  • Restore command cannot open file #1384
  • SQL drop bucket command #1383
  • Type inheritance and property constraints #1368
  • Warnings in GlobalConfiguration by @gramian in #1379
  • Removed useless object in class InCondition by @gramian in #1378
  • Added pwd command to console help by @gramian in #1404
  • Error using HTTP POST query with sqlscript #1357

Dependencies Updated

  • build(deps): bump slf4j.version from 2.0.9 to 2.0.10 by @dependabot in #1408
  • build(deps-dev): bump org.assertj:assertj-core from 3.24.2 to 3.25.0 by @dependabot in #1407
  • build(deps): bump org.mockito:mockito-core from 5.7.0 to 5.8.0 by @dependabot in #1364
  • build(deps): bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.2 to 3.6.3 by @dependabot in #1363
  • build(deps-dev): bump ch.qos.logback:logback-classic from 1.4.13 to 1.4.14 by @dependabot in #1362
  • build(deps): bump mockito-core.version from 5.7.0 to 5.8.0 by @dependabot in #1361
  • build(deps): bump actions/setup-python from 4 to 5 by @dependabot in #1376
  • build(deps): bump org.postgresql:postgresql from 42.7.0 to 42.7.1 by @dependabot in https://github.com/ArcadeData/
  • build(deps): bump github/codeql-action from 2 to 3 by @dependabot in #1389
  • build(deps): bump io.netty:netty-transport from 4.1.101.Final to 4.1.104.Final by @dependabot in #1388
  • build(deps): bump org.apache.maven.plugins:maven-failsafe-plugin from 3.2.2 to 3.2.3 by @dependabot in #1387
  • build(deps-dev): bump org.apache.tomcat:tomcat-jdbc from 10.1.16 to 10.1.17 by @dependabot in #1385
  • build(deps): bump org.apache.maven.plugins:maven-surefire-plugin from 3.2.2 to 3.2.3 by @dependabot in #1386
  • build(deps): bump org.apache.maven.plugins:maven-compiler-plugin from 3.11.0 to 3.12.1 by @dependabot in #1400
  • build(deps): bump jline.version from 3.24.1 to 3.25.0 by @dependabot in #1399

Full Changelog: 23.11.1...23.12.1

23.11.1

30 Nov 04:45
Compare
Choose a tag to compare

What's New

  • New: parallel query execution with native select #1296
  • Provide remote support for ArcadeGraph (Gremlin interface) #1329
  • Refactoring of RemoteDatabase Java API, added new RemoteServer interface #1327
  • Support schema in RemoteDatabase Java API #1311
  • Support for awaitResponse for HTTP command by @gramian in #1323 and #1326
  • New minimal and headless distributions by @robfrank in #1279 and #1280
  • Performance improvement by using batch reads while iterating buckets #1307

Bugs fixed

  • SQL: Error when comparing two empty strings #1297
  • SQL: implicit narrowing conversion in compound assignment by @gramian in #1344
  • Postgres driver: PostgresProtocolPlugin not supporting Datasource Pooling #1325
  • Postgres driver: fix python test code names that conflicts with library modules by @LLuke in #1342
  • Postgres driver: Fix #97 by @LLuke in #1333
  • Gremlin: GremlinServerPlugin/ArcadeDB Server fails to start when referencing the same database folder with different file paths #1345
  • Gremlin: GremlinServer Can't start without an error #1265
  • Neo4j importer: Import multi-label vertices using neo4jImporter does not work properly #1340
  • HTTP API: Make abstract HTTP handler set auth challenge by @gramian in #1310
  • Index: issue after update with compose index before compaction #1233
  • Engine: use normalized file paths to identify database folders (#1345) by @dominik-bergen-fnt in #1352
  • Misc: very noisy output with warnings from jline 3.24.0 #1331
  • Misc: added english locale to case conversions by @gramian in #1295
  • Misc: removed environment variable definition from Dockerfiles by @gramian in #1343 and #1332
  • Misc: removed runtime option from compiler args in main pom by @gramian in #1314
  • Tests: fixed authentication integration tests by @gramian in #1321
  • Tests: fixed filename of IT by @gramian in #1330
  • Tests: fixed console test by @gramian in #1347
  • Tests: added test for two empty strings in binary comparator by @gramian in #1298
  • Devops: updated pre-commit hook versions by @robfrank in #1294
  • Devops: fixed assembly of docker images by @robfrank in #1356
  • Devops: updated github CI workflow by @gramian in #1353

Dependencies Updated

  • build(deps): bump jline-terminal.version from 3.24.0 to 3.24.1 by @dependabot in #1306
  • build(deps): bump org.mockito:mockito-core from 5.5.0 to 5.7.0 by @dependabot in #1305
  • build(deps): bump junit.jupiter.version from 5.10.0 to 5.10.1 by @dependabot in #1304
  • build(deps): bump mockito-core.version from 5.5.0 to 5.7.0 by @dependabot in #1303
  • [Snyk] Upgrade org.graalvm.sdk:graal-sdk from 22.3.3 to 22.3.4 by @arcade-player in #1313
  • build(deps): bump org.apache.maven.plugins:maven-javadoc-plugin from 3.6.0 to 3.6.2 by @dependabot in #1320
  • build(deps): bump org.apache.maven.plugins:maven-failsafe-plugin from 3.2.1 to 3.2.2 by @dependabot in #1319
  • build(deps): bump org.apache.maven.plugins:maven-surefire-plugin from 3.2.1 to 3.2.2 by @dependabot in #1318
  • build(deps): bump io.netty:netty-transport from 4.1.86.Final to 4.1.101.Final by @dependabot in #1317
  • build(deps): bump org.codehaus.mojo:versions-maven-plugin from 2.16.1 to 2.16.2 by @dependabot in #1335
  • build(deps-dev): bump testcontainers.version from 1.19.1 to 1.19.2 by @dependabot in #1334
  • build(deps-dev): bump org.apache.tomcat:tomcat-jdbc from 10.0.27 to 10.1.16 by @dependabot in #1336
  • build(deps): bump org.postgresql:postgresql from 42.6.0 to 42.7.0 by @dependabot in #1349
  • build(deps-dev): bump testcontainers.version from 1.19.2 to 1.19.3 by @dependabot in #1348
  • build(deps): bump MeterianHQ/meterian-github-action from 1.0.16 to 1.0.17 by @dependabot in #1351
  • build(deps): bump actions/setup-java from 3 to 4 by @dependabot in #1355
  • build(deps-dev): bump ch.qos.logback:logback-classic from 1.4.11 to 1.4.13 by @dependabot in #1354

New Contributors

Full Changelog: 23.10.1...23.11.1

23.10.1

01 Nov 03:04
47e2c31
Compare
Choose a tag to compare

What's New

  • High Availability: new Read Only Replica - Feature Request #1208 and #1276
  • SQL: Add Method "Capitalize" by @gramian in #1264
  • SQL: INSERT multiple JSON CONTENTs at once #1257
  • Java API: Native select to execute sql-like queries from Java by @lvca in #1276
  • Studio: Minor update by @gramian in #1258
  • Studio: Server Stats Auto Refresh - Feature Requests #1248
  • Improve integration tests by @gramian in #1289
  • Some static code analysis results by @gramian in #1290

Bug fixed

  • Replication Hangs in Kubernetes and Docker #1219
  • HA: issue with resync of a replica when journal is not available #1286
  • Cannot drop full-text index #1288
  • PageManager eviction strategy does not remove oldest pages first #1287
  • HTTP/JSON limit parameter bug #1277
  • Creating index with IF NOT EXISTS doesn't work via HTTP #1192
  • Cypher - string concatenation not supported #618

Dependencies Updated

  • build(deps): bump jline-terminal.version from 3.23.0 to 3.24.0 by @dependabot in #1293
  • build(deps): bump org.apache.maven.plugins:maven-surefire-plugin from 3.1.2 to 3.2.1 by @dependabot in #1291
  • build(deps): bump org.apache.maven.plugins:maven-failsafe-plugin from 3.1.2 to 3.2.1 by @dependabot in #1292
  • build(deps): bump io.undertow:undertow-core from 2.3.8.Final to 2.3.9.Final by @dependabot in #1273
  • build(deps-dev): bump testcontainers.version from 1.19.0 to 1.19.1 by @dependabot in #1268
  • build(deps): bump docker/setup-buildx-action from 2 to 3 by @dependabot in #1242
  • build(deps): bump docker/login-action from 2 to 3 by @dependabot in #1243
  • build(deps): bump docker/setup-qemu-action from 2 to 3 by @dependabot in #1244
  • build(deps): bump com.mycila:license-maven-plugin from 4.2 to 4.3 by @dependabot in #1261
  • build(deps): bump org.jacoco:jacoco-maven-plugin from 0.8.10 to 0.8.11 by @dependabot in #1283
  • build(deps): bump io.undertow:undertow-core from 2.3.9.Final to 2.3.10.Final by @dependabot in #1281
  • build(deps): bump MeterianHQ/meterian-github-action from 1.0.15 to 1.0.16 by @dependabot in #1263

Full Changelog: 23.9.1...23.10.1

23.9.1

27 Sep 01:56
Compare
Choose a tag to compare

What's New

  • SQL

    • New Unidirectional Edges in SQL (Feature Request) #1217
    • Error on creating an edge on a specific bucket #1246
  • Java API

    • Java API: newEdge() on an immutable vertex can cause problems with common patterns #1218 and #1255
    • EmbeddedDatabase#drop 30x latency regression between 23.5.1 and 23.6.1 #1234
    • Provide default values for the time fields of a date. by @docbacardi in #1256
    • Creating date objects with the date() function #1232 by @docbacardi in #1256
    • Fix warnings by casting to Object[] by @gramian in #1247
    • Cannot drop index because one or more underlying files are not available #1216
  • Gremlin

    • Support for Gremlin 3.7.0 by @lvca in #1209
    • Gremlin doesn't work with Java 16+ #17
  • Vector Embeddings

    • Fixed rebuild of index
    • Fixed removing of keys
  • HTTP

  • Mongo

    • (NODEJS) MongoClient close method seems to be closing the database instead of just closing the client connection #1225
  • Misc

    • Error connecting with gdotv #1211

Dependencies Updated

  • build(deps): bump io.undertow:undertow-core from 2.3.7.Final to 2.3.8.Final by @dependabot in #1213
  • build(deps-dev): bump testcontainers.version from 1.18.3 to 1.19.0 by @dependabot in #1222
  • build(deps-dev): bump org.mockito:mockito-core from 5.4.0 to 5.5.0 by @dependabot in #1221
  • build(deps): bump org.yaml:snakeyaml from 2.0 to 2.2 by @dependabot in #1224
  • build(deps): bump slf4j.version from 2.0.7 to 2.0.9 by @dependabot in #1228
  • build(deps): bump org.apache.maven.plugins:maven-javadoc-plugin from 3.5.0 to 3.6.0 by @dependabot in #1240
  • build(deps): bump actions/checkout from 3 to 4 by @dependabot in #1238
  • build(deps): bump io.fabric8:docker-maven-plugin from 0.43.0 to 0.43.4 by @dependabot in #1214
  • build(deps): bump junit.jupiter.version from 5.9.3 to 5.10.0 by @dependabot in #1184
  • build(deps): bump mongo-java-server from 1.41.0 to 1.44.0 by @dependabot in #1149
  • build(deps): bump org.apache.maven.plugins:maven-shade-plugin from 3.5.0 to 3.5.1 by @dependabot in #1253
  • build(deps): bump org.codehaus.mojo:versions-maven-plugin from 2.16.0 to 2.16.1 by @dependabot in #1254

New Contributors

Full Changelog: 23.7.1...23.9.1

23.7.1

14 Aug 22:44
Compare
Choose a tag to compare

What's New

  • Vector Embeddings

    • Support for Vector API from Gremlin #1181
  • Engine

    • Speedup count of records #1182
    • Constraints for edges #1174
    • Support for before/after read of record events #1175
  • SQL

    • New SQL method asRecord() to return a record from an identifiable object (RID) #1170
  • Studio

What We Fixed

  • Fail to replicate after creation of a new database in Leader #1207
  • Postgres driver does not return metadata such as @Rid and @type #1173
  • When showing the schema in Studio, labels with ':' aren't shown #1169
  • ArcadeDB Studio java.lang.ArrayIndexOutOfBoundsException #1165
  • Vector: Server hangs after vector import and restart #1162
  • Ensure distance functions have only first letter in upper case #1160

Misc

Dependencies Updated

  • [Snyk] Fix for 6 vulnerabilities by @arcade-player in #1178
  • build(deps): bump MeterianHQ/meterian-github-action from 1.0.13 to 1.0.15 by @dependabot in #1197
  • build(deps-dev): bump ch.qos.logback:logback-classic from 1.4.8 to 1.4.11 by @dependabot in #1205

Full Changelog: 23.6.1...23.7.1

23.6.1

05 Jul 04:02
Compare
Choose a tag to compare

What's New

  • Vector Model

    • New Vector Model to manage embeddings - implementation preview by @lvca in #1148
  • Gremlin

    • Support Query Profiler for Gremlin (and Cypher) #1128
  • Studio

    • Display all property features under schema panel #1153
    • New Server Errors/Warnings panel #1134
    • New Summary dashboard in Server Tab #1130
    • Highlight the text to execute

What We Fixed

  • SQL

    • Order by on an indexed property does not work anymore after the sequence of insert -> delete -> insert #1152
    • Executing a query with a condition on an embedded object results in an error unless detailed profiling is enabled. #1117
    • LSMTreeIndexAbstract throws NPE during the select after the update of an indexed property #1127
    • Nested Projection * wildcard does not include metadata #1131
    • Composite Index corrupted after UPDATE #1113
  • Operations

    • OrientDB Importer doesn't save the correct inheritance tree #1132
    • OrientDB Importer requires too much RAM to run #1142
    • SQL IMPORT DATABASE fails for CSV #1061
    • SQL EXPORT DATABASE only works from the console, not via HTTP API #649
  • Java API

    • Index creation hinders async record creation #310
  • Gremlin

    • GremlinServer DatabaseOperationException: Found active instance of database './databases/graph' already in use #1107
    • Gremlin "group" and "groupCount" only work with strings. #1116

Dependencies Updated

  • build(deps): bump versions-maven-plugin from 2.15.0 to 2.16.0 by @dependabot in #1123
  • build(deps): bump undertow-core from 2.3.6.Final to 2.3.7.Final by @dependabot in #1122
  • build(deps): bump maven-failsafe-plugin from 3.1.0 to 3.1.2 by @dependabot in #1120
  • build(deps): bump maven-surefire-plugin from 3.1.0 to 3.1.2 by @dependabot in #1119
  • build(deps-dev): bump logback-classic from 1.4.7 to 1.4.8 by @dependabot in #1139
  • build(deps-dev): bump mockito-core from 5.3.1 to 5.4.0 by @dependabot in #1141
  • build(deps): bump maven-shade-plugin from 3.4.1 to 3.5.0 by @dependabot in #1140
  • build(deps): bump graalvm.version from 22.3.2 to 23.0.0 by @dependabot in #1137

Full Changelog: 23.5.1...23.6.1

23.5.1

09 Jun 01:09
Compare
Choose a tag to compare

What's New

  • Docker

    • Native Docker Image for Apple Silicon #894
  • Java API

    • Refactoring of schema API to create new types by using Builders intefaces #1102

What We Fixed

  • SQL

    • Error with adding edges on the same vertex from multiple threads on a replica server by using SQL Script #1114
    • COMMIT with RETRY does not work #1097
    • Cannot INSERT into Type.LINK a rid value returned from a nested SELECT #1096
    • Average difference between datetime values is always NULL #1103
    • INSERTing null into full-text indexed properties causes null-pointer exception error #1063
    • Inserting multiple records in a transaction with ThreadBucketSelectionStrategy causes LSMTreeIndexCursor to throw java.util.NoSuchElementException during SELECT #1079
    • BACKUP DATABASE default backup directory missing? #1069
    • Update SQLFunctionDuration.java (Fix typo) by @gramian in #1087
    • Refactor SQL Functions and Methods Trees by @gramian in #1084
  • Operations

    • Database backup command no longer works after 23.5.1 update #1115
  • Java API

    • Error on creation of new edge with remote database API (NullPointerException) #1068
  • Misc

Dependencies Updated

  • [Snyk] Upgrade io.netty:netty-transport from 4.1.86.Final to 4.1.92.Final by @arcade-player in #1082
  • [Snyk] Security upgrade io.undertow:undertow-core from 2.3.5.Final to 2.3.6.Final by @arcade-player in #1083
  • build(deps-dev): bump testcontainers.version from 1.18.0 to 1.18.1 by @dependabot in #1077
  • build(deps): bump docker-maven-plugin from 0.42.1 to 0.43.0 by @dependabot in #1092
  • build(deps): bump maven-failsafe-plugin from 3.0.0 to 3.1.0 by @dependabot in #1072
  • build(deps): bump maven-gpg-plugin from 3.0.1 to 3.1.0 by @dependabot in #1073
  • build(deps): bump maven-assembly-plugin from 3.5.0 to 3.6.0 by @dependabot in #1090
  • build(deps): bump maven-source-plugin from 3.2.1 to 3.3.0 by @dependabot in #1091
  • build(deps): bump maven-surefire-plugin from 3.0.0 to 3.1.0 by @dependabot in #1074
  • build(deps-dev): bump testcontainers.version from 1.18.1 to 1.18.3 by @dependabot in #1112
  • build(deps): bump metrics.version from 4.2.18 to 4.2.19 by @dependabot in #1111
  • build(deps): bump undertow-core from 2.3.5.Final to 2.3.6.Final by @dependabot in #1093

Full Changelog: 23.4.1...23.5.1

23.4.1

03 May 20:39
Compare
Choose a tag to compare

What's New

  • SQL

  • Engine

    • Configurable tx isolation level in #1008
  • Gremlin

    • Support embedded documents in Gremlin #1044
    • Support for buckets with Gremlin #1041
  • Studio

  • Misc

What We Fixed

  • SQL

    • Boolean operators with null argument #895
    • ORDER BY alters result type (in sub-query) #1046
    • Default constraint for STRING and DATETIME #905
    • Methods called on expand() return values are ignored #1004
  • Misc

    • GlobalConfiguration.DATE_TIME_FORMAT incompatible with GlobalConfiguration.DATE_TIME_IMPLEMENTATION #1050

Deprecated

  • HTTP /databases API. Use /server using list databases as payload instead.

Dependencies Updated

  • build(deps-dev): bump mockito-core from 5.2.0 to 5.3.1 by @dependabot in #1053
  • build(deps-dev): bump logback-classic from 1.4.6 to 1.4.7 by @dependabot in #1052
  • build(deps): bump graalvm.version from 22.3.1 to 22.3.2 by @dependabot in #1051
  • build(deps-dev): bump testcontainers.version from 1.17.6 to 1.18.0 by @dependabot in #1020
  • build(deps-dev): bump mongo-java-driver from 3.12.12 to 3.12.13 by @dependabot in #1022
  • build(deps): bump undertow-core from 2.3.4.Final to 2.3.5.Final by @dependabot in #977
  • build(deps): bump MeterianHQ/meterian-github-action from 1.0.12 to 1.0.13 by @dependabot in #1025
  • build(deps): bump kubernetes-maven-plugin from 1.11.0 to 1.12.0 by @dependabot in #1024
  • build(deps): bump jacoco-maven-plugin from 0.8.8 to 0.8.9 by @dependabot in #1021
  • build(deps): bump jacoco-maven-plugin from 0.8.9 to 0.8.10 by @dependabot in #1059
  • build(deps): bump junit.jupiter.version from 5.9.2 to 5.9.3 by @dependabot in #1058

Full Changelog: 23.3.1...23.4.1